Use o botão abaixo para reportar erros ou dar sugestões.

Cálculo Numérico - Versão Python

Capítulo 5
Solução de sistemas de equações não lineares


Neste capítulo, estudaremos o método de Newton aplicado à resolução de sistemas não lineares de equações.

O método de Newton aplicado a encontrar a raiz x* da função y = f(x) estudado na Seção 3.4 consiste em um processo iterativo. Em cada passo deste processo, dispomos de uma aproximação x(k) para x* e construímos uma nova aproximação x(k+1). Cada passo do método de Newton envolve os seguintes procedimentos:

  • Linearização da função f(x) no ponto x(k):
    f(x) = f(x(k)) + (x - x(k))f(x(k)) + O |x - x(k)|2 (5.1)
  • A aproximação x(k+1) é definida como o valor de x em que a linearização f(x(k)) + (x - x(k))f(x(k)) passa por zero.

Queremos, agora, generalizar o método de Newton a fim de resolver problemas de várias equações e várias incógnitas, ou seja, encontrar x1,x2,xn que satisfazem as seguintes equações: f1(x1,x2,,xn) = 0 (5.2) f2(x1,x2,,xn) = 0 (5.3) (5.4) fn(x1,x2,,xn) = 0 (5.5)

Podemos escrever este problema na forma vetorial definindo o vetor x = [x1,x2,,xn]T e a função vetorial

F(x) = f1(x1,x2,,xn) f2(x1,x2,,xn) fn(x1,x2,,xn) . (5.6)

Exemplo 5.0.1. Suponha que queiramos resolver numericamente o seguinte sistema de duas equações e duas incógnitas: x12 3 + x22 = 1 (5.7) x12 + x22 4 = 1 (5.8)

Então definimos

F(x) = x12 3 + x22 - 1 x12 + x22 4 - 1 (5.9)

Neste momento, dispomos de um problema na forma F(x) = 0 e precisamos desenvolver uma técnica para linearizar a função F(x). Para tal, precisamos de alguns conceitos do cálculo de várias variáveis.

Observe que F(x) - F(x(0)) pode ser escrito como

F(x)-F(x(0)) = f1(x1,x2,,xn) - f1(x1(0),x 2(0),,x n(0)) f2(x1,x2,,xn) - f2(x1(0),x 2(0),,x n(0)) fn(x1,x2,,xn) - fn(x1(0),x 2(0),,x n(0)) (5.10)

Usamos a regra da cadeia

dfi = fi x1dx1 + fi x2dx2 + + fi xndxn = j=1nfi xjdxj (5.11)

e aproximamos as diferenças por derivadas parciais:

fi(x1,x2,,xn) - fi(x1(0),x 2(0),,x n(0)) j=1nfi xj xj - xj(0) (5.12)

Portanto,

F(x)-F(x(0)) f1 x1 f1 x2 f1 xn f2 x1 f2 x2 f2 xn fn x1 fn x2 fn xn x1 - x1(0) x2 - x2(0) xn - xn(0) , (5.13)

Definimos, então, a matriz jacobiana por

JF = (f1,f2,,fn) (x1,x2,,xn) = f1 x1 f1 x2 f1 xn f2 x1 f2 x2 f2 xn fn x1 fn x2 fn xn . (5.14)

Isto é, a matriz jacobiana de uma função ou simplesmente, o jacobiano de uma função F(x) é a matriz formada pelas suas derivadas parciais:

JF ij = fi xj. (5.15)

Nestes termos, podemos reescrever (5.13) como

F(x) F(x(0)) + J F (x(0))(x - x(0)) (5.16)

Esta expressão é chamada de linearização de F(x) no ponto x(0) e generaliza a linearização em uma dimensão dada por f(x) f(x(0)) + f(x(0))(x - x(0)).

Ao longo deste capítulo, assumiremos que as seguintes bibliotecas e módulos Python estão importadas:

import numpy as np  
from numpy import linalg

Creative Commons License Este texto é disponibilizado nos termos da licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC-BY-SA 3.0). Página gerada em 15/5/2019 às 15:24:50.

Informe erros ou edite você mesmo!