2013-2 - 05 - Soluções Aproximadas de Equações Algébricas e Transcendentais - 2 A5 Corpo 18 PDF

Você também pode gostar

Você está na página 1de 174

5.

Soluções Aproximadas de Equações Algébricas e


Transcendentais
5.1 Isolamento de Raízes
Equation Chapter 5 Section 1Se uma equação algébrica ou
transcendental for, em geral, complicada, normalmente não se pode
encontrar suas raízes exatas. Assim, são importantes os métodos de 1
aproximação de uma raiz e a estimativa de seu grau de precisão.
Seja então uma equação qualquer f  x  0 , definida e contínua em um
intervalo  a, b , isto é, f  x   C a, b .

Em determinados casos é necessário que se garanta a continuidade,


também, da primeira derivada f   x  e da segunda derivada f   x  . Assim,
precisa-se que a função f  x   0 seja definida em um espaço C2 a, b .
A cada valor de x , onde a função é identicamente nula, denomina-se zero
ou raiz da equação. Assim, se em um determinado x   , a função f  x  for
nula,  é uma raiz dela.
Assumir-se-á que as raízes de f  x  são isoladas, isto é, para cada raiz de
f  x  existe uma vizinhança V  , r  em que não existe nenhuma outra raiz.

Teorema 1: Se uma função contínua y  f  x assume valores opostos


em sinal nos pontos extremos de um intervalo a, b , isto é, se f  a   f b  0 ,
então no intervalo existirá no mínimo uma raiz da equação f  x   0 .

Teorema 2: Seja  uma raiz exata e x uma raiz aproximada da equação


f  x   0 , ambas localizadas em algum intervalo  a, b e seja f   x   m  0 para

a  x b. Então a seguinte estimativa permanece verdadeira:


f  x 
x  
m

(Prove como exercício. Sugestão: Use o teorema do valor médio)


Seqüências de Sturm
O isolamento das raízes é importante, como já se viu acima. Outro
procedimento de fazer isso é pelo estabelecimento de seqüências de
Sturm. Seja então a equação a ser resolvida f  x   0 diferenciável no 3 0

segmento a, b . Então as funções contínuas

f 0  x  , f1  x  , , fm  x  (5.1.1)

formam uma seqüência de Sturm fk


m
k 0
sobre a, b se elas satisfazem as
seguintes condições:
f0  x  , tem pelo menos uma raiz em a, b ; (5.1.2)
fm  x  , não se anula em a, b ; (5.1.3)
se f k    0  f k 1    f k 1    0,   a, b ; (5.1.4)
se f    0  f     f    0,
0 0 1    a, b ; (5.1.5)
Teorema 3: O número de zeros de em a, b é igual à diferença f0  x 

entre o número de variações de sinal em  f  a  , f  a  , , f  a  e em 0 1 m

 f b , f b , , f b sabendo-se que


0 1 m f0  a   f0  b  0 e  f  x , f  x ,
0 1 , f m  x  forma
uma seqüência de Sturm em a, b .
Demonstração
O número de variações de sinais pode mudar quando x varia de a até b por meio de alguma função que muda o sinal
sobre o intervalo. Por (5.1.3) a função não pode ser f m  x  . Assumindo que em algum    a, b   f k    0 para
algum k em 0  k  m . Numa vizinhança de  , o sinal precisa ser qualquer dos seguintes:
x f k 1 fk f k 1 ou x f k 1 fk f k 1
  +  -   -  +
 + 0 -  - 0 +
  +  -   -  +
Os sinais na linha x   seguem de (5.1.4) Os sinais na primeira e última coluna advêm da continuidade devido a que 
ser suficientemente pequeno. A possibilidade de sinal na coluna central é genérica. Vê-se que dessas tabelas que x
passa através de  sem mudança de sinal. Examinando agora a variação de f 0  x  próximo da raiz x   :

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

Continuando este procedimento até o fim (quando o polinômio


encontrado tiver grau menor que o seu predecessor):
f 0  x   q1  x  f1  x   f 2  x 
f1  x   q2  x  f 2  x   f 3  x 
(5.1.7)
f m 2  x   qm 1  x  f m 1  x   f m  x 
f m 1  x   qm  x  f m  x 
Este procedimento é conhecido como algoritmo Euclidiano para
determinação do máximo divisor comum, f  x  entre f  x  e f  x  .
m 0 1

EXERCÍCIOS

1. Isole as raízes da equação f  x   x 4


 4x  1  0
7
2. Uma aproximação de uma das raízes da equação f  x  x  x 1 é
4

  1,22 . Estime o erro absoluto desta raiz.


5.2 Método da Divisão em Duas Partes ou da Bisseção

Equation Section (Next)Seja a equação f  x   0 onde f  x  é contínua em


C  a, b e f  a  f  b   0 . Para achar a raiz da função dada, existente no
intervalo a, b , divide-se o intervalo ao meio. Se f   a  b 2  , então    a  b 2
é a raiz procurada. Se f  a  b 2   0 , então se escolhe um novo intervalo,
ou a,  a  b  2 ou  a  b  2, b de modo que o produto dos valores da função
calculado nos extremos do novo intervalo seja menor que zero. Procede-
se assim, continuamente, até que se ache a raiz procurada, com um erro
estabelecido. Ou seja, tem-se a seqüência infinita de intervalos:

a, b , a1, b1  , , an , bn  , (5.2.1)

de modo que:
ba
f  an  f  bn   0, n  1, 2,   bn  an   (5.2.2)
2n

Isso garante que   lim a n


n  lim bn
n
que é o que se procura.

Algoritmo da Divisão em Duas Partes ou da Bisseção


Entrar com os pontos extremos a, b 9
Entrar com a tolerância TOL
Entrar com o número máximo de iterações N
i 1
FA = f a 
Enquanto i  N faça
p  a  b  a  / 2 % ponto médio

FP = f  p % valor da função no ponto p

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

A equação f  x   x  4 x  10  0 tem raízes em 1, 2 uma vez que f 1  5 e


3 2

f  2   14 . Usando o algoritmo acima se escreveu o seguinte programa em

Matlab, para solucionar o problema:


% Método da Divisão em 2 Partes - Bisecção
%
clear; clc;
disp(' =========== Raízes pelo Método da Divisão ===========');
% função f a ser determinada a raiz
f = @(x) x^3+4*x^2-10;
%
a = input('Entre com o extremo esquerdo = ');
b = input('Entre com o extremo direito = ');
TOL = input('Entre com a tolerância = ');
N = input('Entre com o número máximo de iterações = ');
fprintf('\n n= an= bn= pn= fpn=');
i=1;
FA=f(a);
while i<=N
p = a + (b-a)/2;
FP = f(p);
fprintf('\n %2.0i %11.8f %11.8f %11.8f %11.8f',i,a,b,FP,(b-a)/2);

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

executando o programa acima, obtém-se os seguinte resultado:


Função Polinomial do 3 Grau
15

10

Eixo dos Y
5

-5
1 1.2 1.4 1.6 1.8 2
Eixo dos X

Figura 5.1 Função Polinomial de 3° Grau


13

Figura 5.2 Método da Divisão para determinação de raiz entre 1 e 2


EXERCÍCIOS:

1. Determine a raiz da equação abaixo pelo método da divisão, no


intervalo indicado com precisão de 10 : 5

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. f  x   x  1  2sin( x)  0 , nos intervalos 0;0, 5 e 0, 5;1 .

2. Uma calha de comprimento L tem sua seção transversal na forma


de um semicírculo de raio r . Quando cheia de água até uma
distancia h do topo, o volume V de água é dado por:
h 1/ 2
V L 0,5 r 2 r 2 arcsin h r2 h2 . Supondo que L  5m , r  0,50m ache
r

a profundidade h quando:
a. V  0, 20m , e
3

b. V  1, 40m com precisão de 10 e de 10 respectivamente.


3 3 5

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

