Documente Academic
Documente Profesional
Documente Cultură
Exerccios e solues
Contedo
1 Clculo da
2
2 3 6
-Mestrado em Economia
1 Clculo da
Encontrar uma aproximao da raz quadrada de 2 usando usando para isso os zeros de uma equao no linear.
Soluo
A equao linear mais fcil que satisfaz os requisitos
x2 2 = 0 . Sendo que esta equao tem duas razes 2. Podemos resolver ento este problema
procurando os zeros do polinmio que est acima. Para mostrar mais algoritmos signicativos usamos o formato longo.
format long p = [1 0 2] roots (p)
Ou resultado ento:
roots
(p)
1.41421356237310
1.41421356237309
2/ 6
-Mestrado em Economia
2 Zeros de funes
Para cada uma das seguintes funes no lineares encontrar os zeros no intervalo indicado e comparar os resultados obtidos por cada um dos mtodos estudados anteriormente (bisseces sucessivas, Newton e secante).
x3 2x 5 sin x x 0.001 log(x + 2/3)
3
sign(x 2) |x 2| atan(x) /3
1 x
Soluo
Podemos comear por criar uma funo que compara os resultados obtidos pelos diferentes mtodos. Abaixo est uma verso simples mas podemos adicionar outros testes como calcular a qualidade da soluo obtida comparando com outros mtodos que saibamos dar resultados exactos neste contexto.
function
comp = compara_metodos ( fun , a , b , fprime ) [ xb , kb ] = b i ss e c ( fun , a , b ) ; [ xs , ks ] = secant ( fun , a , b ) ; [ xn , kn ] = newton ( fun , fprime , ( a+b ) / 2 ) ;
end
comp = [ xb , kb ; xs , ks ; xn , kn ] ;
>> compara_metodos (@(x) x^32x 5, 0 , 3 , @(x) 3 x^2 2) ans = 2.0946 2.0946 2.0946 53.0000 14.0000 7.0000
>> compara_metodos ( @sin , 1 , 4 , @cos ) ans = 3.1416 3.1416 3.1416 53.0000 7.0000 5.0000
1,
1 , @(x) x^2)
3/ 6
-Mestrado em Economia
>> compara_metodos (@(x) x^3 0.001 , warning : d i v i s i o n by zero ans = 0.10000 0.10000
Inf
2 , @(x) x^2)
>> compara_metodos (@(x) log (x+2/3) , 0 , 1 , @(x) 1/(x+2/3)) warning : d i v i s i o n by zero ans = 0.33333 0.33333 0.33333 54.00000 8.00000 5.00000
>> b i s se c (@(x) sign (x 2) sqrt ( abs (x 2)) , 1 , 4) ans = 2 >> [ x , k ] =b is s e c (@(x) sign (x 2) sqrt ( abs (x 2)) , 1 , 4) x= 2 k = 53 >> [ x , k ] = secant (@(x) sign (x 2) sqrt ( abs (x 2)) , 1 , 4) warning : d i v i s i o n by zero x= 2 k = 76 >> compara_metodos (@(x) atan (x) pi /3 , 0 , 5 , @(x) 1/(1+x^2)) warning : d i v i s i o n by zero ans = 1.7321 1.7321 1.7321 55.0000 13.0000 7.0000
1/(xpi )^2)
>> compara_metodos (@(x) 1/(xpi ) , 0 , 5 , @(x) warning : d i v i s i o n by zero warning : d i v i s i o n by zero warning : d i v i s i o n by zero warning : d i v i s i o n by zero warning : d i v i s i o n by zero warning : d i v i s i o n by zero warning : d i v i s i o n by zero ans = 3.1416
I n f I n f
Vrias notas que podem ser retiradas desta anlise. O mtodo mais rpido sem dvida o mtodo de Newton, quando converge. O mtodo da secante tambm muito
4/ 6
-Mestrado em Economia
rpido, em especial quando comparado com o mtodo das bisseces sucessivas. H casos dignos de nota como por exemplo a raz de x3 0.001 em que foram precisas quase 7000 (!) iteraes para se atingir a preciso pretendida no mtodo da secante enquanto que o mtodos das bisseces sucessivas precisou das mesmas das outras funes e o mtodo de Newton converge ou no dependendo da aproximao inicial. No clculo da raz de sign(x 2) |x 2| o mtodo das bisseces sucessivas foi o mais rpido, mais rpido ainda que o mtodo da tangente e o mtodo de Newton cou preso, sem no entanto divergir. Para ver o que est a acontecer neste caso instrutivo mandar imprimir o valor da aproximao em cada iterao do mtodo. Para fazer isso vamos modicar ligeiramente o mtodo de Newton para retornar toda a rbita (sequncia de aproximaes) e no s o ltimo ponto. Uma vez que sabemos que provavelmente no conseguimos terminar vamos tambm passar um novo argumento de entrada que d o nmero mximo de iteraes permitidas. A nossa nova funo ca ento:
function
end end
[ orbita , k ] = newton_orbita ( f , fprime , x , iter_max ) k = 0; xprev = x 1 . 1 ; while abs (x xprev ) > eps abs (x) && k < iter_max xprev = x ; x = x f (x)/ fprime (x ) ; k = k + 1; orbita (k)=x ;
(x 2) sqrt ( abs (x 2)) , @(x) 1/(2 sqrt ( abs (x 2))) , 2.5 , 10) 1.5000 2.5000 1.5000 2.5000 1.5000
2.5000
A aproximao vria, com perodo dois, entre duas solues. Fica como sugesto testar estar funo para uma aproximao inicial diferente e ver qual o comportamento da aproximao em cada iterao. Por m de notar que a ltima funo quebra uma das regras implcitas que usamos at agora, que a funo a estudar contnua no intervalo apresentado. Esta funo nem contnua nem tem zeros. Ou seja devemos sempre vericar que os pressupostos so vericados antes de analisarmos qualquer resultado.
5/ 6
-Mestrado em Economia
Soluo
Basta adaptar o cdigo anterior para passar a conter uma linha onde
function
comp = compara_metodos_fzero ( fun , a , b , fprime ) [ xb , kb ] = b i ss e c ( fun , a , b ) ; [ xs , ks ] = secant ( fun , a , b ) ; [ xn , kn ] = newton ( fun , fprime , ( a+b ) / 2 ) ; [ x ] = f z e r o ( fun , [ a b ] ) ;
end
comp = [ xb , kb ; xs , ks ; xn , kn ; x ] ;
6/ 6