最小二乘法相關(guān)知識(shí),我把他分解成了四篇文章,第一篇是推導(dǎo)過 程 ,第二篇是 系數(shù)求解 ,第三篇是C語言實(shí)現(xiàn)二乘法(二次曲線)。有興趣可以看文章底部,往期推薦。
這篇文章是第四篇,主要是用Python驗(yàn)證C語言實(shí)現(xiàn)二乘法的正確性,因?yàn)榫W(wǎng)絡(luò)上的文章錯(cuò)綜復(fù)雜,復(fù)制粘貼有風(fēng)險(xiǎn),需要保證功能的正確性。
相關(guān)代碼如下:
# -*- coding: utf-8 -*-
import numpy as np
#import random
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
#自定義函數(shù)
def func(x, a, b, c):
return a + b*x + c*pow(x, 2)
#定義x、y散點(diǎn)坐標(biāo)
x = np.array([0,2,4,6,8,10])
y = np.array([0,9,24,42,76,118])
#非線性最小二乘法擬合
popt, pcov = curve_fit(func, x, y)
#獲取popt里面是擬合系數(shù)
a = popt[0]
b = popt[1]
c = popt[2]
yvals = func(x, a, b, c) #擬合y值
print('a:', a)
print('b:', b)
print('c:', c)
#繪圖
plot1 = plt.plot(x, y, 's') #square
plot2 = plt.plot(x, yvals, 'r')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
上述代碼運(yùn)行結(jié)果如下圖:
其中,藍(lán)色的矩形點(diǎn)是已知的坐標(biāo)點(diǎn),而紅色的則是對(duì)已知坐標(biāo)點(diǎn)擬合而成二次曲線。
-
C語言
+關(guān)注
關(guān)注
180文章
7626瀏覽量
139546 -
最小二乘法
+關(guān)注
關(guān)注
0文章
22瀏覽量
8558
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論