conforme seja a situação em que o produto dos valores da função nos


extremos seja menor que zero, encontra-se x , e assim sucessivamente.2

Seja a corda existente entre o ponto A  a, f  a   e B  b, f  b   , cuja equação


(reta que passa por dois pontos):
xa

y  f (a ) 17
b  a f (b)  f ( a )

Considerando que em x  x1 , y  0 , pois é o ponto onde a corda corta o eixo


dos x , tem-se:
f (a )
x1  a  .(b  a ) (5.3.3)
f ( b)  f ( a )
Dependendo de que f  a   0 ou f  b  0 , o ponto contrário ficará fixo, assim
poder-se-á ter uma das seguintes fórmulas válidas (que são
completamente equivalentes):
f ( xn )
xn 1  xn  .( xn  a ), n  0,1,2, (5.3.4)
f ( xn )  f (a )

ou
f ( xn )
xn 1  xn  .(b  xn ), n  0,1,2, (5.3.5)
f (b)  f ( xn )

Comparando o método das cordas com o da bisseção pode-se verificar


xn xn
que no primeiro método o erro n
1
decresce mais rapidamente
xn

que no segundo, mostrando que o esquema do método das cordas é


mais eficiente que o da bisseção.
Abaixo se apresenta o algoritmo das cordas desenvolvido em linguagem
em Matlab:

Algoritmo das Cordas

% Método das Cordas ou da Falsa-Posição


%
19
clear;
clc;
%
% função f a ser determinada a raiz (pode ser substituída pela
% função que o leitor quiser, sempre na mesma sintaxe)
%
f = @(x) x^3+4*x^2-10;
%
TOL=0; N=0; a=0; b=0;
neg = 1;
while neg==1
disp(' ========== Raízes pelo Método das Cordas ==========');
a = input('Entre com o extremo esquerdo = ');
b = input('Entre com o extremo direito = ');
TOL = input('Entre com a tolerância = ');
N = input('Entre com o número máximo de iterações = ');
x0 = input('Entre com o valor inicial das iterações = ');
if (f(a)*f(b) < 0 && x0 < b && x0 > a && TOL < 0.01)
neg = 0;
else
clc;
disp('Erro: Verifique limites ou valor inicial');
disp('----- Entre com os dados novamente -----');
end
end
%
fprintf('\n n= x(n)= x(n+1)= erro');
i=1;
x=linspace(1,2,100);
for k=1:100
y(k)=f(x(k));
end
h = figure(1); plot(x,y);grid on; axis on;hold on;
xlabel('Eixo dos X');
ylabel('Eixo dos Y');
title('Função Polinomial do 3 Grau');
%
fa = f(a); % valor da função no ponto a
fb = f(b); % valor da função no ponto b
x(1) = 1.2;
if fa < 0
while i<=N-1
x(i+1) = x(i)-(f(x(i))/(f(x(i))-fa))*(x(i)-a); % formula iterativa
fp = f(x(i+1)); % valor da função no ponto x(n+1)
erro = abs((x(i+1)-x(i)));
fprintf('\n %2.0i %15.10f %15.10f %15.10f',i,x(i),x(i+1),erro);
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
else % f(b) < 0
while i<=N-1
x(i+1) = x(i)-(f(x(i))/(fb-f(x(i))))*(b-x(i)); % formula iterativa

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

Figura 5.3 Metodo das Cordas determinação raiz [1 e 2].


EXERCÍCIOS

1. Determine a raiz da equação abaixo pelo método das cordas e


método da bisseção, com erro da ordem de 10 : 5

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. f x 0.5x 2 2.5x 4.5 , no intervalo [0, 10].


2. Ache a menor raiz positiva da função x 2 cos x 5 usando os métodos
das cordas e da bisseção. Para localizar a região onde se encontra a
raiz, plot a função no intervalo de 0 a 5. Realiza os cálculos até que o
xn xn
erro n
1
seja menor que 1%. Cheque sua resposta final
xn

substituindo na função original.


gm
3. A velocidade v de um pára-quedista caindo é dada por v 1 e cm t

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

contínuas e preservem o sinal em a, b .

Seja   xn  hn (5.4.1)

uma raiz de f  x , onde hn é uma quantidade


Figura 5.4 Método Newton-Raphson
pequena. Aplicando o desenvolvimento de
Taylor, usando os dois primeiros termos, tem-se:
0  f    f  xn  hn   f  xn   hn f   x 

Donde se pode determinar h : n

f  xn 
hn  
f   xn 

que substituindo em (5.4.1), encontra-se:


27
f  xn 
xn 1  xn  , n  0,1, 2, (5.4.2)
f   xn 

e onde uma boa aproximação para x0 é aquela para qual a inequação


abaixo é satisfeita:
f  x0  f   x0   0
Se vê assm que este método requer que f  x   0 tenha uma solução  e
mais, que sua derivada primeira seja contínua na vizinhança de  e não
seja singular em  .

EXERCÍCIOS

1. Determine a raiz da equação abaixo pelo método de Newton:


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. f  x   x 4
 3x 2  75x  10000  0 , no intervalo [-100, -10]

d. f  x   tan  x   x  0 , no intervalo [/2, 3/2]


Outra forma de apresentação deste método, com uma pequena variação,
é o conhecido como “Método de Newton Modificado”, que será visto a
seguir.
Se a derivada varia lentamente em um intervalo a, b , então a
f  x

fórmula do Método de Newton-Raphson Modificado é:

xn 1 xn
f ( xn )
(5.4.3) 29
f '( xn )

Pode-se fazer
f '( xn ) f '( x0 ) (5.4.4)

Assim o processo de aproximação, dar-se-á pela fórmula:


f ( xn )
xn 1 xn (5.4.5)
f '( x0 )
Este método tem uma vantagem sobre o Método de Newton-Raphson
Simples, pois se evita nele o cálculo de f   x  em cada aproximação. n

EXERCÍCIOS

1. Determine a raiz da equação abaixo pelo Método de Newton-


Raphson Modificado:
a. f  x   x 4
 2x2  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. f  x   x 4
 3x 2  75x  10000  0 , no intervalo [-100, -10]

d. f  x   tan  x   x  0 , no intervalo [/2, 3/2]


Usando o Mathcad para solucionar as raízes de polinômios, através do
uso do menu Simbolics / Variable / Solve vê-se abaixo alguns exemplos:

3x 17. 2 x 3x


4 3 2
x 60. 5
h a s so l u ti o n (s)
1. 84464298797634823253. 5421915825432999264i
1. 84464298797634823253. 5421915825432999264i
. 344642987976348232451. 9168634105775423629i
. 344642987976348232551. 9168634105775423629i

x
3
5x
2
4x
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

Figura 5.5 Determinação de Raízes pelo MathCad


Outra forma de solução de raízes no Mathcad é a seguinte, onde se usa o
menu Simbolics / Polinomial Coeficientes e logo depois a função
“polyroots”:
2x
4 2
p ( x) x x 1

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

Figura 5.6 Raizes pelo MathCad usando polyroots


5.5 Método da Iteração
Equation Section (Next)Um dos métodos mais importante para a solução
numérica de equações é o método das aproximações sucessivas ou
método da iteração,
Essencialmente, o método consiste no seguinte. Seja uma equação
y  f  x  0 (5.5.1)

com f  x contínua em C2 a, b e deseja-se determinar suas raízes reais.


Troca-se a equação (5.5.1) como posta por outra equivalente, da forma:
x    x (5.5.2)

De alguma maneira, escolhe-se uma aproximação inicial x0 para o valor


da raiz desejada e faz-se:
x1    x0 
(5.5.3)
xn    xn 1 

Se esta seqüência é convergente, então existe um limite   lim xn .


n
Levando
esta hipótese em (5.5.3) obtém-se:

n n
 n

  lim xn  lim   xn1    lim xn1    
35
ou seja,
     (5.5.4)

