Exercícios Resolvidos de Cálculo Numérico
Classificado em Matemática
Escrito em em português com um tamanho de 14,82 KB
Prova A - Área 1
Questão 1 (2.5 pontos)
Considere a função
F(x, y) = e(x2+y−2) + x2ln(y)
a) (0.9) Suponha que x = 1 ± 10% e y = 0,2 ± 10%. Calcule F e a incerteza relativa associada.
b) (0.9) Suponha que x = 5 ± 10% e y = 0,7 ± 10%. Calcule F e a incerteza relativa associada.
c) (0.7) Se você tivesse que diminuir a incerteza relativa de F pela metade e pudesse melhorar a medida de apenas uma das variáveis, qual delas você escolheria? Explique por quê? Analise cada um dos itens a) e b).
Resolução:
//Questão 1 da prova do Grupo 1 - 2014-2 - Turma A Cálculo Numérico // Prof. Jean Carlo Pech de Moraes // Definindo a função e suas derivadas deff('z=dF_x(x,y)','z=2*x*exp(x^2+y-2)+2*x*log(y)') deff('z=F(x,y)','z=exp(x^2+y-2)+x^2*log(y)') deff('z=dF_y(x,y)','z=exp(x^2+y-2)+x^2/y') //Item a) //Avaliando no ponto (1,0.2) A1=F(1,0.2) A2=dF_x(1,0.2) A3=dF_y(1,0.2) //Calculando os erros Erroa=abs(A2)*0.1+abs(A3)*0.02 Erro_rela=Erroa/abs(A1) //////////////////////////////////////////////////////////////////////////// //Item b) //Avaliando no ponto (5,0.7) A4=F(5,0.7) A5=dF_x(5,0.7) A6=dF_y(5,0.7) //Calculando os erros Errob=abs(A5)*0.5+abs(A6)*0.07 Erro_relb=Errob/abs(A4) /////////////////////////////////////////////////////////////////////////// //Imprimindo os resultados mprintf('F(1,0.2)=%f \n Dfx=%f \n Dfy=%f \n Erro=%f \n Erro_rel=%f \n \n',A1, A2,A3,Erroa,Erro_rela) mprintf('F(5,0.7)=%f \n Dfx=%f \n Dfy=%f \n Erro=%f \n Erro_rel=%f \n',A4,A5,A6,Errob,Erro_relb)
Questão 2 (3.0 pontos)
Considere o problema de calcular os pontos fixos da função
Φ(x) = e(x2/5 −1)
a) (0.5) Estime graficamente os dois pontos fixos da função.
b) (1.0) Use o teorema do ponto fixo para classificar quanto à estabilidade cada um dos pontos fixos.
c) (1.5) Calcule cada um dos pontos fixos com precisão de 5 × 10-6 (Dica: Use outro método numérico no ponto fixo instável).
Resolução:
//Questão 2 da prova do Grupo 1 - 2014-2 - Turma A Cálculo Numérico // Prof. Jean Carlo Pech de Moraes //Item a) deff('y=phi(x)','y=exp(x^2/5-1)') x=[-4:0.05:4] plot(x,phi(x),x,x); xgrid(2) //Os pontos fixos são aproximadamente 0.4 e 3.3. //Item b //definindo a derivada da phi deff('y=dphi(x)','y=2*x*exp(x^2/5-1)') // use a derivada definida acima para verificar que a derivada de phi é maior do que 1 para todo x no intervalo //[3,3.5] e menor que 1 para todo x no intervalo //[0.3, 0.5]. Portanto o ponto fixo perto de 0.4 é estável e o ponto fixo perto de 3.5 é instável. //Item c) //Calculando as raízes usando o método das secantes (pois não precisamos ) //Para usar o método da secante para calcular ponto fixos de f precisamos definir a função h(x)=phi(x)-x deff('y=h(x)','y=phi(x)-x') x1=pontofixo(phi,0.3,0.00001,50); x2=secante(h,3,3.5,0.00001,50); //Imprimindo os resulatdos mprintf('\n \n Os pontos fixos são: %f e %f.',x1,x2) //O programa responderá "Os pontos fixos são: 0.378577 e 3.315598."
Questão 3 (2.5 pontos)
Calcule o retângulo de menor área que tem lados paralelos aos eixos coordenados, um vértice na origem e outro vértice sobre a curva
y = 1/(x − 1) − (x − 5)e(−x+3) + 1, x > 1
Resolução:
//Questão 3 da prova do Grupo 1 - 2014-2 - Turma A Cálculo Numérico // Prof. Jean Carlo Pech de Moraes //Definindo a função e sua derivada deff('y=A(x)','y=(1 ./(x-1)-(x-5).*exp(-x+3)+1).*x') deff('y=dA(x)','y=(-1 ./(x-1).^2+(x-5).*exp(-x+3)-exp(-x+3)).*x+(1 ./(x-1)-(x-5).*exp(-x+3)+1)') //Plotando o gráfico no intervalo [3,9], vocês podem plotar primeiro no intervalo [1.1,9] e verificar que o mínimo está //após o 3 e arrumar a janela para o intervalo [3,9] para ficar mais fácil de visualizar o ponto de mínimo. x=[3:0.1:9] plot(x,A(x),x,dA(x)); xgrid // Observando o gráfico da derivada podemos estimar que a raiz é aproximadamente 4.7. //Calculando o mínimo (a raiz da derivada) x1=bissec(dA,4,6,0.000001) A1=A(x1); //Imprimindo os resultados mprintf('\n \n O ponto de mínimo relativo é aproximadamente %f e a área mínima é aproximadamente %f',x1,A1) // O programa vai responder "O ponto de mínimo relativo é aproximadamente 4.791602 e a área mínima é aproximadamente 6.221796".
Questão 4 (2.5 pontos)
Considere a função f(x) = e−x + sen(10x)/10 , x > 0.
a) Encontre os dois primeiros máximos relativos positivos de f usando o método de Newton. Escreva a iteração do método de Newton.
b) Encontre os dois primeiros mínimos relativos positivos de f usando o método das secantes. Escreva a iteração do método das secantes
Resolução:
//Questão 4 da prova do Grupo 1 - 2014-2 - Turma A Cálculo Numérico // Prof. Jean Carlo Pech de Moraes //Definindo a função e esboçando o gráfico de f deff('y=f(x)','y=exp(-x)+sin(10*x)/10') x=[0:0.05:5] plot(x,f(x)); xgrid // Observando o gráfico podemos estimar que os pontos de máximo são 0.7 e 1.3 e os de mínimo são 0.5 e 1.1. //Para encontrar os pontos de extremo relativo precisamos procurar pelas raízes da derivada da função. Vamos, então, definir a derivada. deff('y=df(x)','y=-exp(-x)+cos(10*x)') //Item a) //definindo a segunda derivada (derivada da função que buscamos as raízes) para podermos usar Newton. deff('y=ddf(x)','y=exp(-x)+10*sin(10*x)') max_1=newton(df,ddf,1.6,5*10^(-5),50) max_2=newton(df,ddf,1.35,5*10^(-5),50) // O método de Newton não converge para os pontos de máximo. Vamos usar bisseção max_1=bissec(df,0.55,0.8,5*10^(-5)) max_2=bissec(df,1.2,1.5,5*10^(-5)) //Item b) //Calculando os mínimos min_1=secante(df,0.3,0.6,5*10^(-5),50); min_2=secante(df,1,1.2,5*10^(-5),50); //Imprimindo os resultados mprintf('\n \n Os dois primeiros pontos de máximo relativo positivos são x1=%f e x2=%f \n e os primeiros pontos de mínimo relativo positivos são x3=%f e x4=%f',max_1,max_2,min_1,min_2) // O programa vai responder "Os dois primeiros pontos de máximo relativo positivos são x1=0.735417 e x2=1.388503 e os primeiros pontos de mínimo relativo positivos são x3=0.533890 e x4=1.132370 ".
Prova B - Área 1
Questão 1 (2.5 pontos)
Resolva cada item
a) (1.5) Sabendo que x = 2 ± 2%, y = 10 ± 20% e F(x, y) = (2x + y)/(y2+ 11)e−x , calcule o valor de F(x, y) e seu respectivo erro relativo.
b) (1.0) Calcule quantos dígitos binários são necessários para escrever o número (9876543210)11 na base 2.
Resolução:
//Questão 1 da prova do Grupo 2 - 2014-2 - Turma A Cálculo Numérico // Prof. Jean Carlo Pech de Moraes //Item a) // Definindo a função e suas derivadas deff('z=F(x,y)','z=(2*x+y)*exp(-x)/(y^2+11)') deff('z=dF_x(x,y)','z=(2-2*x-y)*exp(-x)/(y^2+11)') deff('z=dF_y(x,y)','z=(-4*x*y-y^2+11)*exp(-x)/(y^2+11)^2') //Avaliando no ponto (2,10) A1=F(2,10) A2=dF_x(2,10) A3=dF_y(2,10) //Calculando os erros Erro=abs(A2)*0.04+abs(A3)*2 Erro_rel=Erro/A1 //Imprimindo os resultados mprintf('a) F(2,10)=%f e o erro relativo associado é %f.\n\n',A1,Erro_rel) //Item b) N=ceil(log2(9*11^9+8*11^8+7*11^7+6*11^6+5*11^5+4*11^4+3*11^3+2*11^2+12)) //Imprimindo o resultado mprintf('b) São necessários %d dígitos.',N)
Questão 2 (3.0 pontos)
Considere a função
f(x) = (1 − x2)e(−x2) − e(−x−2)
a) (0.6) Estime graficamente as raízes da função f(x).
b) (1.2) Use o método de Newton com x0 = 3 e discuta sobre a convergência. Interprete geometricamente o fenômeno.
c) (1.2) Calcule as duas raízes com precisão de 5 × 10-5
Resolução:
//Questão 2 da prova do Grupo 2 - 2014-2 - Turma A Cálculo Numérico // Prof. Jean Carlo Pech de Moraes //Item a) deff('y=f(x)','y=(1-x.^2).*exp(-x.^2)-exp(-x-2)') x=[-2:0.1:4] plot(x,f(x)); xgrid // Observando o gráfico podemos estimar que uma das raízes é aproximadamente -0,75 e a outra aproximadamente 1. //Item b) deff('y=der_f(x)','y=(-4*x+2*x.^3).*exp(-x.^2)+exp(-x-2)') newton(f,der_f,3,5*10^(-5),50) // O método diverge, a reta tangente de f(x) em x=3 é quase paralela, ou seja, tem coeficiente angular muito próximo de //zero (olhe a fórmula do método iterativo de Newton se você não sabe qual o impacto da derivada no ponto ser muito próximo de zero) //Item c) x1=newton(f,der_f,-1,5*10^(-5),50); x2=newton(f,der_f,1,5*10^(-5),50); //Imprimindo os resultados mprintf('\n \n A primeira raiz é aproximadamente %f e a segunda é aproximadamente %f',x1,x2) // O programa vai responder "A primeira raiz é aproximadamente -0.725656 e a segunda é aproximadamente 0.934202".
Questão 3 (2.0 pontos)
Calcule a distância entre os dois pontos de interseção da curva
y = senh(x) − x com a elipse (x − 1)2/11 + y2 = 1.
Use precisão de 5 × 10-5
Resolução:
//Questão 3 da prova do Grupo 2 - 2014-2 - Turma A Cálculo Numérico // Prof. Jean Carlo Pech de Moraes //Definindo as funções e estimando as intersecções deff('y=f(x)','y=sinh(x)-x') deff('y=g(x)','y=sqrt(1-(x-1).^2/11)') deff('y=h(x)','y=-sqrt(1-(x-1).^2/11)') x=[-2:0.1:3] plot(x,f(x),x,h(x),x,g(x)); xgrid //Pelo gráfico podemos ver que a abcissa dos pontos de interseção são aproximadamente -1,5 e 1,7 // Definindo as funções diferenças deff('y=z1(x)','y=sinh(x)-x-sqrt(1-(x-1).^2/11)') deff('y=z2(x)','y=sinh(x)-x+sqrt(1-(x-1).^2/11)') //Procurando pelas raízes das funções diferenças das curvas (que é equivalente a procurar pela interseção entre elas) r1=bissec(z2,-1.6,-1.4,0.00001); r2=bissec(z1,1.6,1.8,0.00001); //Calculando as ordenadas dos pontos de interseção y1=f(r1) y2=f(r2) //Calcundo a distancia entre as intersecções dist=sqrt((r1-r2)^2+(y1-y2)^2) //Imprimindo os resultados
Questão 4 (2.5 pontos)
Considere a equação
cosh(x)/x + 1 = 2 cos(x)e(−x2)/x
a) (0.5) Estime graficamente as duas soluções da equação.
b) (1.0) Mostre que os pontos fixos da função
φ(x) = 2 cos(x)e(−x2) − cosh(x)
são soluções da equação e use o teorema do ponto fixo para discutir sobre a convergência do esquema
xn+1 = φ(xn)
x0 = 0.4
c) (1.0) Calcule as duas soluções com precisão de 10-6
Resolução:
//Questão 4 da prova do Grupo 2 - 2014-2 - Turma A Cálculo Numérico // Prof. Jean Carlo Pech de Moraes //Item a) deff('y=phi(x)','y=2*cos(x).*exp(-x.^2)-cosh(x)') x=[-2:0.05:2] plot(x,phi(x),x,x); xgrid(2) //Os pontos fixos são aproximadamente 0.4 e 0.9. //Item b pontofixo(phi,0.4,0.000001,50); // O método do ponto fixo não converge, observe que a phi'(0,4) é maior que 1 em valor absoluto. //Item c) //Calculando as raízes usando o método das secantes (pois não precisamos ) //Para usar o método da secante para calcular ponto fixos de f precisamos definir a função h(x)=phi(x)-x deff('y=h(x)','y=2*cos(x).*exp(-x.^2)-cosh(x)-x') x1=secante(h,0.3,0.8,0.00001,50); x2=secante(h,-0.8,-0.3,0.00001,50); //Imprimindo os resulatdos mprintf('\n\n Os pontos fixos são: %f e %f.',x1,x2) //O programa responderá "Os pontos fixos são: 0.426256 e -0.911666."
Prova 2 - Grupo 1
Questão 1
Considere o sistema de equações lineares:
(2j)x_j-x_{j+1}+3x_{j+1}-5x_{j+3}=10ln(j+1)
para j=1...30x_{31}=3x_{30}-2x_{29}
x_{32}=3x_{31}-2x_{30}
x_{33}=3x_{32}-2x_{31}
a) Escreva uma rotina que monte a matriz dos coeficientes desse sistema. Calcule o número de condicionamento dessa matriz.
b) Use o método de Gauss-Seidel para calcular uma solução aproximada do sistema usando 30 passos. Justifique se é possível garantir a convergência.
c) Escreva uma rotina que calcule a norma 1 do vetor que contém todos os pivôs da matriz escalonada, usando pivotamento parcial, do sistema. Dica: você pode usar a rotina elimgausspp para determinar a matriz escalonada.
A=zeros(33,33) for i=1:30 A(i,i)=2*i; A(i,i+1)=2; A(i,i+3)=-5; end A(31,29)=2; A(31,30)=-3; A(31,31)=1; A(32,30)=2; A(32,31)=-3; A(32,32)=1; A(33,31)=2; A(33,32)=-3; A(33,33)=1; c=cond(A) mprintf('O número de condiconamento é %f',c) C=zeros(33,34); C(:,1:33)=A(:,1:33) for i=1:30 C(i,34)=10*log(i+1) end chute=zeros(33,1) x=gauss_siedel(C,chute,0.001,30) mprintf('b)') mprintf('%f',x)
P3 - Grupo 1
Questão 1 (Problema de Contorno)
Considere o seguinte problema de contorno não linear de segunda ordem:
-u'' +uu'/100 = e-x, 0<x<3
u(0) = 100
u'(3) = -5
Usando a malha Xj = (j-1)h e j = 1,...,31. Aproxime a derivada segunda por um esquema de segunda ordem, a derivada primeira no interior do domínio por um esquema de segunda ordem e a derivada na fronteira por um esquema de primeira ordem para transformar a equação diferencial em um sistema de equações não lineares. Resolva o sistema usando o método de Newton. Calcule o valor de u(x) nos pontos x = 0.5 e x = 1.5 e apresente sua resposta com seis dígitos significativos.
//N=31 h=3/30; x=zeros(31,1); for i=1:31 x(i)=0+(i-1)*h end function y=F(u) y=zeros(31,1) y(1)=u(1)-100; for i=2:30 y(i)=-u(i-1)+2*u(i)-u(i+1)+h*u(i)*u(i+1)/200-h*u(i)*u(i-1)/200-h^2*exp(-x(i)) end y(31)=u(31)-u(30)+5*h endfunction function y=JF(u) y=zeros(31,31) y(1,1)=1; for i=2:30 y(i,i-1)=-1-h*u(i)/200 y(i,i)=2+h*(u(i+1)-u(i-1))/200 y(i,i+1)=-1+h*u(i)/200 end y(30,31)=-1 y(31,31)=1 endfunction chute=zeros(31,1) xatual=chute xseg=zeros(31,1) for i=1:125 xseg=xatual-inv(JF(xatual))*F(xatual) xatual=xseg end mprintf('\nu(0,5)=%f e u(1,5)=%f\n',xseg(6),xseg(16)) plot2d(x,xseg,0)
Questão 2 (PVI)
Considere a equação:
4y' + 10y = 4cos(t)
y(0) = 2
A) Aproximações de y(t) com Euler ou Runge Kutta
function z=F(y,t) z=cos(t)-5/2*y endfunction y_0=2 t0=0 tf=6 N=120 sol1=Euler(F,t0,tf,N,y_0) sol2=RK2(F,t0,tf,N,y_0) mprintf('\nUsando Euler, temos que y(1)=%f, y(2)=%f, y(3)=%f, y(4)=%f, y(5)=%f, y(6)=%f.\nUsando RK2, temos que y(1)=%f, y(2)=%f, y(3)=%f, y(4)=%f, y(5)=%f, y(6)=%f.',sol1(21),sol1(41), sol1(61), sol1(81), sol1(101), sol1(121), sol2(21),sol2(41), sol2(61), sol2(81), sol2(101), sol2(121))
B) Valor e Ponto de Mínimo no Intervalo [0,6]
//b) cont=1 minimo=sol1(1) for i=2:N if minimo>sol1(i) then cont=i minimo=sol1(i) end end t_min=0+0.05*cont valor_min=sol1(cont) mprintf('\nO valor mínimo é %f e o ponto de mínimo é t=%f]',valor_min, t_min)