Método Gauss-Newton
Foto de Vinícius W.
Por: Vinícius W.
19 de Maio de 2023

Método Gauss-Newton

Python

Cálculo Cálculo Numérico Geral Geral python

O método

O método de Gauss-Newton é uma técnica de otimização numérica usada para encontrar os parâmetros de um modelo matemático que melhor se ajusta a um conjunto de dados experimentais. Ele é particularmente útil quando o modelo é não linear e os dados experimentais têm um erro aleatório.

A ideia básica do método de Gauss-Newton é ajustar o modelo aos dados experimentais iterativamente, atualizando os valores dos parâmetros para minimizar a soma dos quadrados dos resíduos entre o modelo e os dados. Em cada iteração, o método calcula uma aproximação linear do modelo em torno dos valores atuais dos parâmetros, e usa essa aproximação para encontrar uma solução para o sistema de equações não lineares que minimiza os resíduos. Essa solução é encontrada usando uma forma modificada de eliminação Gaussiana.

O método de Gauss-Newton é especialmente útil para problemas de ajuste de curvas em que o modelo é não linear e os dados experimentais têm um erro aleatório. Por exemplo, ele pode ser usado para ajustar uma curva a um conjunto de pontos de dados obtidos a partir de um experimento científico ou de um processo industrial. Também é comumente usado em problemas de reconstrução de imagens, como em tomografia computadorizada.

Exemplo Prático

Podemos usar como exemplo prático, o ajuste de curvas para dados experimentais de uma curva de crescimento bacteriano. A curva de crescimento bacteriano descreve a relação entre a densidade óptica das células bacterianas e o tempo de crescimento. A curva pode ser modelada por um modelo logístico:

onde y é a densidade óptica das células, A é o valor assintótico máximo, k é a taxa de crescimento e x0 é o ponto de inflexão. Para encontrar os valores de A, k e x0 que melhor se ajustam aos dados experimentais, podemos usar o método de Gauss-Newton. Definimos a função model para calcular a densidade óptica em função do tempo, a função error para calcular os resíduos entre o modelo e os dados experimentais, e os valores iniciais dos parâmetros podem ser definidos como um chute inicial ou baseados em informações prévias sobre o sistema em questão.

Como aplicar o metodo de Gauss-Newton em python?

O método de Gauss-Newton é um algoritmo iterativo para resolver problemas de mínimos quadrados não lineares. Ele é uma extensão do método de Newton para problemas não lineares e é frequentemente usado para ajustar modelos matemáticos a dados experimentais.

Em Python, é possível aplicar o método de Gauss-Newton usando a biblioteca SciPy, que fornece uma função pronta para uso chamada scipy.optimize.leastsq. Essa função usa o método de Gauss-Newton para resolver problemas de mínimos quadrados não lineares. Segue o código em Python:

---------------------------------------------------------------------------------------------

import numpy as np
from scipy.optimize import leastsq
import matplotlib.pyplot as plt

# dados experimentais
xdata = np.array([0, 2, 4, 6, 8, 10, 12])
ydata = np.array([0.12, 0.23, 0.44, 0.68, 0.82, 0.95, 0.99])

# modelo logístico
def model(x, p):
    return p[0] / (1 + np.exp(-p[1] * (x - p[2])))

# função de erro
def error(p, x, y):
    return y - model(x, p)

# valores iniciais dos parâmetros
p0 = [1, 1, 1]

# ajuste da curva aos dados
p, success = leastsq(error, p0, args=(xdata, ydata), maxfev=10000) # maxfev = 100 * (n+1) = 400

# plotagem dos resultados
plt.plot(xdata, ydata, 'bo', label='dados experimentais')
plt.plot(xdata, model(xdata, p), 'r-', label='ajuste')
plt.xlabel('Tempo (horas)')
plt.ylabel('Densidade óptica')
plt.legend()
plt.show()

print(f"Valores ajustados:\nA = {p[0]:.2f}\nk = {p[1]:.2f}\nx0 = {p[2]:.2f}")
 

-------------------------------------------------------------------------------------

Neste exemplo de aplicação acima, os dados experimentais são armazenados nos arrays xdata e ydata. A função model implementa o modelo logístico, enquanto a função error calcula os resíduos entre o modelo e os dados experimentais. Os valores iniciais dos parâmetros são definidos na lista p0.

A função leastsq da biblioteca SciPy é usada para ajustar o modelo aos dados. Os argumentos da função são a função de erro, os valores iniciais dos parâmetros, os dados experimentais e o número máximo de avaliações da função de erro permitidas.

Finalmente, os resultados serão plotados usando a biblioteca Matplotlib, e os valores ajustados dos parâmetros são impressos na tela.

FIM

Vinícius W.
Vinícius W.
Niterói / RJ
Responde em 10 h e 7 min
Identidade verificada
1ª hora grátis
4,2
nota média
19
avaliações
R$ 60
por hora
Pós Doutorado: Geofísica (UFF)
Cálculo Diferencial e Integral, Cálculo - Integral, Cálculo III
Professor de matemática, especialista em cálculo e equações diferenciais.

Confira artigos similares

Aprenda sobre qualquer assunto