Assim, o limite  é a raiz procurada de (5.5.2) e pode ser calculada pela


fórmula iterativa (5.5.3).
Teorema 1: Seja a função   x definida e diferenciável no segmento
a, b com todos os valores   x   a, b . Então se existir uma fração própria q ,
tal que:
x q 1 (5.5.5)

para a  x  b, então:
o processo de iteração xn xn 1 , converge, qualquer que seja o valor
inicial x0  a, b ;

o valor limite   lim x é a raiz da equação


n
n x x no intervalo a, b .

a sucessão satisfaz a xn 1 xn qn x1 x0

Demonstração:
Sejam duas aproximações sucessivas
xn    xn1  e xn1    xn 
Então xn1  xn    xn     xn1 
Aplicando o teorema do valor médio, tem-se:
xn1  xn   xn  xn _1     (1)
xn 1  xn
Onde    xn 1 , xn  . Mas    x   q  1 e    x  
xn  xn 1
Logo xn1  xn  q xn  xn1 (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  xn1   (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 Sn1  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.

Nota: Este teorema permanece válido se a função   x  estiver definida e


for diferenciável num intervalo infinito  ,   .

Teorema 2: Seja o segmento a, b no qual    x   a, b , isto é,    x  existe e


satisfaz a desigualdade: x 1. Seja a seqüência x1 , x2 , x3 , definida por
xn 1 xn , x0 a, b . Se

x1 x1 x0 a, b
1
Então o teorema 1 acima permanece válido.

5.5.1 Estimativa de uma aproximação.


Da terceira conclusão do teorema 1 da seção anterior se tem:
xn  p  xn  xn  p  xn  p 1  xn  p 1  xn  p 2   xn 1  xn 
 q n  p 1 x1  x0  q n  p 2 x1  x0   q n x1  x0  39
 q n x1  x0 1  q  q 2   q p 1 

O último termo do produto acima é uma progressão geométrica, cuja


1 qp
soma é , logo se tem:
1 q

 1  q p   qn 
xn  p  xn  qn x1  x0    x1  x0
 1 q  1 q 

Permitindo, na expressão acima, que no limite p vá para o infinito, então:


lim xn  p  xn    xn
p

logo
 qn 
  xn    x1  x0 (5.5.6)
1 q 

donde se conclui que o processo de iteração converge o mais rápido


quanto menor for q. Então como   x   , tem-se
n

qn
x1 x0 (5.5.7)
(1 q)

ou se considerar o erro na n-ésima iteração tem-se


qn
 xn  xn 1 (5.5.8)
(1  q)
Teorema 2: Seja a função   x definida e diferenciável em algum
intervalo a, b e a equação

x    x (5.5.9)

Ter uma raiz  localizada em um pequeno intervalo  ,   , onde:



41
1
  a  3  b  a 

  b  1  b  a 
 3

 a     x   q  1 a  x  b

No caso, se  então:
 b  x0   ,  

1. todas as aproximações sucessivas permanecem no intervalo  a, b :


xn    xn1    a, b , n  1
2. o processo de aproximações sucessivas é convergente, isto é, o
limite de x existe: lim x   e  é a única raiz de (5.5.9) no intervalo
n
n
n

 a, b .

qn
3. a estimativa   xn  x1  x0 é válida.
(1  q)

Exemplo

Seja achar a raiz da equação x sin x 0,25 , com três dígitos


significantes, no intervalo [1,1; 1,3].
Solução:
Escrevendo-se a equação dada como x sin x 0,25 , então:
  x   sin  x   0,25 e sua derivada    x   cos  x  e então, pelo teorema 1,
precisa-se ter, para o valor inicial a condição:
 x  q  1 então cos  x0   q  1

Tomando-se qo menor possível como, por exemplo, seja q 0,5 ,

então: 43
x  arccos  0,5  x  60º  1,05rad

Seja então a equação de iteração:


xn  sin  xn1   0,25
x(n+1) x(n) erro
1,0500000
1,1174232 1,1174232 0,0674232
1,1489748 1,1489748 0,0315516
1,1623447 1,1623447 0,0133699
1,1677369 1,1677369 0,0053922
1,1698653 1,1698653 0,0021284
1,1706980 1,1706980 0,0008327
1,1710227 1,1710227 0,0003247
1,1711491 1,1711491 0,0001264
1,1711983 1,1711983 0,0000492
1,1712175 1,1712175 0,0000191

Tabela 5.1 Dados iteração x=sin(x)+0.25

Analisando a tabela acima, vê-se que o valor 1,171 tem os dígitos


significativos pedidos, pois na 7ª e 8ª iteração coincidem três dígitos
significativos; assim,
4
1,171 1,26 10
EXERCÍCIOS

Achar as raízes das equações abaixo pelo método da iteração.


1. x3 x 1000 0

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

Seja  x , y  uma primeira aproximação de uma raiz de (5.6.1) obtida de


0 0

alguma forma (graficamente ou por tentativas).


Mostra-se a seguir um processo iterativo o qual sob certas condições,
permite melhorar o valor da aproximação da raiz. Para fazer isso, (5.6.1)
deve ser reescrita da seguinte forma:
x  1  x, y 
(5.6.2)
y   2  x, y 

E se constrói as aproximações sucessivas de acordo com o seguinte


esquema:
x1  1  x0 , y0  ; y1   2  x0 , y0 
x2  1  x1 , y1  ; y1   2  x1 , y1 
(5.6.3) 47
xn 1  1  xn , yn  ; yn 1   2  xn , yn 

Se o processo de iteração acima converge, isto é, se os limites abaixo


existem:
  lim xn ;   lim yn
n n

então, assume-se que   x, y  e   x, y  sejam contínuos, tem-se


1 2
  1  x, y  ;   2  x, y 

Teorema 1: Em uma região fechada na vizinhança de uma raiz  , 


do sistema (5.6.2), se as funções   x, y  e   x, y  forem definidas e
1 2

continuamente diferenciável em  , a aproximação inicial x0 , y0 e todas as


aproximações que se sucedem x , y , n 1,2, permanecem em
n n , e as
seguintes desigualdades forem válidas em :
 1 2
 x  x  q1  1


 1  2  q  1
 y y
2

então o processo de aproximações sucessivas (5.6.3) converge para as


raízes do sistema (5.6.2), isto é,
lim xn   e lim yn  
n  n
Exemplo

Sejam
f1 ( x, y )  2 x 2  xy  5x  1  0
f 2 ( x, y )  x  3log( x )  y 2  0

Ache a raiz positiva próxima de x0 , y0 3,5; 2,2 para 4 dígitos49


significativos.
Solução
Para aplicar o método iterativo do “teorema 2” acima, se devem
reescrever as equações dadas da seguinte forma:
x( y  5)  1
x  1 ( x, y ) 
2
y   2 ( x, y )  x  3log( x )

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

Que gera a região 3,4 x 3,6 ; 2,1 y 2,3

Substituindo esses valores nas expressões das derivadas parciais,


51
obtêm-se, colocando no numerador os x e y de maior valor e no
denominador os x e y de menor valor, de modo a que a expressão
seja a maior possível, obtém-se:
1 2.3 5
0,54
x 3.4(2.1 5) 1
4
2
1 3,6
  0, 27
y 3, 4(2,1  5)  1
4
2

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

satisfazendo a condição (2) do “teorema 1” acima.


Seja agora construir as aproximações sucessivas pelas fórmulas:
x n (yn 5) 1
xn 1
2
yn 1 xn 3. log(x n ) (5.6.4)
n 0,1, 2,...

-
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

Tabela 5.2 Iteração pra Eqs 5.6.4


Logo x 3,487 e y 2, 261 , nos quais a casa decimal já se repete a
n n

partir da 6ª iteração, logo, para quatro dígitos significativos, a


solução é:
  3, 4873
  2, 2615

Outra forma de resolver o problema exposto é utilizar a ferramenta


de computação Mathcad, que utiliza o método de Levenberg-
Marquardt que é um método quasi-Newton (uma variação do
método do gradiente).
Veja como é fácil a solução do sistema de equações dadas, no
Mathcad (Figura 5.7):
x 3.5 y 2.2

Given

2x x y 5x
2
1 0
3  log( x)
2
x y 0
3.487
Find( x y ) 
2.262

Figura 5.7 Solução Eqs.5.6.4 pelo MathCad


55
Ou seja, com poucas definições, obtém-se a solução desejada.
Uma maneira de acelerar o processo iterativo é fazer na construção
do esquema de aproximações sucessivas uma alteração, utilizando
sempre os resultados mais recentes da iteração imediatamente
anterior. Este processo é conhecido como processo de Seidel:
xn 1  1  xn , yn 
yn 1   2  xn 1 , yn  , n  0,1, 2,

Aplicando este processo ao exemplo anterior, tem-se:


n Xn Yn
- 3,500000 2,200000
1,000000 3,478505 2,258912
2,000000 3,482109 2,258912
3,000000 3,483986 2,260008
4,000000 3,485238 2,260579
5,000000 3,486032 2,260959
6,000000 3,486541 2,261200
7,000000 3,486866 2,261355
8,000000 3,487074 2,261454
9,000000 3,487207 2,261517
10,000000 3,487292 2,261557
11,000000 3,487346 2,261583

Tabela 5.3 Solução das Eqs 5.6.4 usando o processo de Seidel

Logo x 3,487 e y 2, 261 , nos quais a casa decimal já se repete a


n n

partir da 8ª iteração, logo, para 4 dígitos significativos, a solução é


  3, 4873
  2, 2615

5.7 Método de Newton-Raphson para Sistemas de Equações


5.7.1 Método de Newton-Raphson para Sistemas de Duas Equações
Equation Section (Next)Seja x , y uma raiz aproximada do sistema de57
n n

equações:
 f1  x, y   0
 (5.7.1)
 f 2  x, y   0

onde f1 x, y e f 2 x, y são funções continuamente diferenciáveis. Colocando


x xn hn
(5.7.2)
y yn kn
tem-se
 f1  xn  hn , yn  kn   0

 (5.7.3)
 f 2  xn  hn , yn  kn   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

Então de (5.7.4) tem-se


f1 f1
f1 f1
1 y 1 x
hn   e kn  
J ( xn , yn ) f 2 J ( xn , yn ) f 2
f2 f2
y xn , yn
x xn , yn

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

Seja o sistema de equações


 f1 ( x, y )  2 x 3  y 2  1  0
 (5.7.7)
 f 2 ( x, y )  xy  y  4  0
3

Ache a raiz próxima de x0 , y0 1.2;1.7 .

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

Continuando a fazer os cálculos da iteratividade tem-se:


n J hn kn xn yn
0 1,200000 1,700000
1 97,954760 0,034876 (0,039020) 1,234876 1,660980
2 99,585918 (0,000602) 0,000547 1,234275 1,661526
3 99,539742 (0,000000) 0,000000 1,234274 1,661526
4 99,539730 (0,000000) 0,000000 1,234274 1,661526
5 99,539730 0,000000 0,000000 1,234274 1,661526
6 99,539730 0,000000 (0,000000) 1,234274 1,661526
7 99,539730 0,000000 (0,000000) 1,234274 1,661526

Tabela 5.4 Iteração para raizes das Eqs. 5.7.7

Ver-se assim que a raiz procurada é:


xn 1, 234274
yn 1,661526

A solução deste problema em Mathcad:


x 1.2 y 1.7

Given

2x
3 2
y 1 0

x y
3
y 4 0

1.234274
Find( x y ) 
1.661526

Figura 5.8 Solução das Eqs 5.7.7 pelo MathCas 63


Observamos que a função Find(x,y,…) do Mathcad (Figura 5.8) pode
resolver até 50 equações simultâneas.

5.7.2 Método de Newton-Raphson para Sistemas de n Equações Não-Lineares


Seja o sistema de equações não-lineares:
f1 x1.x2 , , xn 0
f 2 x1.x2 , , xn 0
(5.7.8)
f n x1.x2 , , xn 0

ou de uma forma compacta:


f x 0 (5.7.9)

Seja x a p-ésima aproximação de (5.7.9), pelo método das aproximações


p

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)

Sob a hipótese de que a função f x é continuamente diferenciável em


algum domínio convexo contendo x e x , pode-se expandir o lado p

esquerdo de (5.7.11) em potência do pequeno vetor ε , retendo apenas


65 p

seus termos lineares:

      
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 

ou ainda de uma forma mais compacta:


fi
f x J x , i, j 1, 2, ,n
xj

Reescrevendo-se (5.7.12) tem-se:

     ε    f  x    J  x    ε    0
f x p  f  x p p p p p
(5.7.14)

ou ainda, se a matriz jacobiana for não-singular,

 ε     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 p1  x p   J 1 x p  f x  p  ,  p  0,1, 2, ,n (5.7.16)

e é conhecido como Método de Newton-Raphson, que é análogo àquele


método apresentado no item 5.4.
EXERCÍCIOS
67
Determine uma aproximação ( erro 10 3
) da solução positiva do
seguinte sistema de equações:
f1  x, y   x  3log10  x   y 2
f 2  x, y   2 x 2  xy  5x  1

pelo Método de Newton , tomando como solução inicial x 3,4 e


y 2,2 .
5.8 Interação Funcional para Sistemas de Equações
Equation Section (Next)Seja um espaço vetorial ou euclidiano
completo. Seja x  um vetor coluna n-dimensional com componentes
x .x , , x e f  x  : 
1 2 n uma função vetorial n-dimensional, isto é, com
componentes f  x  , f  x  ,
1 2 , fn x . Então o sistema a ser resolvido é:

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 )

