Você está na página 1de 19

Cálculo Numérico

Prof. Aparecido J. de Souza


aparecidosouza@ci.ufpb.br

Soluções de Sistemas Algébricos Não Lineares


O Método de Newton
Sistemas Algébricos Não Lineares
Objetivo. Aproximar uma solução x ∗ de um sistema da forma


f1 (x1 , x2 , . . . , xn ) = 0 ,

f2 (x1 , x2 , . . . , xn ) = 0 ,

..


 .

fn (x1 , x2 , . . . , xn ) = 0 .

em que pelo menos uma das funções fi é não linear.
Forma vetorial do sistema não linear: F(x) = 0
   
x1 f1 (x1 , x2 , · · · , xn )
 x2  f2 (x1 , x2 , · · · , xn )
x =  . , F (x) =  .
   
..
 ..   . 
xn fn (x1 , x2 , · · · , xn )
Hipótese Geral: Existe uma região limitada R do Rn tal que o
sistema possui uma única solução x ∗ em R.
Sistemas Algébricos Não Lineares


f1 (x1 , x2 , . . . , xn ) = 0 ,

f2 (x1 , x2 , . . . , xn ) = 0 ,

Sistema não linear: ..


 .

fn (x1 , x2 , . . . , xn ) = 0 .

Exemplo 1. (Burden-Faires, Exemplo 1, pg. 631.)



3x1 − cos(x2 x3 ) − 1/2 = 0 ,

x12 − 81(x2 + 0.1)2 + sen(x3 ) + 1.06 = 0 ,

+ 20x3 + 10π−3
 −x1 x2
e 3 =0

f1 (x1 , x2 , x3 ) = 3x1 − cos(x2 x3 ) − 1/2;

f2 (x1 , x2 , x3 ) = x12 − 81(x2 + 0.1)2 + sen(x3 ) + 1.06;

f3 (x1 , x2 , x3 ) = e−x1 x2 + 20x3 + 10π−3


3 .
Método Iterativo Baseado em Ponto Fixo
Ideia. Dada uma aproximação inicial x (0) , construir uma
sequência de aproximações sucessivas da forma
 (k +1)   (k ) (k ) (k )

x1 g1 (x1 , x2 , . . . , xn )
 (k +1)  
x2  g (x (k ) , x2(k ) , . . . , xn(k ) )

 . = 2 1 .. .
 .  
 .   .


(k +1) (k ) (k ) (k )
xn gn (x1 , x2 , . . . , xn )

tal que  (k +1)   


x x∗
 1(k +1)   1∗ 
x2  x2 
lim  . = . .
k →∞  ..    .. 

xn
(k +1) xn∗
Critérios de Parada
Norma do Máximo. Dado x = (x1 , x2 , . . . , xn )T ∈ Rn , então
||x||∞ = max |xi | e ||F (x)||∞ = max |fi (x)|.
1≤i≤n 1≤i≤n

Critérios de Parada: Dada uma tolerância TOL > 0 e um


número máximo de iterações N para a sequencia
x (k +1) = G(x (k ) ) pode-se impor:
(i) ||F x (k +1) ||∞ < TOL, ou


(ii) ||x (k +1) − x (k ) ||∞ < TOL, ou

||x (k +1) − x (k ) ||∞


(iii) < TOL, ou
max{1, ||x (k ) ||∞ }
(iv) k > N (excesso de iterações - sem convergência).
Método de Newton para Sistemas Não Lineares
Ideia. Linearizar cada equação em torno da iterada x (k ) para
obter x (k +1) .
 ∂ f1 (k )   (k )

f1 (x) ≈ L1 (x) = f1 x (k ) + x × x1 − x1 +
∂ x1
∂ f1 (k )   (k )
 ∂ f1 (k )   (k )

x × x2 − x2 +···+ x × xn − xn ,
∂ x2 ∂ xn
 ∂ f2 (k )   (k )

f2 (x) ≈ L2 (x) = f2 x (k ) + x × x1 − x1 +
∂ x1
∂ f2 (k )   (k )
 ∂ f2 (k )   (k )

x × x2 − x2 +···+ x × xn − xn ,
∂ x2 ∂ xn
..
.
 ∂ fn (k )   (k )

fn (x) ≈ Ln (x) = fn x (k ) + x × x1 − x1 +
∂ x1
∂ fn (k )   (k )
 ∂ fn (k )   (k )

x × x2 − x2 +···+ x × xn − xn .
∂ x2 ∂ xn
Método de Newton para Sistemas Não Lineares
Linearização em torno de x (k ) das funções coordenadas fi :
 ∂ fi   (k )

fi (x) ≈ Li (x) = fi x (k ) + x (k ) × x1 − x1 +
∂ x1
∂ fi (k )
  (k )
 ∂ fi   (k )

x × x2 − x2 +···+ x (k ) × xn − xn .
∂ x2 ∂ xn
A jacobiana de F(x), avaliada em x (k ) , é a matriz JF(x(k) ),
∂f
com entradas (JF)ij = i (x(k) ).
∂ xj
Sistema Linearizado:
F(x) ≈ L(x) = F x (k ) + JF x (k ) x − x (k ) .
  

