Você está na página 1de 31

Cálculo Numérico / Métodos Numéricos

Solução de sistemas não lineares


Método de Newton
.
15:14

Várias equações, várias incógnitas

Queremos resolver:

f1 (x1, x2, ..., xm) = 0


f2 (x1, x2, ..., xm) = 0
...
fm (x1, x2, ..., xm) = 0
Exemplo1: Intersecção de duas parábolas.

f 1 (x1 , x 2 ) = x1 2 − x 2 − 0.2 = 0
x2

f 1 (x1 , x 2 ) = x 2 2 − x1 + 1 = 0
1
Não temos soluções!!!!!!!!!!!!!!!! − 0 .2
x1
Exemplo (2x2) – 2 variáveis, 2 incógnitas
raízes
x2 + y2 = 4
x2 -y2 = 1 y

Escrevendo na forma
do slide anterior x

f(x,y) = x2 + y2 - 4 =0
g(x,y) = x2 -y2-1
Tomando duas funções quaisquer

f(x,y) = 0
g(x,y) = 0

Suponha que (x0, y0) é uma aproximação de uma


solução do sistema.
Vamos usar o desenvolvimento de Taylor em torno
deste ponto:

f(x,y) ≈ f(x0,y0) + fx(x0,y0)(x-x0) + fy(x0,y0)(y-y0)


g(x,y) ≈ g(x0,y0) + gx(x0,y0)(x-x0) + gy(x0,y0)(y-y0)
Exemplo - Taylor (1/2)

f(x,y) = x2 + y2 - 4 =0
g(x,y) = x2 -y2-1

fx = 2x , fy = 2y , gx = 2x, gy = -2y

Pelo teorema de Taylor, sabemos que perto do ponto


(x,y) = (1.5,1.5), podemos escrever:

f(x,y)em torno de (x,y)=(1.5,1.5) ≈ f(x0,y0) + 3(x-x0) + 3(y-y0)


g(x,y)em torno de (x,y)=(1.5,1.5) ≈ g(x0,y0) + 3(x-x0) - 3(y-y0)
Exemplo - Taylor (2/2)

f(x,y) = x2 + y2 - 4
g(x,y) = x2 -y2-1