A solução ou raiz de (5.8.1) é algum vetor ξ com componentes 1 , 2, , n

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
, xn0 
ou seja

 
x n1  f x n  , n  0,1,2, (5.8.2)

Para análise, pode-se usar uma norma qualquer dentre as seguintes:


x 
 max xi
1i  n
69
n
x 1   xi
i 1
(5.8.3)
ou
n
x2 x
2
i
i 1

Teorema 1: Seja f x satisfazendo a

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)

Então todas as iterações (5.8.2) satisfazem a


x( n ) x(0) (5.8.7)

as iterações convergem para algum vetor:


ξ lim x
n
n
(5.8.8)
onde ξ é a raiz de (5.8.1). Logo é a única raiz de (5.8.1) em x x(0) .

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

f  x (0)   x (0)  (1   )   x (1)  x (0)  (1   ) 


(5.8.9)
x (n+1)  x (n)   x (n)  x (n-1)   2 x (n-1)  x (n-2) ...   n x(1)  x(0)   n (1   ) 
Então aplicando recursivamente
71
x (n+1)  x (0)   x (n+1)  x (n)    x (n)  x (n-1)   ...   x(1)  x(0) 

 x (n+1)  x (n)  x (n)  x (n-1)  ...  x (1)  x (0) 


 ( n   n 1  ...    1)(1   )   (1   n )   
visto que  < 1 . Logo (i) está demonstrado.
Para provar (ii) deve-se provar que a seqüência x     é de Cauchy. Assim, para inteiros positivos e arbitrários m e p ,
n

seja:
x (m)  x (m+p)   x (m)  x (m+1)    x (m+1)  x (m+2)   ...   x (m+p-1)  x(m+p)  

 x (m)  x (m+1)  x (m+1)  x (m+2)  ...  x (m+p-1)  x(m+p)  .


 ( m   m1  ...   m p1 )(1   )   (1   p ) m 
Tem-se usado aqui as inequações (5.8.9), as quais são válidas, pois (i) foi provado. Agora dado   0 , com   0,1

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

