





























Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
metodos numericos de aproximação de funçoes, erros de funções.
Tipologia: Notas de estudo
1 / 37
Esta página não é visível na pré-visualização
Não perca as partes importantes!






























Equa¸c˜oes n˜ao lineares
Neste cap´ıtulo vai mostra-se os diferentes m´etodos num´ericos usados na procura de zeros de fun¸c˜oes n˜ao lineares [BF97, Gau97].
Os m´etodos num´ericos que se estudar˜ao neste cap´ıtulo permitem resolver equa¸c˜oes
´e necess´ario fornecer uma aproxima¸c˜ao inicial x 0 para a solu¸c˜ao da equa¸c˜ao f (x) = 0 sendo depois gerado uma sucess˜ao de aproxima¸c˜oes x 1 , x 2 ,.. ., ou {xi}∞ i=1, que convergem para a solu¸c˜ao da equa¸c˜ao, que se designar´a por p. Muitas das sucess˜oes que, muito provavelmente, o leitor conhece s˜ao cons- tru´ıdas atrav´es de algoritmos simples, definidas de uma forma expl´ıcita ou por recorrˆencia.
Exemplo 2.1 (Sucess˜oes convergentes de n´umeros reais).
xn = 1 +^1 n → 0 , n → +∞ yn =
1 + n^1
)n → e, n → +∞
zn = ∑^ n k=
(−1)k+ 2 k − 1 →^ π/^4 , n^ →^ +∞ w 0 = 1, wn+1 = 12 wn − (^2) w^3 n →
3 , n → +∞
2.1 Introdu¸c˜ao 28
Claro que, na grande maioria dos casos, a demonstra¸c˜ao da convergˆencia pouco esclarece sobre o tipo de convergˆencia, isto ´e, se a convergˆencia ´e “r´apida” ou “lenta”. De modo a tornar estes conceitos mais rigorosos veja-se a seguinte defini¸c˜ao.
Defini¸c˜ao 2.1. Dada uma sucess˜ao de pontos {xn}+ 0 ∞convergente para p, por valores diferentes de p, chama-se ordem de convergˆencia α e constante as- simpt´otica de erro λ `as quantidades definidas por
n→^ lim+∞^ | |xxn+1^ −^ p| n −^ p|α^ = λ, (2.1)
se existir e for finito o limite.
Se α = 1 diz-se que a sucess˜ao tem uma convergˆencia linear, ou converge linearmente para p. Se α = 2 a convergˆencia diz-se quadr´atica. Se 1 < α ≤ 2 diz-se que a sucess˜ao tem uma convergˆencia supra-linear.
Exemplo 2.2 (Convergˆencia linear vs convergˆencia quadr´atica). Considere-se as sucess˜oes {xn} e {˜xn} convergentes para 0. A sucess˜ao {xn} converge linear- mente
nlim→∞^ |x |xn+1n| |= 0.^5 ,
e {˜xn} tem uma ordem de convergˆencia quadr´atica
nlim→∞^ |˜x |˜xnn+1|^2 |^ = 0.^5.
Admita-se, por simplicidade, que |xn+1| |xn| ≃^0.^5 ,^
|˜xn+1| |x˜n|^2 ≃^0.^5. No caso da convergˆencia linear, a hip´otese anterior implica que,
|xn − 0 | = |xn| ≃ 0. 5 |xn− 1 | ≃ (0.5)^2 |xn− 2 | ≃ · · · ≃ (0.5)n|x 0 |,
enquanto no caso quadr´atico se obt´em
|x˜n − 0 | = |˜xn| ≃ 0. 5 |˜xn− 1 |^2 ≃ (0.5) [ 0. 5 |x˜n− 2 |^2 ]^2 = (0.5)^3 |x˜n− 2 |^4 ≃ (0.5) 3 [ 0. 5 |x˜n− 3 |^2 ]^4 = (0.5)^7 |x˜n− 3 |^8 ≃ · · · ≃ (0.5)^2 n^ −^1 |˜x 0 |^2 n.
As seguintes instru¸c˜oes em GNU/Octave mostram os valores sucessivos do erro para cada uma das sucess˜oes anteriores
2.1 Introdu¸c˜ao 30
xy wz
Figura 2.1: Gr´aficos das sucess˜oes de definidas no Exemplo 2.
for i=1:n- Kv(i)=(x(i+2)-x(i+1))/(x(i+1)-x(i)); endfor endfunction
´e poss´ıvel obter-se a seguinte tabela
n Kx Ky Kz Kz 1 0.33333 0.48148 -0.6 -0. 2 0.5 0.59014 -0.71429 0. 3 0.6 0.66042 -0.77778 0. 4 0.66667 0.70995 -0.81818 2.6572e- 5 0.71429 0.7468 -0.84615 - 25 0.92593 0.92835 -0.96226 NaN 50 0.96154 0.9622 -0.98058 NaN 75 0.97403 0.97433 -0.98693 NaN 100 0.98039 0.98057 -0.99015 NaN
A tabela anterior mostra bem qual o tipo de convergˆencia associado a cada sucess˜ao.
2.1 Introdu¸c˜ao 31
Na impossibilidade de calcular o limite quando n → +∞ adopta-se os se- guintes crit´erios de paragem de modo a obter uma solu¸c˜ao do problema com uma precis˜ao pr´e-definida, 0 < ǫ < 1:
Cada um dos crit´erios enumerados acima tˆem vantagens e inconvenientes. Por ordem inversa, no caso 3 pode acontecer que |f (xn)| seja muito pequeno e xn ainda esteja longe de p. No caso 2 ´e necess´ario ter-se sempre xn 6 = 0, n ≥ 0, o que nem sempre ´e poss´ıvel. Assim na maioria das aplica¸c˜oes ´e usual usar-se o caso 1. No entanto nem sempre a convergˆencia para zero da distˆancia entre duas aproxima¸c˜oes sucessivas ´e sinal de convergˆencia da sucess˜ao como se pode observar no exemplo seguinte.
Exemplo 2.4 (Crit´erio de paragem: s´erie harm´onica). Considere-se a sucess˜ao
zn = ∑^ n k=
k →^ +∞, n^ →^ +∞.
No entanto |zn+1 − zn| = 1/(n + 1) → 0 , n → +∞.
Assim, dado o exposto acima, ´e sempre necess´ario interpretar os resultados de qualquer aproxima¸c˜ao ou c´alculo num´erico. Para al´em disso uma boa apro- xima¸c˜ao inicial x 0 criteriosamente escolhida tamb´em ´e essencial para a con- vergˆencia r´apida do m´etodo. Esta escolha pode ser feita atrav´es de um estudo pr´evio da fun¸c˜ao cujo zero se quer aproximar, estudo qualitativo da fun¸c˜ao bem conhecido da an´alise matem´atica. Um exerc´ıcio simples que se poder´a fazer ´e estudar a ordem de convergˆencia de alguma sucess˜oes not´aveis da an´alise matem´atica estudadas nos primeiros anos de uma licenciatura em ciˆencias. Verifica-se que, em termos gerais, a quase totalidade das sucess˜oes estudadas s˜ao pouco eficientes para o c´alculo aproximado do valor do seu limite (se for n˜ao trivial). Este coment´ario aplica-se `as sucess˜oes descritas no Exemplo 2.1.
2.2 M´etodo da bissec¸c˜ao 33
ou ainda com o comando inline como foi mostrado anteriormente. Os parˆametros de input s˜ao: os extremos do intervalo a e b, a tolerˆancia tol requerida, a quan- tidade ǫ, e o n´umero m´aximo de itera¸c˜oes Niter. O output ´e dado pela seguinte tabela
format short g; bissec(0,pi/2,100,.01)
Output for the Bisection method
n a b x f(x) 1 0 1.5708 0.7854 -0. 2 0 0.7854 0.3927 0. 3 0.3927 0.7854 0.58905 0. 4 0.58905 0.7854 0.68722 0. 5 0.68722 0.7854 0.73631 0. 6 0.73631 0.7854 0.76085 -0. 7 0.73631 0.76085 0.74858 -0. 8 0.73631 0.74858 0.74245 -0.
The method completed successfully!
Programa 2.2 (M´etodo da bissec¸c˜ao: bissec.m). function bissec(a,b,Niter,tol) disp("") disp ("Output for the Bisection method") disp("") disp (" n a b x f(x)") fa=f(a); for i=1:Niter fb=f(b); x=(b+a)/2; fx=f(x);
disp ([i, a, b, x, fx]);
2.2 M´etodo da bissec¸c˜ao 34
if (fx==0 |(b-a)/2<tol) disp("") disp ("The method completed successfully!") disp("") return; else if (fa*fx>0) a=x; fa=fx; else b=x; endif endif endfor disp("") disp ("The method failed after (Niter)") disp (Niter) disp ("iterations") disp("") endfunction
Exemplo 2.5 (Aplica¸c˜ao do m´etodo da bissec¸c˜ao: f (x) = x^2 − 3 ). Para se poder perceber graficamente, ver Figura 2.2, em que consiste o m´etodo da bissec¸c˜ao considere-se a fun¸c˜ao f (x) = x^2 − 3 no intervalo [1, 3]. Correndo o programa bissec obt´em-se:
bissec(1,3,100,.01)
Output for the Bisection method
n a b x f(x) 1 1 3 2 1 2 1 2 1.5 -0. 3 1.5 2 1.75 0. 4 1.5 1.75 1.625 -0.
2.3 M´etodo da falsa posi¸c˜ao 36
cos(x)−x
Figura 2.3: Gr´afico da fun¸c˜ao f (x) = cos x − x no intervalo ]0, π/2[ e a apro- xima¸c˜ao ao seu zero ¯p = 0.73909.
Apesar da sua simplicidade o m´etodo da bissec¸c˜ao n˜ao garante uma redu¸c˜ao do erro em cada itera¸c˜ao de uma forma mon´otona. Este m´etodo n˜ao tem em con- sidera¸c˜ao o comportamento da fun¸c˜ao f. O facto mais relevante ´e que o m´etodo demora mais do que uma itera¸c˜ao a encontrar o zero de uma fun¸c˜ao linear, a menos que esse zero seja o ponto m´edio do primeiro intervalo considerado.
O m´etodo da falsa posi¸c˜ao ´e um dos m´etodos num´ericos mais antigos. A sua descoberta remonta ao s´eculo quinto nos textos de matem´atica indianos e nos textos medievais ´arabes. A designa¸c˜ao de regula falsi, pela qual tamb´em ´e conhecido, remonta aos s´eculos 16 e 17. Para se construir o m´etodo da falsa posi¸c˜ao admite-se, como no m´etodo da
e f (a)f (b) < 0. Do mesmo modo este m´etodo gera uma sucess˜ao de intervalos, de tamanho cada vez mais reduzido, Ii = [ai, bi] i = 1, 2 ,... onde f (ai)f (bi) < 0. A diferen¸ca est´a em que as sucessivas aproxima¸c˜oes xi n˜ao s˜ao o ponto m´edio
2.3 M´etodo da falsa posi¸c˜ao 37
do intervalo Ii mas solu¸c˜ao da equa¸c˜ao linear
f (ai) + f^ (b bi)i −−^ fa^ i(ai) (x − ai) = 0, x ∈ Ii.
Esta abordagem parece ser mais eficiente que o m´etodo da bissec¸c˜ao j´a que solu¸c˜ao da equa¸c˜ao anterior estar´a mais perto do ponto onde o valor de |f | ´e mais pequeno (talvez seja isto que justifica o nome do m´etodo – falsa posi¸c˜ao). Se f ´e uma fun¸c˜ao linear o m´etodo da falsa posi¸c˜ao converge numa itera¸c˜ao para o zero da fun¸c˜ao. Explicitamente, tem-se ent˜ao, para o m´etodo da falsa posi¸c˜ao
xi = ai − (^) f (aaii)^ −−^ bfi (bi) f (ai), f (ai)f (bi) < 0 , i = 1, 2 ,...
O m´etodo da falsa posi¸c˜ao tem uma convergˆencia linear com constante as- simpt´otica de erro
λ = 1 − (b − p) f^
′(p) f (b). O Programa 2.3 implementa o m´etodo da falsa posi¸c˜ao. Como input tem-se os extremos do intervalo inicial a e b, o n´umero m´aximo de itera¸c˜oes permitido Niter e uma dada tolerˆancia tol.
Programa 2.3 (M´etodo da falsa posi¸c˜ao: regulafalsi.m). function regulafalsi(x,y,Niter,tol) disp("") disp ("Output for the Regula Falsi method") disp("") disp (" n a b x f(x)") for i=1:Niter oldy=y; y=y-f(y)*(y-x)/(f(y)-f(x)); if (f(y)==0 |abs(y-x)<tol) disp("") disp ("The method completed successfully!") disp("") return; else
2.4 M´etodo da secante 39
dos intervalos. Assim dado duas aproxima¸c˜oes iniciais x 0 e x 1 faz-se
xi+1 = xi − (^) f (xxi^ −^ xi−^1 i)^ −^ f^ (xi− 1 )^ f (xi), i = 1, 2 ,...
Esta simplifica¸c˜ao tem como consequˆencia a obten¸c˜ao de um m´etodo que dever´a ter uma ordem de convergˆencia supra linear. De facto a ordem de convergˆencia ´e α = (1 + √5)/ 2 ≃ 1. 61803.. ., n´umero conhecido por n´umero de ouro.
Programa 2.4 (M´etodo da secante: secant.m). function secant(x,y,Niter,tol) disp("") disp ("Output for the Secant method") disp("") disp (" n x err f(x)")
for i=1:Niter if (f(x)==0 |abs(x-y)<tol) disp("") disp ("The method completed successfully!") disp("") return; else epsilon=abs(f(y)(y-x)/(f(y)-f(x))); disp ([i-1,x, epsilon, f(x)]); oldx=y; y=y-f(y)(y-x)/(f(y)-f(x)); x=oldx; endif endfor disp("") disp ("The method failed after (Niter)") disp (Niter) disp ("iterations") disp("") endfunction
2.4 M´etodo da secante 40
Exemplo 2.7 (Aplica¸c˜ao do m´etodo da secante: f (x) = cos x − x).
format short g secant(0,1,10,.0001)
Output for the Secant method
n x err f(x) 0 0 0.31493 1 1 1 0.051226 -0. 2 0.68507 0.0028204 0. 3 0.7363 3.425e-05 0.
The method completed successfully!
Exemplo 2.8 (Compara¸c˜ao: falsa posi¸c˜ao, secante). Considere-se a fun¸c˜ao f (x) = x^2 − 3. E f´´ acil ver a diferen¸ca dos extremos do intervalo onde se encontra o zero da fun¸c˜ao aplicando os m´etodos da falsa posi¸c˜ao e da secante.
x.^2−
Figura 2.4: Trˆes itera¸c˜oes pelo m´etodo da secante.
Para o m´etodo da secante obt´em-se:
secant(0,2,10,.0001)
2.4 M´etodo da secante 42
4 1.7308 2 1.732 -0.
The method completed successfully!
Os comandos para a obten¸c˜ao da Figura 2.5 s˜ao:
clg hold grid a=-.5; b=2.5; x=[a:.01:b]; axis([-.1,2.1,-3.1,1.1]); fplot(’x.^2-3’,[a,b]) y1=f(0)+(f(2)-f(0))/(2-0)(x.-0); y2=f(1.5)+(f(2)-f(1.5))/(2-1.5)(x.-1.5); y3=f(1.7143)+(f(2)-f(1.7143))/(2-1.7143)(x.-1.7143); plot([0 2],[f(0) f(2)],’’) plot([1.5 2],[f(1.5) f(2)],’’) plot([1.5 1.7143],[f(1.5) f(1.7143)],’’) plot(x,y1,’r- ’) plot(x,y2,’g-’) plot(x,y3,’b-’)
Para a Figura 2.4 s˜ao:
clg hold grid a=-.5; b=2.5; x=[a:.01:b]; axis([-.1,2.1,-3.1,1.1]); fplot(’x.^2-3’,[a,b]) y1=f(0)+(f(2)-f(0))/(2-0)(x.-0); y2=f(1.5)+(f(2)-f(1.5))/(2-1.5)(x.-1.5);
2.5 M´etodo Newton 43
y3=f(1.5)+(f(1.7143)-f(1.5))/(1.7143-1.5)(x.-1.5); plot([0 2],[f(0) f(2)],’’) plot([1.5 2],[f(1.5) f(2)],’’) plot([1.5 1.7143],[f(1.5) f(1.7143)],’’) plot(x,y1,’r- ’) plot(x,y2,’g-’) plot(x,y3,’b-’)
O m´etodo de Newton ´e um dos m´etodos mais poderosos para estimar zeros de fun¸c˜oes. A sua particularidade deve-se a usar o comportamento da fun¸c˜ao para obter de uma forma muito eficiente a aproxima¸c˜ao desejada. No entanto este m´etodo “exige” mais da fun¸c˜ao que o m´etodo da bissec¸c˜ao. A recta tangente ao gr´afico da fun¸c˜ao f num ponto (xi, f (xi)) ´e dada por y(x) = f (xi) + f ′(xi)(x − xi).
Como se quer determinar um xi+1 tal que y(xi+1) ≃ 0, obt´em-se
xi+1 = xi − (^) ff ′((xxii)) , i = 0, 1 ,... (2.4)
desde que f ′(xi) 6 = 0. A f´ormula (2.4) permite, fornecendo uma aproxima¸c˜ao inicial x 0 , construir uma sucess˜ao de pontos, xi, i = 0, 1 ,... que convergem, dependendo das propriedades da fun¸c˜ao f , para a solu¸c˜ao da equa¸c˜ao f (x) = 0. E f´´ acil ver que se f (x) = a 1 x + a 0 ent˜ao a regra (2.4) converge para p = −a 0 /a 1 numa itera¸c˜ao. O m´etodo de Newton n˜ao converge em geral para qualquer aproxima¸c˜ao ini- cial x 0 , mas apenas para aquelas suficientemente pr´oximas de p. Uma primeira an´alise revela que esta hip´otese parece absurda, de facto, p n˜ao ´e conhecido. Na pr´atica ´e usual usar-se o m´etodo da bissec¸c˜ao para estimar um intervalo pequeno dentro do qual se pode encontrar o zero e depois aplicar o m´etodo de Newton. Um estudo simples do gr´afico da fun¸c˜ao tamb´em ´e bastante elucidativo para a escolha de uma boa aproxima¸c˜ao inicial. Para uma aproxima¸c˜ao inicial bem escolhida e no caso em que p ´e um zero simples da fun¸c˜ao f , isto ´e, f ′(p) 6 = 0, o m´etodo de Newton tem ordem de
2.5 M´etodo Newton 45
else epsilon=abs(x-xo); disp ([i-1, xo, epsilon, f(xo)]); xo=x; endif endfor disp("") disp ("The method failed after (Niter)") disp (Niter) disp ("iterations") disp("") endfunction
Exemplo 2.9 (Aplica¸c˜ao do m´etodo de Newton: f (x) = cos x − x). Considere-se a fun¸c˜ao f (x) = cos x − x no intervalo [0, π/2] anteriormente considerada no m´etodo da bissec¸c˜ao no exemplo 2.5. No caso do m´etodo de Newton com uma aproxima¸c˜ao inicial xo=.5 o output ´e:
newton(.5,10,.01)
Output for the Newton method
n x err f(x) 0 0.5 0.25522 0. 1 0.75522 0.016081 -0.
The method completed successfully!
Este exemplo mostra bem a r´apida convergˆencia para o zero da fun¸c˜ao f.
Defini¸c˜ao 2.2. Diz-se que p ´e um zero de multiplicidade m de uma fun¸c˜ao
f (p) = f ′(p) = f ′′(p) = · · · = f (m−1)(p) = 0, f (m)(p) 6 = 0. No caso de zeros da fun¸c˜ao com multiplicidade m maior do que um perde-se a convergˆencia quadr´atica do m´etodo. Nestes casos ´e necess´ario modificar o
2.5 M´etodo Newton 46
m´etodo de forma a recuperar a convergˆencia quadr´atica
xi+1 = xi − m ff ′^ ((xxi) i)^ , i = 0, 1 ,... (2.5)
onde f ′(xi) 6 = 0. Como ´e claro a escolha do valor de m adequado depende um conhecimento a priori do comportamento da fun¸c˜ao em p.
Exemplo 2.10 (Perda de convergˆencia para zeros m´ultiplos: m´etodo de Newton). Considere-se a fun¸c˜ao f (x) = ex^ − x − 1 que tem um zero com multiplicidade dois em p = 0. Aplicando o m´etodo de Newton obt´em-se
newton(1,16,.001)
Output for the Newton method
n x err f(x) 1 0.58198 0.41802 0. 2 0.31906 0.26292 0. 3 0.168 0.15106 0. 4 0.086349 0.081647 0. 5 0.043796 0.042553 0. 6 0.022058 0.021738 0. 7 0.011069 0.010988 6.1492e- 8 0.0055449 0.0055245 1.5401e- 9 0.002775 0.0027699 3.8539e- 10 0.0013881 0.0013869 9.6392e-
The method completed successfully!
Claramente a sucess˜ao de valores gerados n˜ao tem uma convergˆencia quadr´atica.
E poss´^ ´ ıvel estender o m´etodo de Newton estudado na sec¸c˜ao anterior a sistemas de equa¸c˜oes n˜ao lineares. De modo a se perceber melhor o m´etodo de Newton