Gauss-Newton-módszer (matematika, algoritmusok) A **Gauss-Newton-módszer** egy iteratív algoritmus, amelyet nemlineáris legkisebb négyzetek problémáinak megoldására használnak. A módszer a Newton-módszer egy leegyszerűsített változata, amely nemlineáris regresszió vagy más optimalizációs problémák során hasznos.
---
Ha egy nemlineáris függvényt szeretnénk illeszteni az adatokhoz, az optimalizálandó célfüggvény a reziduális négyzetösszeg:
ahol a a reziduális függvény.
A Gauss-Newton-módszer iterációval közelíti meg a minimumot:
ahol: * a Jacobian-mátrix, amely tartalmazza az -beli parciális deriváltakat.
---
Az alábbi példában bemutatjuk, hogyan használható a Gauss-Newton-módszer nemlineáris illesztéshez.
import numpy as np
def gauss_newton(f, jacobian, x0, y, max_iter=100, tol=1e-6):
"""
Gauss-Newton algoritmus a legkisebb négyzetes illesztéshez.
:param f: Nemlineáris függvény
:param jacobian: Jacobian-mátrix (parciális deriváltak)
:param x0: Kezdő paraméterek
:param y: Megfigyelt adatok
:param max_iter: Iterációk maximális száma
:param tol: Tolerancia a konvergenciához
:return: Optimalizált paraméterek
"""
x = x0
for i in range(max_iter):
# Reziduális számítás
r = y - f(x)
# Jacobian számítás
J = jacobian(x)
# Gauss-Newton lépés
delta = np.linalg.lstsq(J.T @ J, J.T @ r, rcond=None)
x_new = x + delta
# Konvergencia ellenőrzése
if np.linalg.norm(delta) < tol:
break
x = x_new
return x
# Példa függvény és Jacobian
def f(x):
"""Nemlineáris modell: y = a * e^(b * t)"""
t = np.linspace(0, 10, len(y_data))
return x * np.exp(x * t)
def jacobian(x):
"""Jacobian mátrix számítása"""
t = np.linspace(0, 10, len(y_data))
J = np.zeros((len(t), len(x)))
J = np.exp(x * t) # Parciális derivált x szerint
J = x * t * np.exp(x * t) # Parciális derivált x szerint
return J
# Példa adatok
t_data = np.linspace(0, 10, 15)
y_data = 3 * np.exp(0.5 * t_data) + np.random.normal(0, 0.5, len(t_data))
# Kezdeti becslések
x0 = np.array()
# Optimalizáció
x_opt = gauss_newton(f, jacobian, x0, y_data)
print("Optimalizált paraméterek:", x_opt)
---
Az optimalizált paraméterek és lesznek, amelyek a legjobban illeszkednek az modellhez.
---