Logo L(x) = 0 ⇐⇒ JF x (k ) x − x (k ) = −F x (k ) .
  

Sistema de Iteradas. Trocamos x por x (k +1) obtendo


JF x (k ) x (k +1) − x (k ) = −F x (k ) .
 

Hipótese: det[JF(x(k) ] 6= 0.
Método de Newton para Sistemas Não Lineares
Sistema de Iteradas.
JF x (k ) x (k +1) − x (k ) = −F x (k ) .
 

Dada a aproximação inicial x (0) , para cada k , k = 0, 1, . . . ,


deve-se determinar a solução s∗ do sistema linear
JF x(k) s = −F x(k)
 

e partir daí obter


x(k+1) = x(k) + s∗ .
Obs. Convergência quadrática para a solução x ∗ de F (x) = 0.
Método de Newton para Sistemas Não Lineares
Obtenha a solução s∗ de JF x(k) s = −F x(k) e faça
 

x(k+1) = x(k) + s∗ .
...............................................................
Algorítmo.
Fixe xb , TOL1, TOL2, k = 0.
Para k = 0, 1, . . . N:
Faça xa = xb .
Calcule F (xa ).
Se ||F (xa )||∞ < TOL1, faça x = xa e k = N (pare);
Se não:
Calcule JF (xa );
Obtenha a solução s∗ do sistema JF (xa ) s = −F (xa );
Faça xb = xa + s∗ ;
Se ||s∗ ||∞ < TOL2, faça x = xb e k = N (pare);
Final do Se;
Faça k = k + 1 (inicia a próxima iteração)
Final do Para.
Sistemas Algébricos Não Lineares
Métodode Newton: Tome s∗ a solução de
JF x(k) s = −F x(k) e faça x(k+1) = x(k) + s∗ .
Exemplo 2 . Dada x (0) = (0.1, 0.1, −0.1)T , obtenha a solução
aproximada do sistema do Exemplo 1 via o método de Newton
com estimativa do erro absoluto inferior à TOL = 10−1 .
Temos: f1 (x1 , x2 , x3 ) = 3x1 − cos(x2 x3 ) − 1/2 ,
f2 (x1 , x2 , x3 ) = x12 − 81(x2 + 0.1)2 + sen(x3 ) + 1.06 ,
f3 (x1 , x2 , x3 ) = e−x1 x2 + 20x3 + 10π−3
3 .
Daí,
∂ f1 ∂ f1 ∂ f1   
∂ x1 ∂ x2 ∂ x3 3 x3 sen(x2 x3 ) x2 sen(x2 x3 )
   
 
JF (x) =  ∂∂xf21 ∂ f2 ∂ f2 
 
= 2x1 −162(x2 + 0.1) cos(x3 ) 

 ∂ x2 ∂ x3 
  
   
∂ f3 ∂ f3 ∂ f3 −x2 e−x1 x2 −x1 e−x1 x2 20
∂ x1 ∂ x2 ∂ x3
Sistemas Algébricos Não Lineares
Métodode Newton: Tome s∗ a solução de
JF x(k) s = −F x(k) e faça x(k+1) = x(k) + s∗ .
Exemplo (0)
 2 (cont.). Temos x = (0.1, 0.1,  −0.1)T ,
3x1 − cos(x2 x3 ) − 1/2
F (x) = x12 − 81(x2 + 0.1)2 + sen(x3 ) + 1.06
e−x1 x2 + 20x3 + 10 π−3
3
 
3 x3 sen(x2 x3 ) x2 sen(x2 x3 )
JF (x) =  2x1 −162(x2 + 0.1) cos(x3 ) .
−x2 e −x 1 x2 −x1 e −x1 x2 20
Fazendo x = x (0) obtemos:
F (x (0) ) ≈ (−1.199, −2.269, 8.462)T .
 
3 0.0009 −0.0009
JF (x (0) ) ≈  0.2 −32.4 0.995  .
−0.099 −0.099 20
Sistemas Algébricos Não Lineares
Métodode Newton: Tome s∗ a solução de
JF x(k) s = −F x(k) e faça x(k+1) = x(k) + s∗ .
   
0.1 −1.199
Exemplo 2 (cont.). x (0) =  0.1  , F (x (0) ) ≈ −2.269 ,
−0.1 8.462
 
3 0.0009 −0.0009
JF (x (0) ) ≈  0.2 −32.4 0.995  .
−0.099 −0.099 20
O sistema linear JF x(0) s = −F x(0) fica:
 

3s1 + 0.0009s2 − 0.0009s3 = 1.199

0.2s1 − 32.4s2 + 0.995s3 = 2.269

−0.099s1 − 0.099s2 + 20s3 = −8.462,

 
0.3996
cuja solução aproximada é s∗ ≈ −0.0805 .
−0.4215
Sistemas Algébricos Não Lineares
Métodode Newton: Tome s∗ a solução de
JF x(k) s = −F x(k) e faça x(k+1) = x(k) + s∗ .
 
0.1
Exemplo 2 (cont.). Temos x (0) =  0.1  e a solução
−0.1
(0) (0)
 
aproximada de JF x s = −F x dada por
 
0.3996
s∗ ≈ −0.0805 . Daí, x(1) =x (0) + s∗
−0.4215
     
0.1 0.3996 0.4996
=  0.1  + −0.0805 =  0.0195  .
−0.1 −0.4215 −0.5215
(1) (0)
Erro Absoluto. ||x (1) − x (0) ||∞ = max |xi − xi |
1≤i≤3
= max{|0.4996 − 0.1|, |0.0195 − 0.1|, | − 0.5215 + 0.1|}
= max{0.3996, 0.0805, 0.4215} = 0.4215 > 10−1 .
Sistemas Algébricos Não Lineares
Métodode Newton: Tome s∗ a solução de
JF x(k) s = −F x(k) e faça x(k+1) = x(k) + s∗ .
Exemplo 2 (cont.). Temos: x (0) = (0.1, 0.1, −0.1)T e
x (1) = (0.4996, 0.0195, −0.5215)T .
Segunda Iteração.
 (1) (1) (1) 
3x1 − cos(x2 x3 ) − 1/2
 
 
(1) (1) 2 (1) 2 (1)
F (x ) = (x1 ) − 81(x2 + 0.1) + sen(x3 ) + 1.06 ≈
 
 
 
(1) (1) (1)
e−x1 x2 + 20x3 + 10π−3
3
 
−0.0011
 
 
−0.3453 .
 
 
0.0323
Sistemas Algébricos Não Lineares
Métodode Newton: Tome s∗ a solução de
JF x(k) s = −F x(k) e faça x(k+1) = x(k) + s∗ .
Exemplo 2 (cont.). Segunda Iteração.
Temos: x (0) = (0.1, 0.1, −0.1)T ,  
−0.0011
x (1) = (0.4996, 0.0195, −0.5215)T e F (x (1) ) ≈ −0.3453 .
0.0323
(1) (1) (1) (1) (1) (1)
 
3 x3 sen(x2 x3 ) x2 sen(x2 x3 )
(1) (1) (1)
JF (x (1) ) =  2x1 −162(x2 + 0.1) cos(x3 )
 

(1) (1) (1) (1) (1) (1)
−x2 e−x1 x2 −x1 e−x1 x2 20
 
3 0.053 −0.0001
≈  0.999 −19.36 0.867  .
−0.0193 −0.4948 20
Sistemas Algébricos Não Lineares
Métodode Newton: Tome s∗ a solução de
JF x(k) s = −F x(k) e faça x(k+1) = x(k) + s∗ .
Exemplo 2 (cont.). Segunda Iteração.
Temos: x (0) = (0.1, 0.1, −0.1)T ,  
−0.0011
x (1) = (0.4996, 0.0195, −0.5215)T , F (x (1) ) ≈ −0.3453 .
0.0323
 
3 0.053 −0.0001
JF (x (1) ) ≈  0.999 −19.36 0.867  .
−0.0193 −0.4948 20
O sistema linear JF x(1) s = −F x(1)
 
 
0.0004
tem solução aproximada: s∗ = −0.0019 .
−0.0017
Sistemas Algébricos Não Lineares
Métodode Newton: Tome s∗ a solução de
JF x(k) s = −F x(k) e faça x(k+1) = x(k) + s∗ .
Exemplo 2 (cont.). Segunda Iteração.
Temos: x (0) = (0.1, 0.1, −0.1)T ,
x (1) = (0.4996, T
(1)
 0.0195,
(1)
 −0.5215) e a solução do sistema
JF x s = −F x dada por

s = (0.0004, −0.0019, −0.0017) T
   . Daí,   
0.4996 0.0004 0.5
x(2) =x (1) + s∗ =  0.0195  + −0.0019 =  0.0176  .
−0.5215 −0.0017 −0.05232
(2) (1)
Erro Absoluto. ||x (2) − x (1) ||∞ = max |xi − xi |
1≤i≤3
= max{|0.0004|, | − 0.0019|, | − 0.0017|} = 0.0019 < 10−1 .
Método de Newton Modificado
Ideia: Trocar o cálculo de JF x (k ) a cada iteração por um


único cálculo de JF x (0) .




A cada iteração encontre a solução s∗ de


JF x (0) s = −F x (k ) e faça x(k+1) = x(k) + s∗ .
 

Desta forma a matriz jacobiana é avaliada uma única vez.

A taxa de convergência cai de quadrática para apenas linear.

Exercício. Refaça o Exemplo 2 usando o método de Newton


modificado.
Método de Newton
Obs.: Em cada iteração k , as entradas da matriz jacobiana
∂ fi (k ) 
dadas por x podem ser aproximadas pelos quocientes
∂ xj

fi x (k ) + hej − fi x (k )
 
,
h
para algum valor de h fixado suficientemente pequeno.

Você também pode gostar