Escolar Documentos
Profissional Documentos
Cultura Documentos
2013-2 - 05 - Soluções Aproximadas de Equações Algébricas e Transcendentais - 2 A5 Corpo 18 PDF
2013-2 - 05 - Soluções Aproximadas de Equações Algébricas e Transcendentais - 2 A5 Corpo 18 PDF
2013-2 - 05 - Soluções Aproximadas de Equações Algébricas e Transcendentais - 2 A5 Corpo 18 PDF
f 0 x , f1 x , , fm x (5.1.1)
x f0 x f1 x ou x f 0 x f1 x
+ - - +
0 - 0 +
- - + +
As colunas de f 0 x representam os dois casos possíveis para uma raiz simples. O sinal de f1 segue da condição
5
(5.1.5) e a continuidade implica nos demais sinais nas últimas colunas. Claramente, existe nesse caso um decréscimo de
uma mudança no número de variações quando x cresce a partir da raiz de f 0 x . Quando esses resultados são
cambiados, segue o estabelecido no teorema.
É relativamente fácil a construção de uma seqüência de Sturm quando
f x é um polinômio qualquer. Definindo-se:
0
f1 x f 0 x (5.1.6)
que satisfaz a condição (iv) para raiz simples. Então se divide f0 x por
f1 x e o resto é f2 x . Divide-se então f1 x por f2 x e o resto é f3 x .
EXERCÍCIOS
de modo que:
ba
f an f bn 0, n 1, 2, bn an (5.2.2)
2n
Se FP=0 ou b a / 2 TOL
Então imprima p
Pare;
i i 1
Se FA FP 0
Então
a p
FA FP
Senão
b p
Fim enquanto
Imprima “método falhou após N iterações =”, N
fim
Exemplo
11
if FP == 0 || ((b-a)/2)<TOL
disp(' '); disp('Valor final da raiz = '); disp(p);
return;
end
i=i+1;
if FA*FP > 0
a = p;
FA = FP;
else
b = p;
end
end
disp('método falhou após N iterações ='); disp(N);
10
Eixo dos Y
5
-5
1 1.2 1.4 1.6 1.8 2
Eixo dos X
a. f x x 4
2 x3 x 1 0 , no intervalo [0,1].
b. f x x 3
0,2 x 2 0,2 x 1,2 0 , no intervalo [1,2].
a profundidade h quando:
a. V 0, 20m , e
3
15
5.3 Método das Cordas ou Método da Falsa-Posição
Equation Section (Next)Este método é semelhante ao anterior e usa as
mesmas hipóteses, isto é, para se determinar uma raiz de f x C a, b é
necessário se ter um intervalo a, b tal que f a f b 0, pois isso implica
que exista pelo menos uma raiz no intervalo ou um número impar delas.
Seja, por exemplo, f a 0 f b 0 e que exista apenas uma raiz em a, b .
Então ao invés de se dividir o intervalo ao meio, dividimo-lo na razão
f a
. Isto produz uma aproximação do valor da raiz procurada:
f b
x1 a h1 (5.3.1)
onde
f a b a
h1 (5.3.2)
f b f a
Então aplicando o mesmo procedimento ao intervalo a, x x , b , 1 1
ou
f ( xn )
xn 1 xn .(b xn ), n 0,1,2, (5.3.5)
f (b) f ( xn )
21
fp = f(x(i+1)); % valor da função no ponto x(n+1)
fprintf('\n %2.0i %15.10f %15.10f %15.10f',i,x(i),x(i+1),erro);
erro = abs((x(i+1)-x(i)));
if fp == 0 || erro < TOL
fprintf('\n Valor final da raiz é = %16.12g',x(i+1));
disp(' ');
plot(x(i+1),fp,'dr'); %plota um diamante vermelho na raiz
return;
end
i=i+1;
end
end
disp('');disp('Método falhou após N iterações =');disp(i);
Executando-se o programa acima para o mesmo problema do exemplo
utilizado no método da divisão em duas partes, com os mesmos
parâmetros, se obtém os resultados apresentados a seguir. Observamos
que o método das cordas tem convergência mais rápida que o método da
divisão em duas partes (Figura 5.2), pois enquanto este precisou de 17
iterações aquele precisou de apenas 8 iterações para a obtenção da raiz
com erro da ordem 10 (Figura 5.3):
5
23
a. f x x 4
2 x3 x 1 0 , no intervalo [0,1].
b. f x x 3
0,2 x 2 0,2 x 1,2 0 , no intervalo [1,2].
c
onde g 9,8 m/s2. Para um pára-quedista com um coeficiente de
arrasto c 15 kg/s, calcule a massa m assim que a velocidade alcançar
v 35 m/s em t 9 s. Use os métodos conhecidos para obter uma
xn xn
resposta com n
1
<0,1%.
xn
25
4. Num projeto de uma caixa d’água esférica de raio R m, o volume de
água armazenada quando o nível d'água dentro da esfera é h ( h 2R )
é dado pela seguinte fórmula: V 2 h 3R h m . Se R 2m , qual a
2 3
3
altura h do nível da água quando V 7m3 ? Use os métodos
xn xn
conhecidos para obter uma resposta com n
1
<0,01%.
xn
5.4 Método de Newton-Raphson ou Método da Tangente para
Equação Simples
Equation Section (Next)Este método já foi apresentado na seção 4.4, para
o caso de aproximação de funções. Agora será aplicado para a
determinação de raízes.
Seja f x 0 uma função contínua definida em C 2 a, b , à semelhança do
que se admitiu nos casos anteriores, e que
f a f b 0 , e mais, que f x e f x sejam
Seja xn hn (5.4.1)
f xn
hn
f xn
EXERCÍCIOS
b. f x x 3
0,2 x 2 0,2 x 1,2 0 , no intervalo [1,2].
c. f x x 4
3x 2 75x 10000 0 , no intervalo [-100, -10]
xn 1 xn
f ( xn )
(5.4.3) 29
f '( xn )
Pode-se fazer
f '( xn ) f '( x0 ) (5.4.4)
EXERCÍCIOS
b. f x x 3
0,2 x 2 0,2 x 1,2 0 , no intervalo [1, 2].
c. f x x 4
3x 2 75x 10000 0 , no intervalo [-100, -10]
x
3
5x
2
4x
h a s so l u ti o n (s)
20 31
5
2
2
1 2
x x 2
2
h a s so l u ti o n (s)
1 i 3
1 i 3
has coefficients
1
1 0.482
v 2 r polyroots ( v ) 0.172 1.577i
r
0 0.172 1.577i
1 0.825
33
0.5
1 0.5 0 0.5 1
p( x ) 0.5
1.5
n n
n
lim xn lim xn1 lim xn1
35
ou seja,
(5.5.4)
para a x b, então:
o processo de iteração xn xn 1 , converge, qualquer que seja o valor
inicial x0 a, b ;
a sucessão satisfaz a xn 1 xn qn x1 x0
Demonstração:
Sejam duas aproximações sucessivas
xn xn1 e xn1 xn
Então xn1 xn xn xn1
Aplicando o teorema do valor médio, tem-se:
xn1 xn xn xn _1 (1)
xn 1 xn
Onde xn 1 , xn . Mas x q 1 e x
xn xn 1
Logo xn1 xn q xn xn1 (2)
para n 1,2, , pode-se construir
x2 x1 q x1 x0
x3 x2 q x2 x1 q 2 x1 x0
37
(3)
xn 1 xn q xn xn 1 q n x1 x0
Seja então a série:
x0 x1 x0 x2 x1 xn xn1 (4)
Para a qual as aproximações sucessivas de xn são n 1 somas parciais, que leva à seguinte expressão: xn Sn 1 . De
(3) vê-se que os termos de (4) são menores em valores absolutos que a correspondente série geométrica de razão q 1 ;
logo (4) converge absolutamente. Assim
lim Sn1 lim xn
n n
onde a, b e é a raiz de xn xn 1 , a qual não tem qualquer outra raiz no intervalo a, b . E mais, se
e então:
c
1 c 0
com c , ; como 1 c 0 , logo 0 donde se conclui que e é única.
Está demonstrado o teorema.
x1 x1 x0 a, b
1
Então o teorema 1 acima permanece válido.
1 q p qn
xn p xn qn x1 x0 x1 x0
1 q 1 q
logo
qn
xn x1 x0 (5.5.6)
1 q
qn
x1 x0 (5.5.7)
(1 q)
x x (5.5.9)
a x q 1 a x b
No caso, se então:
b x0 ,
a, b .
qn
3. a estimativa xn x1 x0 é válida.
(1 q)
Exemplo
então: 43
x arccos 0,5 x 60º 1,05rad
2. x3 x 1 0
45
3. x tan x 0
4. x3 6x2 8x 6 0
5.6 Método da Iteração para Sistemas de Duas Equações
Equation Section (Next)Seja o sistema:
f1 x, y 0
(5.6.1)
f 2 x, y 0
cujas raízes reais são necessárias serem determinadas com uma dada
precisão. Graficamente as raízes do sistema são as interseções das curvas
de f ( x, y ) e f x, y .
1 2
Sejam
f1 ( x, y ) 2 x 2 xy 5x 1 0
f 2 ( x, y ) x 3log( x ) y 2 0
e então
1 y 5
x x ( y 5) 1
4
2
3M
1
2 x
x 2 x 3log( x )
1 x
y x ( y 5) 1
4
2
2
0
y
com M ln 10 0,43429 .
Restringindo o espaço de solução a uma vizinhança do ponto x0 , y0 ,
tem-se, por exemplo,
x 3,5 0,1; y 2,2 0,1
3* 0, 43
1
2 3, 4
0, 42
x 2 3, 4 3log(3.4)
2
0
y
logo
1 2
0,54 0, 42 0,96 1
x x
1 2
0, 27 0 0, 27 1
y y
-
n Xn
3,500000
Yn
2,200000
53
1,000000 3,478505 2,265437
2,000000 3,483738 2,258912
3,000000 3,484835 2,260503
4,000000 3,485804 2,260836
5,000000 3,486391 2,261131
6,000000 3,486771 2,261309
7,000000 3,487013 2,261425
8,000000 3,487168 2,261498
9,000000 3,487267 2,261545
10,000000 3,487331 2,261575
11,000000 3,487371 2,261595
Given
2x x y 5x
2
1 0
3 log( x)
2
x y 0
3.487
Find( x y )
2.262
equações:
f1 x, y 0
(5.7.1)
f 2 x, y 0
ou ainda
f1 ( xn , yn ) f ( x , y )
f1 ( xn , yn ) hn x
kn 1 n n
y
(5.7.4)
f ( x , y ) h f 2 ( xn , yn ) k f 2 ( xn , yn )
2 n n n
x
n
y
Se o jacobiano
f1 f1
x y
J ( xn , y n ) 0
f 2 f 2
x y
como
hn x xn
k n y yn
59
tem-se
f1
f1
1 y
xn 1 xn (5.7.5)
J ( xn , yn ) f 2
f2
y
f1
f1
1 x
yn 1 yn (5.7.6)
J ( xn , yn ) f 2
f2
x
para n 0,1,2, , onde x0 , y0 pode ser determinado da maneira mais
grotesca possível.
Exemplo
Solução:
Calculemos o valor das funções em x0 , y0 ; então,
f1 x0 , y0 0, 434
f 2 x0 , y0 0,1956
Calculando, encontra-se:
J x0 , y0 97,910
h0 0,0349
k0 0,0390
61
Logo
x1 x0 h0 1, 2349
y1 y0 k0 1,6610
Given
2x
3 2
y 1 0
x y
3
y 4 0
1.234274
Find( x y )
1.661526
sucessivas:
x p x1 p , x2 p , , xn p
Então a raiz exata de (5.7.9) pode ser representada por:
x x ε
p
p
(5.7.10)
onde
ε p 1 p , 2 p , , n p é a correção. Levando-se (5.7.10) em (5.7.9), tem-
se:
f x f x p ε p 0 (5.7.11)
f x f x p ε p f x p f x p ε p 0 (5.7.12)
f x
p
é uma matriz especial conhecida é na análise matemática como
“matriz jacobiana” de f f1 , f 2 , , fn com relação às variáveis x1. x2 , , xn , isto
é,
f1 f1 f1
x ...
x2 xn (5.7.13)
1
f2 f2 f2
...
f '(x) J(x) x1 x2 xn
... ... ... ...
f fn fn
n ...
x1 x2 xn
ε f x J x ε 0
f x p f x p p p p p
(5.7.14)
ε J x f x
p 1 p p
(5.7.15)
Levando (5.7.15) em (5.7.10), e considerando-se que a próxima
aproximação seja a p 1 -ésima, tem-se:
x p1 x p J 1 x p f x p , p 0,1, 2, ,n (5.7.16)
x f x (5.8.1)
Ou de forma aberta
x1 f1 ( x1 , x2 ,..., xn )
x2 f 2 ( x1 , x2 ,..., xn )
xn f n ( x1 , x2 ,..., xn )
os quais são por sua vez algum ponto no espaço euclidiano dado. O
processo iterativo é iniciado com uma aproximação x da raiz ξ , isto é, 0
x x , x ,
0
1
0
2
0
, xn0
ou seja
x n1 f x n , n 0,1,2, (5.8.2)
f x1 f x 2 x1 x 2 (5.8.4)
para todos os elementos x1 , x 2 , tal que x1 x
0
e x2 x
0
, com a
constante de Lipschitz satisfazendo a seguinte relação:
0 1 (5.8.5)
Seja x0
numa vizinhança da raiz ξ , de maneira que a iteração inicial x
0
satisfaça a
f (x(0) ) x(0) (1 ) (5.8.6)
Demonstração:
Provar-se-á (i) por indução. Seja então x
1
f x 0 , então de (5.8.6) e (5.8.2) tem-se
seja:
x (m) x (m+p) x (m) x (m+1) x (m+1) x (m+2) ... x (m+p-1) x(m+p)
fixo, pode-se achar um N tal que x x para todo m N ; p 0 . Veja que, necessita-se que
m m p
N
, então a seqüência x
n
é uma seqüência de Cauchy e tem limite ξ em uma vizinhança V x
0
de x .
0
Assim f x é contínua em V x
0
e a seqüência f x
n
também é de Cauchy e tem um limite f ξ que por (5.8.2)
também é ξ , isto é, ξ f ξ . Logo
x
n 1
f ξ x ξ
ξ f x
n n n
x ξ n
0
Para a parte (iii) que é a prova da unicidade da solução, seja β outra raiz de (5.8.1) na vizinhança V x . Então β e
0
f (β) f (ξ) β ξ β ξ
Isto é uma contradição, logo implica que β ξ . Está provado (iii). Como estão provados (i), (ii). (iii), o teorema está
demonstrado.
Teorema 2: Seja, x f x , com uma raiz x ξ. Sejam os componentes
de f x contínuas e que tenham também a primeira derivada parcial
contínua e satisfazendo a
f i (x )
(5.8.10)
x j n
73
<1 para todos os elementos
x x ξ (5.8.11)
f i ( ( i ) )
x1, j x2, j
n
f i ( x1 ) f i ( x 2 ) (5.8.12)
j 1 x1, j
para i 1,2, , n e onde i é um ponto do segmento aberto que une x1 , x 2 e onde x1, j , x2, j são os
componentes dos elementos x1 , x 2 , respectivamente. Assim satisfaz (5.8.11). Usando (5.8.3) e (5.8.10) tem-
i
se:
n
f i ( ( i ) )
f i ( x1 ) f i ( x 2 ) . x1, j x2, j
j 1 x1, j
(5.8.13)
f i ( ( i ) )
x1 x 2 x1 x 2
x
1, j
Assim, a inequação permanece para i, e tem-se f (x1 ) f (x 2 )
. x1 x 2
e assim prova-se que f x é contínua
0
no domínio (5.8.11) com relação à norma indicada. Note que para qualquer x1 em (5.8.11)
x1(1) ξ f (x1(0) ) f (ξ) . x1(0) ξ .
0
onde x1 também satisfaz a (5.8.11). É óbvio, que por indução, obtém-se:
x1(n) ξ f (x1(n-1) ) f (ξ )
. x1(n-1) ξ
(5.8.14)
...
n . x1(0) ξ n .
n
Logo todos os x1 estão em (5.8.11), o que segue sua convergência (5.8.14) acima, com < 1. A prova da unicidade é
semelhante o que se fez no teorema 1 anterior.
O ponto crucial da demonstração acima é a derivação em (5.8.13). É claro que em (5.8.10) é preciso ser substituído por
um número de condições as quais devem ser, talvez, menos restritivas, mas permanecendo válido o teorema. Uma
dessas condições é:
75
n
max f ij (x) 1, x ξ (5.8.15)
i
j 1
fi x
onde se introduz o elemento fij . Se F x fij x é uma matriz, então (5.8.15) pode ser reescrito como:
xj
F(x)
1 , onde a norma da matriz é induzida pela norma de máximo vetor ou norma uniforme
.
x j j xk k .
n n
1
f i ( x ) f i (ξ )
2 j 1 k 1 x j xk
2
Agora, na iteração (5.8.2), tem-se: x(n) ξ M . x(n-1) ξ onde M é escolhido de maneira que:
2 f i (x) 2.M
max 2 .
i , j ,k x j xk n
Logo a convergência quadrática pode ocorrer na solução do sistema de equações por iteração.
5.8.1 Alguns Esquemas Explícitos de Iteração para Sistemas
Em geral, o sistema a ser resolvido está na forma:
f x 0 (5.8.17)
A x J -1 x (5.8.21)
J x
n
x
n
x
n+1
f x
n
(5.8.23)
x12 x2 2 x32 1
2 x12 x2 2 4. x3 0 (5.8.24)
3x12 4 x2 x32 0
81
Reescrevendo o sistema acima na forma (5.8.19), tem-se:
x12 x2 2 x32 1 0
f (x ) 2 x12 x2 2 4 x34 0
3 x 2 4 x x 2 0
1 2 3
então
0, 25 0, 25 0, 25 1 0, 25
f (x )
(0)
0,5 0, 25 2 1, 25
0,75 2 0, 25 1
o Jacobiano é
2 x1 2 x2 2 x3
J x 4 x1 2 x2 4
6 x 4 2 x3
1
1 1 1
J (x ) 2 1 4 det J ( x (0) ) 40
(0)
3 4 1
A matriz inversa é
15 5 5
1
J 1
x (0)
40 14 2 6
11 1
7
Given
2 2 2
x y z 1 0
2x 4z 0
2 2
y
3x 4y
2 2
z 0
0.785197
Find( x y z) 0.496611
0.369923
f x 0 , então o teorema 2 da seção 5.8 pode ser usado para provar que a
da raiz procurada ξ . 85
Desenvolver-se-á uma condição suficiente, sob a qual o método de
Newton converge, sem que se saiba de antemão o valor de ξ .
Teorema 1: Seja x uma aproximação inicial tal que a matriz jacobiana
(0)
a
J -1 x
0
(5.8.25)
Seja a norma da diferença das duas primeiras iterações pelo método de
Newton, limitada por:
x x
1 0
f x b
J -1 x
0 0
(5.8.26)
n n n+1 n
J x x x f x
Demonstração:
A prova deste teorema requer, por conveniência, uma notação mais enxuta, sucinta. Assim, usar-se-á a notação
J n J x n para as matrizes jacobianas e
An1 I J n1J n1 n 0,1,2, , . Assim
b
x (n+1) x (n)
2n
x (n+1) x (0) 2b
(5.8.31)
1
A n+1 J n ( J n J n+1 )
-1
2
J n+1-1 (I A n+1 ) J n 2n 1.a
1 -1
Da hipótese (5.8.26) segue que (5.8.31)(a) e (5.8.31)(b) são satisfeitas para n=0. Agora, quando (5.8.31)(b) é
estabelecido para quaisquer valores de n , então x
n 1
e x estão dentro da 2b-bola em torno de x na qual é
n 0
assegurada a existência e continuidade das segundas derivadas de f i x . Dessa forma pode-se aplicar o teorema de
Taylor para os componentes de J n1 , para obter:
x j x j k 1 x j .xk
com 0 < i < 1 .
, x(n) estão na 2b-bola, isto é, estão em x x( 0 ) 2b , logo o ponto xn x(n+1) x(n) também está
89
(n+1)
Assim x
inserido nesta bola, o que, aplicando (5.8.27) fornece:
J n+1 J n c. x(n+1) x(n) (5.8.32)
No presente estágio só é válido para n=0. Mas usando (5.8.25), (5.8.26) e (5.8.28) em (5.8.31)(c), com n 0 , tem-se:
1
A1 J 0 -1 . J1 J 0 a.c. x (1) x (0) a.b.c
2
Agora, (5.8.31)(a), (5.8.31)(b) e (5.8.31)(c) foi estabelecido para n 0 . Se para qualquer valor de n a matriz J n for não
singular e obedece a seguinte identidade
J n+1 J n (I J n+1 )
onde, como em (5.8.31)(a), A n+1 J n J n J n-1 . Mas sabe-se que se A n+1 1 então J n 1 é não singular, e
-1
J n -1
J n+1-1 (5.8.33)
1 A n+1
Desde que (c) seja válido para n 0 , pode-se usar este resultado em (5.8.33), o que produz:
J1-1 2a . Assim (5.8.31) tem se verificado para n 0 .
Seja agora fazer uma hipótese de que (5.8.31) é válido para todos n k 1 e proceder à demonstração de também é
válido para n k .
Desde que J k seja não singular, a k 1 -ésima iteração de Newton x
k 1
é unicamente definida e de (5.8.22) da
seção anterior obtém-se:
x(k+1) x(k) J -1k .f x(k) J -1k f x(k) (5.8.34)
Entretanto, desde que (5.8.31)(b) seja válido para n k 1 , o ponto x está na 2b-bola em torno de x . Então pelo
k 0
teorema de Taylor, com o termo do resto e tendo em vista (5.8.22) com n k 1 , tem-se:
f x (k) f x (k-1) Jk 1 x (k) x (k-1) R(x (k) , x (k-1) )
Jk 1 x (k-1) x (k) Jk 1 x (k) x (k-1) R(x (k) , x (k-1) )
R(x (k) , x (k-1) )
usando (5.8.3) pode-se limitar o termo R acima para produzir (5.8.35) a seguir:
f x (k +1) max R( x (k) , x (k-1) )
i
max
n n
x (k )
j x (jk 1) . xi( k ) xi( k 1)
.
2 fi
. x (k-1) i x (k) x (k-1) (5.8.35)
i
j 1 i 1 2! xi x j
c (k)
x x (k-1) com 0<i 1
2
Novamente usar-se-á o fato de que x(k+1) x(k) x(k-1) está dentro da 2b-bola em torno de x ( 0 ) desde que x (k) e
x (k-1) também estejam. Usando (5.8.35) em (5.8.34) e relembrando (5.8.31), que é por hipótese válida para n k 1 ,
tem-se:
c
91
x (k+1) x (k) . J -1k . x (k) x (k-1)
2
2
c b a.b2 .c b
.2k .a k 1 k 1 a.b.c k 1
2 2 2 2
1 b
. k 1
2 2
b
k
2
Desta forma (5.8.31)(a) é estabelecido válido para n k , Então, desde que:
x x( p)
k
x ( k 1) x (0) ( p 1)
p 0
k
x ( p 1) x ( p ) (5.8.36)
p 0
k
1
b. p
p 0 2
2.b
a expressão (5.8.31)(b) também é estabelecida válida para n k . Mas então x (k 1) está em 2b-bola em torno de x ( 0 ) e
(5.8.32) também é válida para n k . Isso fornece:
A k+1 J k-1 J k J k-1
J -1k . J k J k-1
c. J -1k . x (k) x (k-1)
a.b.c
1
2
Isso prova que (5.8.31)(c) é válido para n k e implica que J k 1 é não-singular. Então usando (5.8.33) com n k ,
produz (5.8.31)(d) e assim está completa a prova indutiva de (5.8.31).
A parte (i) do teorema segue de (5.8.31)(b) e (5.8.31)(d). A convergência de x ( n ) segue de (5.8.31)(a) desde que eles
formem uma seqüência de Cauchy, isto é,
n p 1
x (n+p) x (n) x
qn
(q+1)
x (q)
n p 1 n p 1
q
q n
x (q+1) x (q) b.
q n 2q
(5.8.37)
b
2n 1
Lembrando que o limite lim x (n) ξ usa-se (5.8.31)(a), (5.8.35) e a continuidade de f x para deduzir que
n
2
f x (k) . Como no limite f x(k) f ξ 0 , então (5.8.36) ao limite quando p , tem-se:
93
2.b .c
4k
b
ξ x (n) n , e assim a parte (ii) do teorema está estabelecida válida e, por conseguinte, o teorema todo está
2
demonstrado.
1
Este teorema é muito importante. Verifica-se que a condição a.b.c pode
2
1
ser satisfeita apenas se for igual a 1 e se f ξ for uma raiz de ordem
p
p 1 e se p 2. Por exemplo, se f x xp e x
0
0 então:
0
1 f (x ) 0 1
a.b.c 0
. 0
.f ( x ) 1
f (x ) f (x ) p
1
Por outro lado, se h abc , então Kantarovich demonstrou que:
2
2n 1
2h
x (n)
ξ .b (5.8.38)
2n 1
Exercícios
2 y2
x
2
1
3x y 2
0,25 y 2
x
2
1,25
0,25 x y 1,25
x 4 y2 1,4
Mostre que o sistema tem uma e somente uma solução em
4 x2 y 1,6
tal que
xn 1
x
lim
n
(5.9.1)
xn x
Então x n
n 0 converge para x com ordem , com constante assintótica
de erro .
Uma técnica iterativa da forma x n
f x n 1
é dita ser ordem se a
seqüência x n
convergir para a solução x
n 0 f x de ordem .
lim 0, 5
n
xn
lim
zn 1
0, 5
101
n 2
zn
xn 1
zn 1
3 2 4 7 8
n 3
0, 5 0, 5 z 0, 5 zn 1
2n 1 2n
0, 5 x0
zi 0,5 . z1 xi 0,5 . x1
2i 1 2i
; i
i 2 3 10
x1 1
0 0
z1 1 0 0 0 0
1 1 1 1
2 0.25 2 0.125
3 0.125 3 7.813·10-3
x 4 0.063 z 4 3.052·10-5
Vê-se que a seqüência 5 0.031 5 4.657·10 -10
6 0.016 6 0
quadraticamente convergente
(valores z na Figura 5.10)) na sua
7
8
7.813·10 -3
3.906·10 -3
7
8
0
0
103
9 1.953·10 -3 9 0
6ª iteração já convergiu para o 10 9.766·10 -4 10 0
xn f xn 1 , para n 1 (5.9.2)
xn n 0
é definida para todo n 0 e xn a, b . Usando o teorema do Valor Médio e o fato de que
f x q, x a, b se tem, para cada n ,
xn x f xn 1 f x f n . xn 1 x q xn 1 x
onde n a, b . Aplicando a inequação acima indutivamente, se tem
xn x q xn 1 x q2 xn 2 x qn x0 x (5.9.3)
Assim como 0 q 1 ter-se-á que o limite da exponenciação de q é lim qn
n
0 e mais
105
lim xn x lim qn x0 x 0 xn n 0
x
n n
xn x qn max x0 a, b x0
qn
e xn x x1 x0 , n 1
1 q
Demonstração:
Seja x a, b então para o primeiro limite, tira-se de (5.9.3) o seguinte:
xn x qn x0 x qn max x0 a, b x0
Para n 1 , se tem
xn 1 xn f xn f xn 1 q xn xn 1 q2 xn 1 xn 2 qn x1 x0
Agora para m n 1 , se tem
xm xn xm xm 1 xm 1 xn 1 xn
xm xm 1 xm 1 xm 2 xn 1 xn
qm 1
x1 x0 qm 2
x1 x0 q n x1 x0
q n x1 x0 1 q q2 qm n 1
1
Mas a somatória qi é uma serie geométrica com razão q e 0 q 1 ; essa seqüência converge para (como
i 0 1 q
se sabe do estudo das séries), o que leva ao segundo limite
qn
xn x x1 x0
1 q
Assim está demonstrado o corolário.
Exemplos:
a, b
107
1, 2 . De quantas maneiras diferentes se pode representar a
1
10 10 2
(b) x 3
4x 2
10 0 x x 2
4x 0 x f2 x 4x
x x
1
(c) x3 4x2 10 0 4 x2 10 x3 x f3 x 1
2 10 x3 2
1
10 10 2
(d) x 3
4x 2
10 0 x x 2
4 x f4 x
x2 x 4
(e) x3 4 x2 10 0 x3 4 x2 10 0 x f5 x 10 4x2
3
8 1.365230023 12 1.365277209
13 1.36520585
x4 9 1.365230012
x3 14 1.365242384
10 1.365230014 15 1.36522368
16 1.365233256
11 1.365230013 17 1.365228353
12 1.365230013 18 1.365230863
19 1.365229578
13 1.365230013 20 1.365230236
14 1.365230013 21 1.365229899
22 1.365230072
15 1.365230013
23 1.365229984
16 1.365230013 24 1.365230029
25 1.365230006
17 1.365230013
26 1.365230017
18 1.365230013 27 1.365230011
28 1.365230014
19 1.365230013
29 1.365230013
20 1.365230013 30 1.365230014
Resultado 5.4 Caso (c) Resultado 5.5
Caso (d)
mais, a seqüência xn n 0
não é definida nos quando x0 1.5 . Além
disso, não existe intervalo que contenha x 1.365 tal que f2 x 1, uma
vez que f2 x 3.4 . Esta é a razão pela qual ele não converge.
1 1
1
10 2
5
Para a função x f4 x , se tem f4 x de modo que
115
32
x 4 10 x 4
5 5
f4 x 32 32
0.15, x 1, 2 . O limite da magnitude de
10 x 4 10 5
x 0 0.001 3.4
f2 (x) (x 3) (x 1) (x 1)
117
Gráfico de funçoes com raizes multiplas
4
3.67
3.33
3
2.67
2.33
2
1.67
f2 ( x) 1.33
1
f3 ( x) 0.67
0.33
f4 ( x)
0.33 0 0.44 0.88 1.31 1.75 2.19 2.63 3.06 3.5
0.67
1
1.33
1.67
2
2.33
2.67
3
que está representado no gráfico anterior com uma linha na cor marrom.
A determinação de raízes múltiplas é sempre um problema, pois nem
sempre é possível devido a diversas causas como a de que às vezes a
derivada da função também tem um zero (ou raiz) no ponto onde a
função original tem; isso pode levar a uma divisão por zero na fórmula
iterativa do método de Newton-Raphson(vide fórmula (5.4.2)) uma vez
que nela existe a função derivada f x no denominador:
f xn
xn 1 xn , n 0,1, 2,
f xn
Solução:
Pelo Método de Newton-Raphson:
A primeira derivada de f x x4 6x3 12 x 2 10 x 3 é
f x 4 x 3 18x 2 24 x 10 , logo
x 4 6 x 3 12 x 2 10 x 3
xn 1 xn
4 x 3 18 x 2 24 x 10
x 4 6 x 3 12 x 2 10 x 3 4 x 3 18 x 2 24 x 10
xn 1 xn
4 x 3 18 x 2 24 x 102 x 4 6 x 3 12 x 2 10 x 312 x 2 36 x 24
123
Utilizando-se o Excel para a realização dos cálculos iterativos se tem:
Newton-Raphson Newton-Raphson-modificado
Iteração x Erro x Erro
0 - 100,00% -100,00%
1 0,300000 70,00% 1,071429 -7,14%
2 0,514773 48,52% 1,000914 -0,09%
3 0,666632 33,34% 1,000000 0,00%
4 0,772703 22,73% 1,000000 0,00%
5 0,845976 15,40% 1,000000 0,00%
6 0,896122 10,39% 1,000000 0,00%
7 0,930188 6,98% 1,000000 0,00%
8 0,953200 4,68% 1,000000 0,00%
9 0,968682 3,13% 1,000000 0,00%
10 0,979068 2,09% 1,000000 0,00%
11 0,986021 1,40% 1,000000 0,00%
12 0,990670 0,93% 1,000000 0,00%
13 0,993775 0,62% 1,000000 0,00%
14 0,995848 0,42% 1,000000 0,00%
15 0,997231 0,28% 1,000000 0,00%
Tabela 5.5 Sequencia de convergência usando Excel
5.11 Raízes de Polinômios
Equation Section (Next)Vê-se assim que o método modificado tem uma
convergência muito mais rápida que o método de Newton-Raphson.
Quando a equação for um polinômio existem métodos específicos para e
determinar as suas raízes de maneira mais abrangente. Como se sabe os125
polinômios têm a seguinte forma:
fn x a0 a1 x a2 x 2 an x n (5.11.1)
f x1 f x2 a x1 x2
2
b x1 x2 (5.11.5)
131
Fazendo as manipulações algébricas necessárias se tem:
h0 x1 x0 h1 x2 x1
f x1 f x0 f x2 f x1 (5.11.6)
0 1
x1 x0 x2 x1
a 1 0
(5.11.7)
h1 h0
b ah1 1 (5.11.8)
c f x2 (5.11.9)
Para se achar a raiz aplica-se a fórmula quadrática à equação (5.11.2).
Entretanto, devido a um erro de arredondamento em potencial, em vez
de se usar a forma tradicional pode-se usar a forma alternativa1:
2c
x3 x2 (5.11.10)
b b2 4ac
1
Devido a problemas de cancelamento por subtração de valores muito próximos a forma tradicional pode ser trocado por outra,
2
quando b 4ac , similar a (5.11.10). Isso minimiza o cancelamento por subtração que é, em geral, causa de instabilidade ou não
convergência de processo iterativo.
2c
x3 x2 (5.11.11)
b b2 4ac
x3 x2
x3
D b2 4 f x2 d 2
Se b D b D
EntãoE b D
Senão E b D
2 f x2
h
Faça E
p x2 h
Se h erro
Então p é a raiz desejada, mostre-a e finalize o algoritmo
Faça (preparando a próxima iteração):
137
x0 x1
x1 x2
x2 p
h0 x1 x0
h1 x2 x1
f x1 f x0
0
h0
f x2 f x1
1
h1
1 0
d
h0 h1
i i 1
Método Falhou, pois ultrapassou o número de iterações estabelecido a priori.
Exemplo:
% ================================================================
% == DETERMINAÇÃO DE RAIZES DE POLINOMIOS PELO MÉTODO DE MULLER ==
% ================================================================
clc
clear
% =========== DEFINIÇAO DE MENSAGENS E STRINGS ================
mens0 = '--------------------------------------------------';
mens1 = 'Ordem do Polinômio..................: ';
mens2 = 'Tolerância a ser adotada ...........: ';
mens3 = 'Número máximo de iterações..........: ';
mens4 = 'Coeficiente ';
mens5 = 'Aproximação x0 ....................: ';
mens6 = 'Aproximação x1 ....................: ';
mens7 = 'Aproximação x2 ....................: ';
mens8 = 'Polinômio Dado ...........: ';
mens9 = 'Raiz Procurada ...........: ';
mens10 = 'Número de iterações ......: ';
mens11 = 'ERRO - Falha no Número de Iterações ';
mens12 = 'Determinação de Raízes pelo Método de Müller';
mens13 = 'O valor da raiz procurada é ';
mens14 = 'Parabéns o Método Convergiu';
dlgTitle = 'Dados do Problema: Método de Müller';
format1 = ' %+12.8g ';
format2 = ' %+12.8g \n';
disp(mens0);disp(mens12);disp(datestr(now));disp(mens0);
% ===============================
% === ENTRADA DE DADOS GERAIS ===
%================================
prompt={mens1,mens2,mens3,mens5,mens6,mens7};
defp = {'4','0.00001','30','0.5','-0.5','0.0'};
dlgTitle = 'Dados do Problema: Método de Müller';
lineNo = 1;
answer=inputdlg(prompt,dlgTitle,lineNo,defp);
ordem = str2double(answer(1)); % ordem do polinômio
tol = str2double(answer(2)); % tolerancia
nmax = str2double(answer(3)); % número maximo de iterações
x0 = str2double(answer(4)); % aproximação x0
x1 = str2double(answer(5)); % aproximação x1
x2 = str2double(answer(6)); % aproximação x2
disp(mens0);disp(dlgTitle);disp(mens0);
fprintf(strcat(mens1,format2),ordem);
fprintf(strcat(mens2,format2),tol);
fprintf(strcat(mens3,format2),nmax);
fprintf(strcat(mens5,format2),x0);
fprintf(strcat(mens6,format2),x1);
fprintf(strcat(mens7,format2),x2);
disp(mens0);disp(' ');
% =============================================
% === ENTRADA DOS COEFICIENTES DO POLINOMIO ===
%==============================================
coef = [];
% até potencia 8 entrada via prompt, mais de 8 entrada via input
lineNo = 1;
switch ordem
case 2 141
prompt={strcat(mens4,'2'),strcat(mens4,'1'),strcat(mens4,'0')};
defp = {'1','1','1'};
answer=inputdlg(prompt,dlgTitle,lineNo,defp);
a0 = str2double(answer(1)); %a0 = coef. da maior potencia
coef = [coef a0];
a1 = str2double(answer(2)); % a1 = coef de ordem-1
coef = [coef a1];
a2 = str2double(answer(3)); % a2 = coef de ordem-2
coef = [coef a2];
case 3
prompt={strcat(mens4,'3'),strcat(mens4,'2'),strcat(mens4,'1'),...
strcat(mens4,'0')};
defp = {'1','0','-13','-12'};
answer=inputdlg(prompt,dlgTitle,lineNo,defp);
a0 = str2double(answer(1)); % a0 = coef da maior potencia
coef = [coef a0];
a1 = str2double(answer(2)); % a1 = coef de ordem-1
coef = [coef a1];
a2 = str2double(answer(3)); % a2 = coef de ordem-2
coef = [coef a2];
a3 = str2double(answer(4)); % a3 = coef de ordem-3
coef = [coef a3];
case 4
prompt={strcat(mens4,'4'),strcat(mens4,'3'),strcat(mens4,'2'),...
strcat(mens4,'1'),strcat(mens4,'0')};
defp = {'16','-40','5','20','6'};
answer=inputdlg(prompt,dlgTitle,lineNo,defp);
% a0x(n)+a1x(n-1)+...+a7x(n-7)+a8x(n-8)
a0 = str2double(answer(1));% a0 = coef da maior potencia
coef = [coef a0];
a1 = str2double(answer(2)); % a1 = coef de ordem-1
coef = [coef a1];
a2 = str2double(answer(3)); % a2 = coef de ordem-2
coef = [coef a2];
a3 = str2double(answer(4)); % a3 = coef de ordem-3
coef = [coef a3];
a4 = str2double(answer(5)); % a4 = coef de ordem-4
coef = [coef a4];
case 5
prompt={strcat(mens4,'5'),strcat(mens4,'4'),strcat(mens4,'3'),...
strcat(mens4,'2'),strcat(mens4,'1'),strcat(mens4,'0')};
defp = {'1','-3.5','2.75','2.125','-3.875','1.25'};
answer=inputdlg(prompt,dlgTitle,lineNo,defp);
a0 = str2double(answer(1)); % a0 = coef da maior potencia
coef = [coef a0];
a1 = str2double(answer(2)); % a1 = coef de ordem-1
coef = [coef a1];
a2 = str2double(answer(3)); % a2 = coef de ordem-2
coef = [coef a2];
a3 = str2double(answer(4)); % a3 = coef de ordem-3
coef = [coef a3];
a4 = str2double(answer(5)); % a4 = coef de ordem-4
coef = [coef a4];
a5 = str2double(answer(6)); % a5 = coef de ordem-5
coef = [coef a5];
case 6
prompt={strcat(mens4,'6'),strcat(mens4,'5'),strcat(mens4,'4'),...
strcat(mens4,'3'),...
strcat(mens4,'2'),strcat(mens4,'1'),strcat(mens4,'0')};
defp = {'1','1','1','1','1','1','1'};
answer=inputdlg(prompt,dlgTitle,lineNo,defp);
a0 = str2double(answer(1)); % a0 = coef da maior potencia
coef = [coef a0];
a1 = str2double(answer(2)); % a1 = coef de ordem-1
coef = [coef a1];
a2 = str2double(answer(3)); % a2 = coef de ordem-2
coef = [coef a2];
a3 = str2double(answer(4)); % a3 = coef de ordem-3 143
coef = [coef a3];
a4 = str2double(answer(5)); % a4 = coef de ordem-4
coef = [coef a4];
a5 = str2double(answer(6)); % a5 = coef de ordem-5
coef = [coef a5];
a6 = str2double(answer(7)); % a6 = coef de ordem-6
coef = [coef a6];
case 7
prompt={strcat(mens4,'7'),strcat(mens4,'6'),strcat(mens4,'5'),...
strcat(mens4,'4'),strcat(mens4,'3'),strcat(mens4,'2'),...
strcat(mens4,'1'),strcat(mens4,'0')};
defp = {'1','1','1','1','1','1','1','1'};
answer=inputdlg(prompt,dlgTitle,lineNo,defp);
a0 = str2double(answer(1)); % a0 = coef da maior potencia
coef = [coef a0];
a1 = str2double(answer(2)); % a1 = coef de ordem-1
coef = [coef a1];
a2 = str2double(answer(3)); % a2 = coef de ordem-2
coef = [coef a2];
a3 = str2double(answer(4)); % a3 = coef de ordem-3
coef = [coef a3];
a4 = str2double(answer(5)); % a4 = coef de ordem-4
coef = [coef a4];
a5 = str2double(answer(6)); % a5 = coef de ordem-5
coef = [coef a5];
a6 = str2double(answer(7)); % a6 = coef de ordem-6
coef = [coef a6];
a7 = str2double(answer(8)); % a7 = coef de ordem-7
coef = [coef a7];
case 8
prompt={strcat(mens4,'8'),strcat(mens4,'7'),strcat(mens4,'6'),...
strcat(mens4,'5'),strcat(mens4,'4'),strcat(mens4,'3'),...
strcat(mens4,'2'),strcat(mens4,'1'),strcat(mens4,'0')};
defp = {'1','1','1','1','1','1','1','1','1'};
answer=inputdlg(prompt,dlgTitle,lineNo,defp);
%a0x(n)+a1x(n-1)+...+a7x(n-7)+a8x(n-8)
a0 = str2double(answer(1)); % a0 = coef da maior potencia
coef = [coef a0];
a1 = str2double(answer(2)); % a1 = coef de ordem-1
coef = [coef a1];
a2 = str2double(answer(3)); % a2 = coef de ordem-2
coef = [coef a2];
a3 = str2double(answer(4)); % a3 = coef de ordem-3
coef = [coef a3];
a4 = str2double(answer(5)); % a4 = coef de ordem-4
coef = [coef a4];
a5 = str2double(answer(6)); % a5 = coef de ordem-5
coef = [coef a5];
a6 = str2double(answer(7)); % a6 = coef de ordem-6
coef = [coef a6];
a7 = str2double(answer(8)); % a7 = coef de ordem-7
coef = [coef a7];
a8 = str2double(answer(9)); % a8 = coef de ordem-8
coef = [coef a8];
otherwise,
for i=ordem:-1:0
fprintf('Entre com o Coeficiente de X com expoente %3i',i);
z = input(': ');
coef = [coef z];
end
end
disp(mens0);disp(dlgTitle);disp(mens0);
disp(coef);
disp(mens0);disp(' ');
disp('Raizes achadas pela função roots do Matlab')
raizes=roots(coef)
disp(mens0);disp(' ');
% ======================== 145
% === MÉTODO DE MÜLLER ===
%=========================
i = 3;
h0 = x1-x0;
h1 = x2-x1;
d0 = (polyval(coef,x1)-polyval(coef,x0))/h0;
d1 = (polyval(coef,x2)-polyval(coef,x1))/h1;
d = (d1-d0)/(h1+h0);
disp(' Iterações do Método de Müller');
while i<=nmax
b = d1+h1*d;
D = (b^2-4*polyval(coef,x2)*d)^(0.5);
if abs(b-D) < abs(b+D)
E = b + D;
else
E = b - D;
end
h = -2*polyval(coef,x2)/E;
p(i) = x2 + h;
fprintf('i= %3.0i x=%+10.6f%+10.6f p(x)=%+10.6f%+10.6f \n',...
i, real(p(i)),imag(p(i)),...
real(polyval(coef,p(i))),imag(polyval(coef,p(i))));
if abs(h) < tol
disp(mens14);
fprintf(strcat(mens13,format1,format2),real(p(i)),imag(p(i)));
disp(mens0);
break;
end
x0 = x1;
x1 = x2;
x2 = p(i);
h0 = x1 - x0;
h1 = x2 - x1;
d0 = (polyval(coef,x1)-polyval(coef,x0))/h0;
d1 = (polyval(coef,x2)-polyval(coef,x1))/h1;
d = (d1-d0)/(h1+h0);
i = i + 1;
end
if i >= nmax
disp(mens11);
end
f x x5 x4 2 x3 3x 2 x 4
B-
x0 0; x1 1; x2 1.5
149
2.79244417227521 + 2.02302725649223i
2.79244417227521 - 2.02302725649223i
-0.29244417227521 + 0.20156579238817i
-0.29244417227521 - 0.20156579238817i
--------------------------------------------------
Iterações do Método de Müller
i= 3 x= -0.262295 +0.000000 p(x)= +0.557606 +0.000000
i= 4 x= -0.502186 -0.193983 p(x)= +0.596605 +1.273303
i= 5 x= -0.244553 -0.193943 p(x)= +0.092371 -0.240408
i= 6 x= -0.290143 -0.201591 p(x)= +0.001090 -0.012581
i= 7 x= -0.292440 -0.201593 p(x)= -0.000145 -0.000037
i= 8 x= -0.292444 -0.201566 p(x)= +0.000000 -0.000000
i= 9 x= -0.292444 -0.201566 p(x)= +0.000000 -0.000000
Parabéns o Método Convergiu
O valor da raiz procurada é -0.29244417 -0.20156579
Vê-se aqui que a raiz é complexa. A convergência se deu em 7
iterações; lembrar que foi fornecido as 3 primeiras raízes
aproximadas.
` Para o problema B se tem (Figura 5.13):
151
--------------------------------------------------
Determinação de Raízes pelo Método de Müller
06-May-2007 01:47:26
--------------------------------------------------
Dados do Problema: Método de Müller
--------------------------------------------------
Ordem do Polinômio..................: +5
Tolerância a ser adotada ...........: +1e-005
Número máximo de iterações..........: +30
Aproximação x0 ....................: +0
Aproximação x1 ....................: +1
Aproximação x2 ....................: +1.5
--------------------------------------------------
Dados do Problema: Método de Müller
--------------------------------------------------
1 -1 2 -3 1 -4
--------------------------------------------------
Raízes achadas pela função roots do Matlab
raizes =
1.49818998472530
0.26453934038946 + 1.32837491492628i
0.26453934038946 - 1.32837491492628i
-0.51363433275211 + 1.09156217915224i
-0.51363433275211 - 1.09156217915224i
--------------------------------------------------
Iterações do Método de Müller
i= 3 x= +1.497089 +0.000000 p(x)= -0.018928 +0.000000
i= 4 x= +1.498189 +0.000000 p(x)= -0.000015 +0.000000
i= 5 x= +1.498190 +0.000000 p(x)= -0.000000 +0.000000
Parabéns o Método Convergiu
O valor da raiz procurada é +1.49819 +0
--------------------------------------------------
Neste problema a raiz para onde o método convergiu é real e o fez
em apenas 3 iterações.
2
O Método de Bairstow é devido a Leonard Bairstow (1890-1950) matemático nascido em Halifax; coordenou trabalhos de
pesquisas na área aeronáutica, assumindo a cátedra de aviação no Imperial College entre 1920 e 1949.
por um monômio x sendo uma raiz aproximada. Essa divisão reduz
a ordem do polinômio em uma unidade e deixa um resto da divisão se
não for uma exata.
O resto da divisão pode, por tentativas, ser sistematicamente ajustado e
repetido o processo até que o resto se anule e a raiz seja encontrada.
Seja o polinômio
fn x an x n a1 x a0 (5.12.1)
fn 1 x bn x n 1
b2 x b1 (5.12.2)
com um resto R b , onde os coeficientes podem ser calculados pela
0
fn 2 x bn x n 2
b3 x b2 (5.12.4)
com resto
R b1 x b0 (5.12.5)
A relação de recorrência para os termos b , no caso de divisão por uma i
forma quadrática é
bn an
bn 1 an 1 1 n b (5.12.6)
bi ai bi 1 1 bi 2 2 i n 2, ,0
b1 ( 1 , 2 ) b1 ( 1 , 2 )
b1 1 1 , 2 2 b1 1 2
1 2
(5.12.7)
b0 ( 1 , 2 ) b0 ( 1 , 2 )
b0 1 1 , 2 2 b0 1 2
1 2
159
Cuja solução é:
c3b0 c2b1
1
c1c3 c22
(5.12.11)
c2b0 c1b1
2
c1c3 c22
x 2
(5.12.14)
1
161
Exemplo:
for i=1:n
a(n+1-i)=coef(i);
b(i)=0;
c(i)=0;
end
while loop1
if n <= 3 % se função é quadrática = tem 3 coeficientes
loop1 = 0;
break; % sai do loop externo para calcular ultimas raízes
end
while loop2
iter = iter + 1;
b(n) = a(n);
b(n-1) = a(n-1) + r*b(n);
c(n) = b(n);
c(n-1) = b(n-1) + r*b(n);
for i=n-2:-1:1
b(i) = a(i) + r*b(i+1) + s*b(i+2);
c(i) = b(i) + r*c(i+1) + s*c(i+2);
163
end
% cálculo do denominador comum às frações
det = c(3)*c(3)-c(4)*c(2);
if det ~= 0
dr = (-b(2)*c(3)+b(1)*c(4))/det;
ds = (-b(1)*c(3)+b(2)*c(2))/det;
% novas raízes aproximadas
r = r + dr;
s = s + ds;
if r ~= 0
ea1 = abs(dr/r); % erro na raiz r
end
if s ~= 0
ea2 = abs(ds/s); % erro na raiz s
end
else
disp('denominador igual a zero');
r = r + 1;
s = s + 1;
iter = 0;
end
if (ea1 <= tol && ea2 <= tol) || iter >= nmax
loop2 = 0;
break; % sai do loop interno
end
end % fim do loop interno
% ===================================================
% === tolerância atendida = avaliar as raízes ===
% === a partir das aproximações r,s ===
% ===================================================
disc = r^2+4*s;
if disc > 0 % raízes ãr reais
r1 = (r+sqrt(disc))/2;
r2 = (r-sqrt(disc))/2;
i1 = 0;
i2 = 0;
else % raízes são complexas
r1 = r/2;
r2 = r1;
i1 = sqrt(abs(disc))/2;
i2 = -i1;
end
re(n) = r1; % parte real da n-ésima raiz
im(n) = i1; % parte imaginaria da n-ésima raiz
re(n-1) = r2; % parte real da (n-1)-esima raiz
im(n-1) = i2; % parte imaginaria da (n-1)-esima raiz
fprintf('raiz %3.0i= %+10.6f%+10.6f ea1=%+10.6f \nraiz %3.0i= %+10.6f%+10.6f ea2=%+10.6f
\n',...
n-1,re(n),im(n),ea1,n-2,re(n-1),im(n-1),ea2);
% ==========================================
% === redução da função f(n) para f(n-2) ===
% ==========================================
n = n-2;
for i=1:n
a(i) = b(i+2);
165
end
%disp(['aproximações iniciais =' num2str(r) ' e ' num2str(s)]);
ea1=1; ea2=1; loop2=1;
%calcula novas raízes no loop externo com aproximações r,s
end % fim do loop externo
% ===========================================================
% === Apos reduzir o polinômio calculas as ultimas raízes ===
% ===========================================================
f x x5 2 x4 3x 3 4 x2 6x 1
B-
1 1,0; 2 1.0
f x 3x 6 2 x5 4 x4 x3 4 x2 5x 8
C-
1 1,0; 2 1.0
Solução do problema A:
167
Figura 5.14 Exemplo A - Método de Bairstow
--------------------------------------------------
Determinação de Raízes pelo Método de BAIRSTOW
21-May-2007 18:15:19
--------------------------------------------------
Dados do Problema: Método de Bairstow
--------------------------------------------------
Ordem do Polinômio..................: +4
Tolerância a ser adotada ...........: +0.001
Número máximo de iterações..........: +30
Aproximação CHI1....................: -1
Aproximação CHI2....................: -1
--------------------------------------------------
Dados do Problema: Método de Bairstow
--------------------------------------------------
Coeficiente de ordem 4: 2
Coeficiente de ordem 3: -4
Coeficiente de ordem 2: 1
169
Coeficiente de ordem 1: 4
Coeficiente de ordem 0: 3
--------------------------------------------------
Raizes achadas pela função roots do Matlab
Raiz 1= 1.5255+0.95781i
Raiz 2= 1.5255-0.95781i
Raiz 3= -0.52555+0.43138i
Raiz 4= -0.52555-0.43138i
--------------------------------------------------
==== Iterações do Método de BAIRSTOW ====
--------------------------------------------------
raiz 4= -0.525548 +0.431383i ea1= +0.000005
raiz 3= -0.525548 -0.431383i ea2= +0.000005
raiz 2= -0.525548 +0.431383i ea1= +1.000000
raiz 1= -0.525548 -0.431383i ea2= +1.000000
>>
Solução do problema B:
--------------------------------------------------
Determinação de Raízes pelo Método de BAIRSTOW
21-May-2007 18:20:13
--------------------------------------------------
Dados do Problema: Método de Bairstow
--------------------------------------------------
Ordem do Polinômio..................: +5
Tolerância a ser adotada ...........: +0.001
Número máximo de iterações..........: +30
Aproximação CHI1....................: -1
Aproximação CHI2....................: +1
--------------------------------------------------
Dados do Problema: Método de Bairstow
--------------------------------------------------
Coeficiente de ordem 5: 1
Coeficiente de ordem 4: 2
171
Coeficiente de ordem 3: 3
Coeficiente de ordem 2: 4
Coeficiente de ordem 1: 6
Coeficiente de ordem 0: 1
--------------------------------------------------
Raizes achadas pela função roots do Matlab
Raiz 1= 0.384+1.4011i
Raiz 2= 0.384-1.4011i
Raiz 3= -1.2905+0.93121i
Raiz 4= -1.2905-0.93121i
Raiz 5= -0.1871
--------------------------------------------------
==== Iterações do Método de BAIRSTOW ====
--------------------------------------------------
raiz 5= -1.290451 +0.931211i ea1= +0.000232
raiz 4= -1.290451 -0.931211i ea2= +0.000050
raiz 3= +0.383316 +1.401285i ea1= +0.000190
raiz 2= +0.383316 -1.401285i ea2= +0.000161
raiz 1= -0.185274 +0.000000i
--------------------------------------------------
>>
Solução do problema C:
173
Aproximação CHI2....................: -1
--------------------------------------------------
Dados do Problema: Método de Bairstow
--------------------------------------------------
Coeficiente de ordem 6: 3
Coeficiente de ordem 5: -2
Coeficiente de ordem 4: 4
Coeficiente de ordem 3: -1
Coeficiente de ordem 2: 4
Coeficiente de ordem 1: 5
Coeficiente de ordem 0: -8
--------------------------------------------------
Raizes achadas pela função roots do Matlab
Raiz 1= -0.41895+1.2644i
Raiz 2= -0.41895-1.2644i
Raiz 3= -0.97919
Raiz 4= 0.83724+1.0935i
Raiz 5= 0.83724-1.0935i
Raiz 6= 0.80926
--------------------------------------------------
==== Iterações do Método de BAIRSTOW ====
--------------------------------------------------
raiz 6= +0.809261 +0.000000i ea1= +0.000136
raiz 5= -0.979185 +0.000000i ea2= +0.000035
raiz 4= -0.418955 +1.264397i ea1= +0.000243
raiz 3= -0.418955 -1.264397i ea2= +0.000220
raiz 2= +0.837341 +1.093853i ea1= +1.000000
raiz 1= +0.837341 -1.093853i ea2= +1.000000
>>