ξ estão ambas em V x     , assim como (5.8.4) é verdadeiro, tem-se


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)

Então para qualquer x satisfazendo (5.8.11), todas as iterações


0
x
n
de
(5.8.2) também satisfazem a (5.8.11).
Para qualquer x satisfazendo (5.8.11) as iterações de (5.8.2) convergem
0

para uma raiz ξ de (5.8.1) a qual é única em (5.8.11).


Demonstração:
Para quaisquer dois elementos x1 , x 2  e satisfazendo a (5.8.11), pelo teorema de Taylor (desenvolvimento de
funções em série) tem-se:

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 
.

Se a função f  x  é tal que a raiz


f i (ξ )
F(ξ )   0, i, j  1, 2,..., n (5.8.16)
x j
e essas derivadas são contínuas próximas à raiz, então (5.8.10) bem como (5.8.15) pode ser satisfeita para algum  > 0 .
 2 fi (x )
Se, além disso, as derivadas segundas dos componentes de f  x  em relação aos componentes de x : existem
x j xk
na vizinhança da raiz. Novamente pelo teorema de Taylor, tem-se:
 f i ( )
2 (i )

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

Tal sistema pode ser representado na forma estudada (5.8.1) do item


anterior, de diversas maneiras. Aqui será escolhida a seguinte forma:
g x  x  A x f x (5.8.18) 77
onde A x é uma matriz quadrada de n-ésima ordem com componentes
aij x . As equações (5.8.1) e (5.8.17) terão as mesmas soluções, se A x for
não singular, isto é, se
A x f x  0  f x  0
Uma escolha simples para A x é uma matriz constante, A x A, não
singular. Seja então a matriz
fi (x)
J(x)
xj

cujo determinante é o jacobiano das funções fi x ; então de (5.8.18),


considerando as definições anteriores, tem-se:
fi (x)
g(x ) I A.J (x ) (5.8.19)
xj

Pelo segundo teorema da seção anterior, ou pela sua modificação onde


(5.8.15) substitui (5.8.10) as iterações usando:
x(n+1)  x(n)  Af (x(n) ) (5.8.20)
converge, para um x suficientemente próximo de ξ , se os elementos da
n

matriz (5.8.19) forem suficientemente pequenos, por exemplo, quando


no caso de J ξ ser não singular e A ser aproximadamente igual à inversa
de J ξ . Este procedimento é análogo ao Método das Cordas e ele sugere
uma alteração natural, a qual, novamente, é denominada de Método de
Newton.
79
No método de Newton, a matriz A x é substituída por:

A  x   J -1  x  (5.8.21)

onde se assume a hipótese de J x 0 para x em x ξ . O uso desse


procedimento é interessante, pois não se necessita calcular uma inversa
a cada iteração; e melhor ainda, um sistema linear de ordem n tem que
ser resolvido. Para ver isso, e ao mesmo tempo ganhar algum
discernimento do método, note que usando (5.8.21) em (5.8.18) as
iterações do Método de Newton são:
x
n+1
g x
n
x
n
J -1 x
n
f x
n
(5.8.22)

onde g x 0 é dado. Daí tira-se:

J x
n
x
n
x
n+1
f x
n
(5.8.23)

e requer que f x tenha duas derivadas e J x seja não singular em ξ para


que o método tenha convergência quadrática.
Exemplo

Solucionar o sistema abaixo usando o método de Newton para


determinar uma raiz positiva próxima de x x ,x ,x 0,5;0,5;0,5 :
0
1
0
2
0
3
0

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 

usando (5.8.22), obtém-se a primeira aproximação:


x (1)  x (0)  J -1 ( x (0) )f ( x (0) ) 
 3 1 1 
0, 5  8 8 8   0, 25 
  7 3   
 0, 5   1 1, 25 
20 20 20  
0, 5    1 
  11 7  
40 
1
 40 40 
x (1)  [0,875; 0, 500; 0, 375]

Procedendo de maneira semelhante para as demais iterações,


encontra-se: 83
0,78981
(2)
x 0, 49662
0,36993
0,78521
(3)
x 0, 49662
0,36992

Usando-se agora o Mathcad:

Sejam x = x1, y = x2 e z= x3, tem-se:


x 0.5 y 0.5 z 0.5

Given
2 2 2
x y z 1 0
2x 4z 0
2 2
y

3x 4y
2 2
z 0

0.785197
Find( x y  z)  0.496611
0.369923

Figura 5.9 Solução das Eqs 5.8.24 pelo Mathcad.


5.8.2 Observações Gerais sobre a Convergência do Método de
Newton
Se a iteração inicial x é suficientemente fechada em torno da raiz ξ de
(0)

f x 0 , então o teorema 2 da seção 5.8 pode ser usado para provar que a

iteração x definida em (5.8.22) converge para a raiz. Entretanto não se


(n)

sabe de antemão se uma dada iteração inicial x está bastante próxima


(0)

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)

J x tem uma inversa com norma limitada por:


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

Sejam os componentes de f x terem segundas derivadas contínuas e que


satisfaçam a:
n
 2 fi (x ) c

k 1 x j xk

n
(5.8.27)

para todos os elementos x x x


0
2b, i, j 1,2, ,n .

Se as constantes a, b, c são tais que


1
a.b.c (5.8.28)
2
Então as iterações de Newton ((5.8.22) e (5.8.23)) da seção 5.8.1 e
repetidas abaixo:
n+1 n n n n
x g x x J -1 x f x

n n n+1 n
J x x x f x

são unicamente definidas e permanecem na “ bola” em torno de x (0) ,


87
denominado de “2b-bola” :
0
x x 2b

as iterações convergem para algum ξ lim x


n
n
para o qual f ξ 0 e mais
2b
x
n
ξ (5.8.29)
2n
OBS: Todas as normas vetoriais deste teorema são normas máximas ║.║
e as normas das matrizes são aquelas induzidas pela norma máxima, isto
é:
n
A max
i
aij (5.8.30)
j 1

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
An1  I  J n1J n1  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 n1 , para obter:

f i (x (n+1) ) f i (x (n) ) n f i x (n)  i  x (n+1)  x (n) 


    xk ( n 1)
 xk 
