python曲线拟合预测_用python做曲线拟合
大家好?我是Kepler哎學習,最近在工程中用到曲線擬合。一般我們都是用matlab來做,方便快捷。我們也可以嘗試用python編寫腳本來擬合數據,方便數據自動化處理。
曲線擬合分為一般多項式擬合和指定函數擬合。
準備工作:
1.建立python環境(https://www.jianshu.com/p/daf5d33ae62e)
2.安裝模塊numpy、matplotlib、scipy(自行百度)
代碼編寫:
多項式擬合
1.創建文件mult.py
import numpy as np? ? ? # 導入模塊
from sys import argv
import matplotlib.pyplot as plt
script,x_data,y_data,order = argv? ? # 參數變量
x_data = x_data.split(",")? ? ? ? # 將字符串拆分成字符列表
x_data = [float(i) for i in x_data] # 將字符列表轉換為數字列表
y_data = y_data.split(",")
y_data = [float(i) for i in y_data]
x = np.array(x_data)
print("x is: \n",x)
y = np.array(y_data)
print("y is:\n",y)
f1 = np.polyfit(x,y,int(order))? ? #? 獲取擬合函數的系數
print("f1 is:\n",f1)
p1 = np.poly1d(f1)
print("p1 is:\n",p1)
yvals = p1(x)
print('yvals is:\n',yvals)
plot1 = plt.plot(x,y,'s',label = 'original values')
plot2 = plt.plot(x,yvals,'r',label = 'polyfit values')
plt.xlabel('x')
plt.ylabel('y')
plt.legend(loc=4)
plt.title('polyfitting')
plt.show()
2.進行測試:
在文件所在文件夾shift+鼠標右鍵打開PowershellShift+鼠標右鍵
在Powershell中輸入程序執行命令兩個點1階多項式擬合
進行二階擬合10個點 2階擬合
進行八階擬合8個點 8階擬合
指定函數擬合
1.創建fxgiven.py:
import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import curve_fit? ? # 導入擬合函數
from sys import argv
script,x_data,y_data = argv? ?# 參數變量
x_data = x_data.split(",")? ? ? ? # 將字符串拆分成字符列表
x_data = [float(i) for i in x_data] # 將字符列表轉換為數字列表
y_data = y_data.split(",")
y_data = [float(i) for i in y_data]
x = np.array(x_data)
y = np.array(y_data)
def fx(x,a,b):
return a*np.exp(b/x)
popt, pcov = curve_fit(fx, x, y)? #?pcov 估計的popt的協方差
print(popt)? ? ? ? ? ? ? ? ? # popt滿足函數參數最佳值
yvals=fx(x,popt[0] ,popt[1]) # 求出擬合后對應點
print(yvals)
p1=plt.plot(x, y, '*',label='original values')
p2=plt.plot(x, yvals, 'r',label='curve_fit values')
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.legend(loc=4)? ? ? ? ? ? ? ?# 指定legend的位置,讀者可以自己help它的用法
plt.title('curve_fit')
plt.savefig('p2.png')
plt.show()
2.進行測試:
在Powershell中輸入程序執行命令6個點擬合y=a*exp(b/x)
專欄文章僅作個人學習記錄,如有錯誤,歡迎批評指正。
總結
以上是生活随笔為你收集整理的python曲线拟合预测_用python做曲线拟合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 频率统计表用c语言_空间矢量脉宽调制建模
- 下一篇: python的print语句_Pytho