Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

metodos numericos, Notas de estudo de Engenharia Mecânica

metodos numericos de aproximação de funçoes, erros de funções.

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 05/11/2009

jorge-manuel-dos-santos-1
jorge-manuel-dos-santos-1 🇧🇷

1 documento

1 / 37

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Cap´ıtulo 2
Equa¸oes ao lineares
Neste cap´ıtulo vai mostra-se os diferentes etodos num´ericos usados na procura
de zeros de fun¸oes ao lineares [BF97, Gau97].
2.1 Introdu¸ao
Os etodos num´ericos que se estudar˜ao neste cap´ıtulo permitem resolver equa¸oes
do tipo f(x) = 0 onde a fun¸ao f:
R
R
´e ao linear. Na maioria dos etodos
´e necess´ario fornecer uma aproxima¸ao inicial x0para a solu¸ao da equa¸ao
f(x) = 0 sendo depois gerado uma sucess˜ao de aproxima¸oes x1, x2,..., ou
{xi}
i=1, que convergem para a solu¸ao da equa¸ao, que se designar´a por p.
Muitas das sucess˜oes que, muito provavelmente, o leitor conhece 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 umeros reais).
xn= 1 + 1
n0, n +
yn=1 + 1
nn
e, n +
zn=
n
X
k=1
(1)k+1
2k1π/4, n +
w0= 1, wn+1 =1
2wn3
2wn3, n +
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25

Pré-visualização parcial do texto

Baixe metodos numericos e outras Notas de estudo em PDF para Engenharia Mecânica, somente na Docsity!

Cap´ıtulo 2

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].

2.1 Introdu¸c˜ao

Os m´etodos num´ericos que se estudar˜ao neste cap´ıtulo permitem resolver equa¸c˜oes

do tipo f (x) = 0 onde a fun¸c˜ao f : R → R ´e n˜ao linear. Na maioria dos m´etodos

´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:

  1. |xn+1 − xn| < ǫ
  2. |xn+1 |x^ n−| xn|< ǫ, xn 6 = 0
  3. |f (xn)| < ǫ

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.

2.3 M´etodo da falsa posi¸c˜ao

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

bissec¸c˜ao, que a fun¸c˜ao cujo zero se procura ´e uma fun¸c˜ao cont´ınua f : [a, b] → R

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-’)

2.5 M´etodo Newton

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 : R → R se

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.

2.5.1 M´etodo de Newton para sistemas de equa¸c˜oes n˜ao

lineares

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