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=1n∂fi ∂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=1n∂fi ∂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 19/8/2020 às 17:36:36.

Informe erros ou edite você mesmo!