f(x,y)(em torno de (x,y)=(1.5,1.5) ≈ f(x0,y0) + 3(x-x0) + 3(y-y0)


g(x,y)(em torno de (x,y)=(1.5,1.5) ≈ g(x0,y0) + 3(x-x0) - 3(y-y0)

No ponto (1.6,1.6):

f(x,y) = 1.12 f(x,y) ≈ 0.5 + 3*0.1 + 3*0.1 = 1.1


g(x,y) = -1 g(x,y) ≈ -1 + 3*0.1 - 3*0.1 = -1
Como queremos obter uma raiz:
0 = f(x,y) ≈ f(x0,y0) + fx(x0,y0)(x-x0) + fy(x0,y0)(y-y0)
0 = g(x,y) ≈ g(x0,y0) + gx(x0,y0)(x-x0) + gy(x0,y0)(y-y0)

0 ≈ f(x0,y0) + fx(x0,y0)(x-x0) + fy(x0,y0)(y-y0)


0 ≈ g(x0,y0) + gx(x0,y0)(x-x0) + gy(x0,y0)(y-y0)

-f(x0,y0) ≈ fx(x0,y0)(x-x0) + fy(x0,y0)(y-y0)


-g(x0,y0) ≈ gx(x0,y0)(x-x0) + gy(x0,y0)(y-y0)
Em forma matricial:
-f(x0,y0) ≈ fx(x0,y0)(x-x0) + fy(x0,y0)(y-y0)
-g(x0,y0) ≈ gx(x0,y0)(x-x0) + gy(x0,y0)(y-y0)

 fx fy   x − x0   − f ( x0 , y0 ) 
    =  
g 
gy  y − y0   − g ( x0 , y0 ) 
 x ( x0 , y 0 ) 

J(x0,y0) = Matriz Jacobiana no ponto (x0,y0)

 x − x0   − f ( x0 , y0 ) 
J ( x0 , y0 )   =  
 y − y0   − g ( x0 , y0 ) 
Resolvendo

 x − x0   − f ( x0 , y0 ) 
J ( x0 , y0 )   =  
 y − y0   − g ( x0 , y0 ) 

 x − x0  −1  − f ( x0 , y0 ) 
  = J ( x0 , y0 )  
 y − y0   − g ( x0 , y0 ) 
Problema:
Custoso calcular J-1

 x   x0  −1  − f ( x0 , y0 ) 
  =   + J ( x0 , y0 )  
 y   y0   − g ( x0 , y0 ) 
Resolvendo um sistema linear

 x − x0   − f ( x0 , y0 ) 
J ( x0 , y0 )   =  
 y − y0   − g ( x0 , y0 ) 
Em vez de calcular J-1, vamos chamar (x-x0) de r e (y-y0)
de s:

 r   − f ( x0 , y0 ) 
J ( x0 , y0 )   =  
 s   − g ( x0 , y0 ) 

Matriz conhecida Variáveis Vetor conhecido

Sistema linear
Processo iterativo

 r   − f ( x0 , y0 ) 
J ( x0 , y0 )   =  
 s   − g ( x0 , y0 ) 

Ao resolvermos o sistema, teremos s e r e poderemos


facilmente obter os novos valores de x0 e y0

x = r + x0
y = s + y0

Lembre que x, y não são os valores de x, y, mas os valo-


res de uma nova aproximação, ou seja:
x1 = r + x0
y1 = s + y0
Método de Newton

Repetindo o processo, temos o processo iterativo de Newton:

 xk +1 − xk   − f ( xk , yk ) 
J ( xk , yk )  =  
 yk +1 − yk   − g ( xk , yk ) 
Método de Newton

Podemos generalizar o processo iterativo de Newton para


sistemas lineares de dimensão n:

 xk +1 − xk   − f1 ( xk , yk ,..., z k ) 
 y − y   − f ( x , y ,..., z ) 
J ( xk , yk ,..., z k ) k +1 k 
=  2 k k k 

M   
   
 z k +1 − z k   − f n ( xk , yk ,..., z k ) 

Precisaremos de métodos eficientes para resolver os sistemas


lineares
Método de Newton

Convergência

Quando o método converge, a convergência é


quadrática.

O método de Newton converge se:


As funções fi (x,y,...,z) para i = 1, ..., n e suas derivadas
parciais ate segunda ordem sejam continuas e limitadas
numa vizinhança V contendo a raiz (x*,y*,...,z*).
o determinante do Jacobiano é diferente de zero em V.
A solução inicial deve ser suficientemente próxima da raiz.
Método de Newton - Algoritmo

resolva o sistema linear

 r   − f1 ( xk , yk ,..., z k ) 
 s  − f ( x , y ,..., z )

J ( xk , yk ,..., z k ) M =  2 k k k 

   
t   
   − f n ( xk , yk ,..., zk ) 
determine a nova solução

xk +1 = r + xk
yk +1 = s + yk
M
z k +1 = t + z k
Método de Newton - Algoritmo

calcule o erro_atual

xk +1 − xk r
yk +1 − yk
= max{r , s ,..., t }
s
=
M M
z k +1 − z k ∞
t ∞
norma infinito
Voltando ao exemplo

f(x,y) = x2 + y2 - 4 =0
g(x,y) = x2 -y2-1 = 0

fx = 2x, fy = 2y
gx = 2x, gy = -2y

 fx f y   2x 2 y 
J =   =  
 gx g x   2x − 2 y 

Iteração de Newton:
 xk +1 − xk   − f ( xk , yk ) 
J ( xk , yk )  =  
 yk +1 − yk   − g ( xk , yk ) 
Voltando ao exemplo y

 xk +1 − xk   − f ( xk , yk ) 
x

J ( xk , yk )  =  
 yk +1 − yk   − g ( xk , yk ) 

 2 xk 2 yk  xk +1 − xk   − f ( xk , yk ) 
   =  
 2 xk − 2 yk  yk +1 − yk   − g ( xk , yk ) 

 x10  1, 5 
x =  0 =  
0
 x 2  1, 5 

Critério de parada: erro menor que 10-2


Resolução do Exemplo: x0

f 1 ( x ) = x 12 + x 22 − 4 , ∇ f 1 ( x ) = ( 2 x1 2 x 2 )
f 2 ( x ) = x 12 − x 22 − 1 , ∇ f 2 ( x ) = ( 2 x1 − 2 x 2 )

 ∂f1 (x) ∂f1 (x) 


2x1 2x2 
F′(x) =  ∂f (1x)
∂x ∂ x2 
= 
 2 ∂f 2 (x) 
2x1 − 2x2 
1 23
matriz  ∂ x1 ∂ x2 
Jacobiana

 x10  1, 5 
Cálculo no ponto inicial: x =  0 =  
0

 x 2  1, 5 
 f ( x 0
) = x 2
+ x 2
− 4  0 ,5   − 0 ,5 
b = − F (x ) = − 
0 1 1 2
 =−  = 
 2
f ( x 0
) = x 1
2
− x 2
2 − 1   − 1   1 

 2 x1 2 x2  3 3 
A = F ′( x ) = 
0
=  
 2 x1 − 2 x2  3 − 3
Resolva o sistema:A z = b
Eliminação de Gauss

3 3   z1   − 0 ,5   0 , 0833 
   =   ⇒ z= 
3 − 3  z2   1   − 0 , 25  x0
x1
Determine nova solução:x k +1 = x k + z
1,5   0,0833  1,5833 
x =x +z =  +
1 0
= 
1, 5
   − 0 , 25   1, 25 
Resolva o sistema:A z = b
Eliminação de Gauss

3 3   z1   − 0 ,5   0 , 0833 
   =   ⇒ z= 
3 − 3  z2   1   − 0 , 25  x0
x1
Determine nova solução:x k +1 = x k + z
1,5   0,0833  1,5833 
x =x +z =  +
1 0
= 
1, 5
   − 0 , 25   1, 25 

Teste de parada: zk

{ }
= max z1 ,L, zn < ε

zk

{ }
= max 0,0833 , − 0,25 = 0,25 > ε = 0,01

Continua, k = k + 1 = 1
2a. iteração:  x11  1, 5833 
x =  1 = 
1

 2 
x  1 , 25 
 x12 + x 22 − 4   0 , 0693   − 0 , 0693 
b = − F (x ) = −  2
1
 = −  = 
 1
x − x 2
2 − 1   − 0 , 0557   0 , 0557 
 2 x1 2 x 2   3 ,1667 2 ,5 
A = F ′( x ) = 
1
= 
2
 1 x − 2 x 2  3 ,1667 − 2 , 5 
Resolva o sistema:

A z =b

 3 ,1667 2 ,5   z1   − 0 , 0693   − 0 , 0021 


   =  ⇒ z= 
 3 ,1667 − 2 ,5   z 2   0 , 0557   − 0 , 025 
2a. iteração:  x11  1, 5833 
x =  1 = 
1

 2 
x  1 , 25 
 x12 + x 22 − 4   0 , 0693   − 0 , 0693 
b = − F (x ) = −  2
1
 =−  =  
 x1 − x 2 − 1   − 0 , 0557 
2 0 , 0557
 
 2 x1 2 x 2   3 ,1667 2 ,5 
A = F ′( x ) = 
1
= 
2
 1 x − 2 x 2  3 ,1667 − 2 , 5 
Resolva o sistema:A z = b

 3 ,1667 2 ,5   z1   − 0 , 0693   − 0 , 0021 


   =  ⇒ z= 
 3 ,1667 − 2 ,5   z 2   0 , 0557   − 0 , 025 
0

Determine nova solução:

x k +1 = x k + z 1

2
1,5833   − 0,0021  1,5812 
x =x +z = 
2 1
+ = 
 1, 25   − 0,025   1, 225 
Teste de parada:

zk

{ }
= max z1 ,L, z n < ε
zk

{ }
= max − 0,0021 , − 0,025 = 0,025 > ε = 0,01
Continua, k = k + 1 =
2
Teste de parada:
zk

{
= max z1 ,L, z n < ε}
zk

{ }
= max − 0,0021 , − 0,025 = 0,025 > ε = 0,01
Continua, k = k + 1 =
3a. iteração: 2
 x12  1, 5812 
x =  2 = 
2

 2 
x  1 , 225 

 x12 + x 22 − 4   0 , 000818   − 0 , 000818 


b = − F (x ) = −  2
2
 =−  = 
 1
x − x 2
2
− 1   − 0 , 000431   0 , 000431 

 2 x1 2 x2   3 ,1624 2 , 45 
A = F ′( x ) = 
1
=  
 2 x1 − 2 x2   3 ,1624 − 2 , 45 
Resolva o sistema:A z = b

 3 ,1624 2 , 45   z1   − 0 , 000818   − 0 , 0000612 


   =  ⇒ z= 
 3 ,1624 − 2 , 45   z 2   0 , 000431   − 0 , 000255 
k +1
Determine nova solução:x = x k
+z

1,5812   − 0,0000612  1,5811 


x =x +z = 
3 2
+ = 
 1, 225   − 0 , 000255  1, 2247 
Resolva o sistema:A z = b

 3 ,1624 2 , 45   z1   − 0 , 000818   − 0 , 0000612 


   =  ⇒ z= 
 3 ,1624 − 2 , 45   z 2   0 , 000431   − 0 , 000255 
k +1
Determine nova solução:x = x k
+z

1,5812   − 0,0000612  1,5811 


x =x +z = 
3 2
+ = 
 1, 225   − 0,000255  1, 2247 
Teste de parada: zk

{ }
= max z1 ,L, zn < ε

zk

{ }
= max − 0,0000612 , − 0,000255 = 0,000255 < ε = 0,01

Pare = Verdadeiro
Solução: k=
3  x1  1,5811 
x = =
3
  Método convergiu
 x2  1, 2247  em 3 iterações!!
Método de Newton Modificado
MÉTODO DE NEWTON MODIFICADO

O Método de Newton Modificado tem a vantagem de calcular


uma única vez a matriz Jacobiana .

J( )
x (0 )
No caso de resolver por fatoração LU, os fatores L e U
também serão calculados uma única vez.
Aplique o método de Newton Modificado
y

 xk +1 − xk   − f ( xk , yk ) 
J ( xk , yk )  =   x

 yk +1 − yk   − g ( xk , yk ) 

 2 xk 2 yk  xk +1 − xk   − f ( xk , yk ) 
   =  
 2 xk − 2 yk  yk +1 − yk   − g ( xk , yk ) 

 x10  1, 5 
x =  0 =  
0
 x 2  1, 5 

Critério de parada com erro menor que 10-2

Você também pode gostar