求解非線性超定方程組,網上搜到的大多是線性方程組的最小二乘解法,對於非線性方程組無濟於事。
這裡分享一種方法:scipy庫的scipy.optimize.leastsq函式。
importnumpy as np
from scipy.optimize import
leastsq
from math import
sqrt
deffunc(i):
x,y,z =i
return
np.asarray((
x**2-x*y+4,
x**2+y**2-x*z-25,
z**2-y*x+4,
x**3+y**3+z**3-127.6))
root = leastsq(func, np.asarray((1,1,1))) # 初始猜測值
print(root[0])
執行結果:
[ 1.00886951 5.00607313 1.036197 ]
缺點:只是普通的最小二乘解法,對於引數過於相近的情況,比如病態雅克比矩陣的求解效果不好。
有知道l-m演算法(levenberg-marquardtalgorithm)的朋友望告知。
線性最小二乘法
example f x 12 ax b 22 f x frac parallel ax b parallel 2 2 f x 2 1 a x b 22 最小化下式時x的值。首先計算 xf x at a x b ata x at b big down xf x a t ax b a tax a tb ...
最小二乘法 非線性擬合 正則化 python實現
需要一些數學推導 lambda的確定不太清楚,0.001是試出來的 當函式發生變化時,或者擬合函式最高係數變化時,lambda的取值都應當相應變化 1 import numpy as np 2import matplotlib.pyplot as plt 34 plt.rcparams font.s...
線性回歸,最小二乘法
回歸的定義 對於乙個點集,使用乙個函式去擬合該點集,使點集與擬合函式間的誤差最小,如果這個函式曲線是一條直線,則是線性回歸,如果曲線是二次曲線,則是二次回歸。廣義線性回歸 廣義線性模型是線性模型的擴充套件,其特點是不強行改變資料的自然度量,資料可以具有非線性和非恆定方差結構 59 主要是通過聯結函式...