import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import leastsq
# 待擬合的資料
x = np.array([1,2,3,4,5,6])
y=np.array([9.1,18.3,32,47,69.5,94.8])
# 二次函式的標準形式
def func(params, x):
a, b, c = params
return a * x * x + b * x + c
# 誤差函式,即擬合曲線所求的值與實際值的差
def error(params, x, y):
return func(params, x) - y
# 對引數求解
def slovepara():
p0 = [10, 10, 10]
para = leastsq(error, p0, args=(x, y))
return para
# 輸出最後的結果
def solution():
para = slovepara()
a, b, c = para[0]
print("a=",a," b=",b," c=",c)
print("cost:" + str(para[1]))
print("求解的曲線是:")
print("y="+str(round(a,2))+"x*x+"+str(round(b,2))+"x+"+str(c))
plt.figure(figsize=(8,6))
plt.scatter(x, y, color="green", label="sample data", linewidth=2)
# 畫擬合直線
x=np.linspace(0,12,100) ##在0-15直接畫100個連續點
y=a*x*x+b*x+c ##函式式
plt.plot(x,y,color="red",label="solution line",linewidth=2)
plt.legend() #繪製圖例
plt.show()
solution()
最小二乘擬合 6 7 最小二乘擬合問題
資料擬合問題的一般形式 任給一組離散資料 注 這裡的擬合函式不一定為多項式函式 記殘量的平方和為 求使得殘量平方和最小得一組係數就是線性最小二乘問題,為最小二乘問題得基函式,求得的擬合函式為資料的最小二乘擬合。求解 利用偏導數為零得到極值點的原理可以得到最小二乘問題滿足的方程組,求解方程組中未知係數...
最小二乘擬合
來自 某小皮 最優化函式庫optimization 優化是找到最小值或等式的數值解的問題。scipy.optimization子模組提供函式最小值,曲線擬合和尋找等式的根的有用演算法。最小二乘擬合 假設有一組實驗資料 xi,yi 事先知道它們之間應該滿足某函式關係yi f xi 通過這些已知的資訊,...
最小二乘線性擬合
實驗 給出實驗資料 程式 如下 write by void,2013.4.15,beijing import matplotlib.pyplot as plt import numpy as np x 13,15,16,21,22,23,25,29,30,31,36,40,42,55,60,62,6...