(n)

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 xn    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
qn
(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

isto é, tem convergência quadrática.


5.8.3 Método de Newton-Raphson Modificado
Um inconveniente essencial na formação do processo de Newton-
Raphson
x(n+1) x(n) J -1 x(n) f x(n)

é a necessidade de calcular a matriz inversa J -1 x (n) para cada iteração. Se


a matriz J -1 x é contínua na vizinhança da solução desejada ξ e a95
aproximação inicial x é suficientemente próxima de ξ (muitas vezes se
0

diz fechada em torno de ξ ), então se pode fazer a seguinte aproximação:


J -1 x(n) J -1 x(0)

Assim, chega-se ao processo de Newton-Raphson modificado:


x(n+1)  x(n)  J -1  x(0)  f  x(n)  (5.8.39)
para n 0,1,2, .
Este processo é conseqüência direta do resultado do último teorema da
seção anterior.

Exercícios

Ache a solução dos sistemas não-lineares abaixo e discuta sua


convergência:
1 2 1
x y
 4 16
1 1
sin x y
3 2

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

x 0,1 e y 0,1 . Ache a solução com precisão de 10 4


. Prove que o
resultado obtido está dentro da precisão requerida.
x 0,9 y 0,1z 1
97
Considere a solução do sistema linear: 0,4 x y 0,4 z 0 pelo seguinte
0,8 x 0,1 y z 0
xn 1 0 0,9 0,1 xn 1

processo de iteração: yn 0 0, 4 0 0, 4 yn 1 e mostre que esta


zn 0 0,8 0,1 0 zn 1

iteração converge para a única solução do sistema, para qualquer


conjunto arbitrário de valores iniciais.
5.9 Análises de Erro para Métodos Iterativos
Equation Section (Next)Nesta seção se investigará a ordem de
convergência dos esquemas iterativos de Newton. Para isso e necessário
que se tenha uma medida de quão rapidamente uma seqüência
converge.

Seja x uma seqüência que converge para x ,


Definição 1:
99
n n
n 0

com x x para todo e qualquer n . Se existirem constantes positivas


n
,

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 .

Em geral, uma seqüência com uma ordem de convergência mais alta


converge mais rapidamente que uma com ordem de convergência mais
baixa. A constante assintótica afeta a velocidade de convergência, mas
não é tão importante quanto à ordem. Dois casos de ordem merecem
atenção:

 Se (e ), a seqüência é linearmente convergente;


 Se , a seqüência é quadraticamente convergente.
Para ver essa diferença entre a ordem de convergência, seja o seguinte
exemplo: `
Exemplo:
Supondo que xn n 0 seja linearmente convergente para 0 (zero) com
xn 1

lim 0, 5
n
xn

Seja também a seqüência zn n 0 quadraticamente convergente para


0 (zero) com

lim
zn 1

0, 5
101
n 2
zn

xn 1
zn 1

Por simplicidade, sejam 0, 5 e 2


0, 5
xn zn

Para o esquema que é linearmente convergente isto significa que


2 n
xn 1
0 xn 0,5 x n 1
0,5 xn 2
0,5 x0
Enquanto no esquema que é quadraticamente convergente se tem
2 2 2 3 4
zn 1
0 zn 0, 5 z n 1
0, 5 0, 5 z n 2
0, 5 x n 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

As tabelas a seguir ilustram a velocidade relativa de convergência


das seqüências para zero, quando x z 1 (feitas em Mathcad). 0 0

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

resultado, enquanto a Figura 5.10 Sequencias de convergência


linearmente convergente
(valores x na Figura 5.10) com 10 iterações chega apenas próxima ao
valor obtido na 4ª iteração da seqüência anterior. Entretanto é bom
salientar que muitas técnicas de convergência são apenas lineares.
O teorema 1 apresentado na seção 5.5 acima será reapresentado a seguir
e dado uma demonstração similar (porém não igual `aquela já
apresentada) como forma de obter alguns resultados intermediários
necessários para fundamentar a análise de erro que se quer realizar:
Teorema 1: Seja f C a, b tal que f x a, b , x a, b . Seja, em adição, f
contínua sobre a, b e que uma constante positiva q 1 existe de modo
que
f x q, x a, b

Se f x 0, então para qualquer número inicial x0 em a, b , a seqüência.

xn f xn 1 , para n 1 (5.9.2)

converge sempre linearmente para x em a, b .


Demonstração (veja demonstração similar na seção 5.5):
Por hipótese existe um, e apenas um ponto x , raiz em a, b . Dessa forma f mapeia a, b nele mesmo e a seqüência

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

E o teorema está provado.

Corolário: Se f satisfaz as hipóteses do teorema 1 acima, então os


limites do erro envolvido no uso de x para aproximar x é dado por 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

Mas do teorema 1 acima se tem que lim xm x logo,


m
m n 1
x xn lim xm xn lim qn x1 x0 qi qn x 1 x0 qi
m m
i 0 i 0

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:

1 - Seja a equação x 4 x 10 0 ; ela tem uma raiz no segmento


3 2

a, b
107
1, 2 . De quantas maneiras diferentes se pode representar a

equação de ponto fixo na forma x f x usando apenas


manipulações algébricas. A partir das formas encontradas fazer um
estudo sobre a solução das funções para verificar se elas são
realmente soluções da equação original.
Solução:
As formas de recorrência que podem ser encontradas são:
(a) x3 4x2 10 0 x f1 x x x3 4x2 10

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

Tomar-se-á como ponto inicial x 1,5 que é o ponto médio do 0

intervalo onde se sabe conter uma raiz.


Fazendo um procedimento em Mathcad para se estudar o resultado
de cada função, se tem: como se vê as funções dos casos (a), (b) e
(e) não atendem a equação original, enquanto as funções dos casos
(c) e (d) convergem para o valor da raiz, cujo valor é 1,365230013.
Os resultados obtidos pelo procedimento Mathcad acima, para os
casos (a), (b) e (e) são respectivamente:
 1.5 
  0.875 
 6.732421875 
 
 469.720012002 
x1 
 8 
 1.027545552 10 
109
 24 
 1.084933871 10 
 72 
 1.277055591 10 
 2.082712909 1021 6 
 

Resultado 15.1 Caso (a)


 1.5 
 
 0.816496581 
 2.996908806 
 
x2   2.941235061i 
 2.753622388  2.753622388i
 
 1.814991519 3.53452879i 
 2.384265848  3.434388064i
 
 2.1827719  3.596879228i 

Resultado 5.2 Caso (b)


 1.5 
 
 1 
 1.817120593 
 
 0.737397496 1.277209928i
x5 
 2.497908941  0.406090203i
 
 1.629663175 1.951899706i
 2.897699627  1.05712025i 
 
 2.312403297 2.130274605i

Resultado 25.3 Caso (e) 111

Para os casos (c) e (d) se tem as seguintes seqüências de


convergência:
0 0
0 1.5
0 1.5 1 1.286953768
1 1.348399725 2 1.402540804
3 1.345458374
2 1.367376372
4 1.375170253
3 1.364957015 5 1.360094193
6 1.367846968
4 1.365264748
7 1.363887004
5 1.365225594 8 1.365916733
9 1.364878217
6 1.365230576
10 1.365410061
7 1.365229942 11 1.365137821

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)

Vê-se assim, que a função f converge mais lentamente (30


3

iterações foram necessárias) que a função f (que necessitou de


4

apenas 11 iterações para convergência.)


113
2 - Faça estudo das 5 funções encontradas no exemplo acima, à luz
do teorema 1 e seu corolário.
Solução:
Para x f 1 x x x3 4x2 como se tem que f 1 6, f 2
10 1 1 12 é

óbvio que f1 não mapeia o intervalo 1, 2 nele mesmo. Além do mais


f1 x 1 3x 2 8x f1 x 1, x 1, 2 . Pelo teorema 1, isso garante que o
método falha e a convergência não acontecem.
1
10 2

Com x f2 x 4x pode-se ver que f2 não mapeia 1, 2 em 1, 2 e


x

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

Para a função x f x 10 x a sua derivada f x


3
1
2 x 10 x 3
02
3
3
4
2 3 2

em 1, 2 . Isso mostra que f é estritamente decrescente em 1, 2 .


3

Entretanto f 2 2.12 e falha a condição f x q 1 sobre o intervalo


3 3

. Entretanto examinando a função mais de perto, vê-se que a


1, 2

seqüência x iniciando com x 1.5 pode ser considerada no


n n 0 0

intervalo 1,1.5 em vez de 1, 2 . Sobre este novo intervalo f3 x 0 e


que f3 é
estritamente decrescente em 1,1.5 ; e mais
1 1.28 f 1.5 3f x f 1 1.5 para todo e qualquer x pertencente a
3 3

1,1.5 . Isso mostra que f mapeia 1,1.5 em 1,1.5 e neste intervalo se


3

tem f x f 1.5 0.66 1 que confirma a convergência da função.


3 3

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

f4 x é muito menor que o limite achado para f3 x , o que explica a


rápida convergência de f . 4
5.10 Raízes Múltiplas
1

Equation Section (Next)Para a função x f 5 x 10 4x2 vê-se que ela não


3

mapeia 1, 2 em 1, 2 e mais, a seqüência xn n 0


não é definida nos
quando x0 1.5 . Esta é a razão para sua não convergência.

Uma raiz múltipla corresponde a um ponto onde uma função é tangente


ao eixo dos x . Por exemplo, uma raiz dupla resultante de
f2 x (x 3) x 1 x 1 (5.10.1)

ou multiplicando os termos: f x x 5x 7 x 3 . Essa função tem uma raiz


2
3 2

dupla devido a que o valor x 1 zerar dois termos na equação (5.10.1).


Fazendo o gráfico se tem a Figura 5.11 abaixo, onde se pode ver que as
curvas tocam tangencialmente o eixo dos x na raiz dupla, sem cortá-lo.

x  0  0.001 3.4
f2 (x)  (x  3) (x  1) (x  1)

f3 (x)  (x  3) (x  1) (x  1) (x  1)

f4 (x)  (x  3) (x  1) (x  1) (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

Figura 5.11 Gráficos das Funções f2, f3 e f4


Similarmente uma raiz tripla corresponde ao caso em que um valor de x
anula 3 termos em uma equação como a f 3 x ( x 3) x 1 x 1 ( x 1) , que na
forma expandida é:
f x x4 6x3 12 x 2 10 x 3 (5.10.2)
Vê-se no gráfico acima que esta função está representada por um traço
na cor azul e nota-se que ela corta o eixo dos x , sendo tangente no119
ponto; além disso, vê-se também que ela muda de concavidade na raiz
múltipla.
Em geral as funções com um número impar de raízes múltiplas, corta o
eixo dos x , o nem sempre é verdade no caso de um número par de raízes
múltiplas como se pode verificar na função f x ( x 3) x 1 x 1 ( x 1)( x 1)
4

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 

Para contornar esse problema define-se uma nova função u x , que é a


razão entre a função e sua derivada:
f x
u x (5.10.3)
f x
Pode-se mostrar que esta função tem as mesmas raízes da função
original. Substituindo (5.10.3) na expressão da formula de Newton-
Raphson se tem:
u  xn 
xn 1  xn  , n  0,1, 2, (5.10.4)
u  xn 

Calculando a derivada da função u se tem:


x
121
f x f x f x f x
u x 2 (5.10.5)
f x

Levando (5.10.3) e (5.10.5) em (5.10.4) e simplificando se obtém:


f xn f xn
xn 1 xn 2
(5.10.6)
f xn f xn f xn
Exemplo:

Calcular a raiz x 1 da equação (5.10.2) pelo método de Newton-


Raphson como pelo método modificado, tomando como valor inicial
x 0.
0

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

Pelo método modificado:


Aqui há necessidade da derivada segunda, isto é,
f x 12 x 2 36 x 24 , logo

 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  102   x 4  6 x 3  12 x 2  10 x  312 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)

Os coeficientes a , a podem ser reais ou complexos, mas nosso estudo


0 n

neste livro resume-se aos coeficientes reais.


Um polinômio de n -ésima ordem tem n raízes reais ou complexas e mais,
elas não são necessariamente distintas. As raízes complexas sempre
aparecem em pares conjugados, isto é, se uma é p qj outra é p qj onde
j 1.

Teorema: Se a bj for um raiz complexa de multiplicidade m de um


polinômio com coeficientes reais, então a bj também é uma raiz de

multiplicidade m do mesmo polinômio e mais, o polinômio tem um fator


igual a x 2ax a b .
2 2 2 m

O software MATLAB trás embutido em si uma série de funções que


auxiliam a determinação de raízes de polinômios e outras características
dos polinômios:

poly p =poly(A) - quando A for uma matriz n n retorna


um vetor p linha com n 1 elementos,
p =poly(v)
que são os coeficientes do polinômio
característico, ordenados em ordem
decrescente;
- quando v é um vetor com as raízes de
um polinômio retorna um vetor linha
com os coeficientes do polinômio
procurado cujas raízes estão em v. 127
roots R=roots(p) - retorna um vetor coluna com as raízes
do polinômio cujos coeficientes estão
no vetor p.
polyv Y=polyval(p,x - retorna o valor do polinômio de grau
al ) n no ponto x. p é um vetor contendo os
n+1 coeficientes de um polinômio de
grau n; x é o ponto onde se quer avaliar
o valor do polinômio;
poly k=polyder(p) - retorna a derivada do polinômio p;
der
k=polyder(a, - retorna a derivada do produto dos
b) polinômios a e b;
[q,d]=polyde - retorna o numerador q e o
r(b,a) denominador d da derivada da divisão
do polinômio b/a;
- a, b e p são vetores contendo os
coeficientes de polinômios
deco [q,r]=deconv - retorna o polinômio quociente dos
polinômios u por v bem como o
nv (u,v) polinômio resto da referida divisão

Tabela 5.6 Funções Matlab para determinação de raízes de Polinômios

No entanto, é muito importante sabermos os algoritmos para a


determinação de raízes. Para se determinar as raízes de um polinômio,
quer sejam elas reais ou complexas, apresentar-se-á a seguir alguns
129
métodos entre os quais se destacam o método de Müller e o método de
Bairstow.
5.11.1 Método de Müller
O método de Müller consiste de determinar os coeficientes de uma
parábola que liga três pontos. Esses pontos podem ser substituídos em
uma fórmula quadrática para obter o ponto onde a parábola intercepta o
eixo dos x , isto é a raiz estimada. O procedimento é facilitado escrevendo
a equação da parábola numa forma conveniente
f2 x a x x2
2
b x x2 c (5.11.2)

O que se quer é que esta parábola intercepte três pontos x0 , f x0 ,


x1 , f x1 e x2 , f x2 . Os coeficientes de (5.11.2) podem ser determinados
substituindo cada ponto na equação dada:
2
f x0 a x0 x2 b x0 x2 c
f x1 a x1 x2
2
b x1 x2 c (5.11.3)
2
f x2 a x2 x2 b x2 x2 c
Por concisão retirou-se o índice 2 da função. Agora se tem 3 equações e 3
incógnitas. Vê-se que da 3ª equação de (5.11.3) se tem c f x ; levando 2

esse resultado as demais equações, se tem:


f x0 f x2 a x0 x2
2
b x0 x2 (5.11.4)

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

Substituindo (5.11.6) em (5.11.4) e (5.11.5) se tem


2
h0 h1 b h0 h1 a h0 0 h1 1
2
h1b ha
1 h1 1
Resolvendo para os coeficientes a e b encontra-se:

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

Isolando o valor de se tem:


133
x3

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

Verifica-se que por esta formulação tanto as raízes reais quanto as


complexas podem ser encontradas; isto é o grande benefício deste
método.
O erro pode ser calculado ente as estimativas anteriores, x2 , e atual , x :
3

x3 x2
x3

O problema agora é que a expressão (5.11.11) produz dois valores


correspondentes ao sinal existente no denominador. No método de
Müller o sinal é escolhido de modo a concordar com o sinal do
coeficiente b . Essa escolha ira produzir um denominador maior levando a
uma raiz estimada mais próxima de x . 2
Uma vez determinado o valor de x o processo se repete. Os próximos
3

valores a serem considerados para a determinação de x deve seguir a


4

uma das políticas a seguir:


se apenas raízes reais serão localizadas, escolhe x3 e dois outros pontos
mais próximos dele;
se raízes reais e complexas podem ser localizadas escolhe-se x3 , x2 , x1 para135
substituir x , x , x .
2 1 0
Algoritmo do Método de Muller
Algoritmo do Método de Muller para solucionar f x 0 dadas as
aproximações x , x , x : 0 1 2

São conhecidos a priori as aproximações da raiz procurada x0 , x1 , x2 , o erro ou tolerância


desejada e o número de iterações máximas desejadas.
Fazer
h0 x1 x0
h1 x2 x1
f x1 f x0
0
h0
f x2 f x1
1
h1
1 0
d
h0 h1
i 3
Enquanto i N fazer
b 1 h1d
1

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:

Fazer um programa em Matlab que encontre uma raiz de um


polinômio dado, conhecidos as aproximações iniciais x , x , x , o 3 2 1

número de iterações e o erro tolerado. Mostrar passo a passo os


valores no decorrer do desenvolvimento do algoritmo.
Solução: 139
O programa em Matlab é o seguinte (seguindo o algoritmo supra
estabelecido):

% ================================================================
% == 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

Utilizando esse programa achar raízes dos seguintes polinômios com


suas raízes tentativas dadas:
f x x4 5x3 8.75 x 2 6.25 x 1.5
A-
x0 0; x1 0.25; x2 0.7

f x x5 x4 2 x3 3x 2 x 4
B-
x0 0; x1 1; x2 1.5

Executando o programa se tem para o exemplo A os seguintes dados


que são fornecidos nas telas de entrada do programa (Figura 5.12):
147
--------------------------------------------------
Determinação de Raízes pelo Método de Müller
--------------------------------------------------
Dados do Problema: Método de Müller
--------------------------------------------------
Ordem do Polinômio..................: +4
Tolerância a ser adotada ...........: +1e-005
Número máximo de iterações..........: +30
Aproximação x0 ....................: +0
Aproximação x1 ....................: +0.25
Aproximação x2 ....................: +0.7
--------------------------------------------------
Dados do Problema: Método de Müller
--------------------------------------------------
1.00000000000000 -5.00000000000000 8.75000000000000 6.25000000000000 1.50000000000000
--------------------------------------------------
Raízes achadas pela função roots do Matlab
raizes =

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

Figura 5.13 Telas com dados do Polinômio (Exemplo B) raizes


pelo Método de Muller.

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

5.11.2 Método de Bairstow


Equation Section (Next)O método de Bairstow2 é um método iterativo.
Esse método é baseado no procedimento de divisão do polinômio dado153

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)

Dividindo-o por um monômio x produz outro polinômio de ordem


n 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

seguinte regra de recorrência


bn an
bi ai bi i n 1, ,0
(5.12.3)
1

Notar que se for uma raiz o resto b0 0.

Para permitir que se determinem raízes complexas (que sempre155


aparecem aos pares), o método de Bairstow faz a divisão polinomial por
fatores quadráticos do tipo x x . Se essa divisão é feita no
1 2

polinômio (5.12.1) o resultado é um novo polinômio de ordem n 2

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

Se x 1 x 2 for um divisor exato do polinômio, as raízes complexas


podem ser determinadas pela fórmula quadrática. Assim o método se
resume a determinar os valores de , que fazem o fator quadrático um 1 2

divisor exato, ou seja, o resto seja nulo.


Examinando (5.12.5) se pode ver que para R 0 precisa que b , b sejam 1 0

nulos. Como é improvável que os valores tentativos iniciais , levem a 1 2

esse resultado, precisa-se determinar uma maneira sistemática de


modificar os valores tentativos para que se tenha R 0 . Para isso o
método de Bairstow usa a estratégia de desenvolver os termos b1 , b0 em
série de Taylor, visto que ambos são funções de , : 1 2

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

Onde os termos do lado direito são avaliados em , . Como os termos de157 1 2

segunda ordem em diante do desenvolvimento de Taylor foram


desprezados, subtende-se que , são bem próximos das raízes
1 2

procuradas. As alterações , necessitam melhorar os valores


1 2

tentativos originais tornando-os mais próximos possíveis das raízes


procuradas; isso pode estimado fazendo os lados direitos das expressões
de (5.12.7) iguais a zero:
b1 ( 1 , 2 ) b1 ( 1 , 2 )
1 2 b1
1 2
(5.12.8)
b0 ( 1 , 2 ) b0 ( 1 , 2 )
1 2 b0
1 2

Se as derivadas parciais acima podem ser determinadas, este sistema de


2 equações a 2 incógnitas pode ser resolvido simultaneamente. Bairstow
mostrou que essas derivadas parciais podem ser obtidas por uma divisão
sintética dos b 's de uma maneira similar como eles foram determinados.
Assim
cn bn
cn 1 bn 1 cn 1 (5.12.9)
ci bi ci 1 1 ci 2 2 i n 2, ,1
b0 b0 b1 b1
onde c1 , c2 , c3 . Como se ver, as derivadas parciais
1 2 1 2

podem ser obtidas por divisão sintética de b 's . Substituindo as derivadas


parciais em (5.12.8) se tem:
c2 c3 b1
1 2
(5.12.10)
c1 1 c2 2 b0

159
Cuja solução é:
c3b0 c2b1
1
c1c3 c22
(5.12.11)
c2b0 c1b1
2
c1c3 c22

Com esses valores podem-se encontrar os erros aproximados em cada


estimativa:
1
1
1
(5.12.12)
2
2
2

Enquanto ambos os erros estimados forem menores que o erro pré-


estabelecido, os valores das raízes podem ser determinados por:
4
x 1 1 2
(5.12.13)
2

Neste ponto, existem três possibilidades:


O quociente é um polinômio de grau igual o maior que 3. Neste caso, o
método de Bairstow deve ser aplicado ao quociente para avaliar novos
valores de , . Os valores prévios de , servirão como valores iniciais
1 2 1 2

para o cálculo das novas aproximações;


O quociente é quadrático. Neste caso as raízes finais serão calculadas por
(5.12.13).
O quociente é um polinômio de primeira ordem: neste caso a raiz
restante é uma raiz simples e pode ser calculada por

x 2
(5.12.14)
1
161

Exemplo:

Fazer um programa em Matlab que encontre uma raiz de um


polinômio dado, conhecidos as aproximações iniciais , , o número
1 2

de iterações e o erro tolerado. Mostrar passo a passo os valores no


decorrer do desenvolvimento do algoritmo.
Solução:
O programa em Matlab é o seguinte (seguindo o algoritmo supra
estabelecido, será mostrada apenas a parte do algoritmo, ficando a
parte de entrada de dados – similar a do algoritmo de Muller-
omitida):
% =======================================================
% === MÉTODO DE BAIRSTOW ===
% =======================================================
r=x0; s=x1; n=ordem+1;
ier=0; ea1=1; ea2=1;

for i=1:n
a(n+1-i)=coef(i);
b(i)=0;
c(i)=0;
end

loop1 = 1; loop2 = 1; iter = 0;


disp(' ==== Iterações do Método de BAIRSTOW ====');
disp(mens0);

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 ===
% ===========================================================

if n == 3 % função é quadrática = tem 2 raízes


%r = -a(2)/a(3);
%s = -a(1)/a(3);
disc = r^2+4*s;
if disc > 0
r1 = (r+sqrt(disc));2;
r2 = (r-sqrt(disc))/2;
i1 = 0;
i2 = 0;
else
r1 = r/2;
r2 = r1;
i1 = sqrt(abs(disc))/2;
i2 = -i1;
end
re(n) = r1;
im(n) = i1;
re(n-1) = r2;
im(n-1) = i2;
fprintf('raiz %3.0i= %+10.6f%+10.6f ea1=%+10.6 \nraiz %3.0i= %+10.6f%+10.6f ea2=%+10.6
\n',...
n-1,re(n),im(n),ea1,n-2,re(n-1),im(n-1),ea2);
else % função é linear = tem 1 raiz
re(n) = -a(1)/a(2); %?
im(n) = 0;
fprintf('raiz %3.0i= %+10.6f%+10.6f \n',1,re(n),im(n));
disp(mens0);
end

Utilizando esse programa achar raízes dos seguintes polinômios com


suas raízes tentativas dadas:
f x 2 x4 4 x3 x2 4x 3
A-
1 1.0; 2 1.0

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:

Figura 5.15 Exemplo B - Método de Bairstow

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

Figura 5.16 Exemplo C - Método de Bairstow


--------------------------------------------------
Determinação de Raízes pelo Método de BAIRSTOW
21-May-2007 18:24:43
--------------------------------------------------
Dados do Problema: Método de Bairstow
--------------------------------------------------
Ordem do Polinômio..................: +6
Tolerância a ser adotada ...........: +0.001
Número máximo de iterações..........: +30
Aproximação CHI1....................: -1

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

Você também pode gostar