Python曲線擬合

2021-08-10 10:32:02 字數 2699 閱讀 1798

z1 = np.polyfit(x, y, 5) # 用3次多項式擬合

p1 = np.poly1d(z1)

print(p1) # 在螢幕上列印擬合多項式

yvals = p1(x) # 也可以使用yvals=np.polyval(z1,x)

plot1 = plt.plot(x, y, 'k.', markersize=16, label='$original values$')

plot2 = plt.plot(x, yvals, 'r', lw=3, label='$polyfit values$')

plt.xlabel('$x$')

plt.ylabel('$y$')

plt.legend(loc=4) # 指定legend的位置,讀者可以自己help它的用法

z1 = np.polyfit(x, y, 10) # 用3次多項式擬合

p1 = np.poly1d(z1)

print(p1) # 在螢幕上列印擬合多項式

yvals = p1(x) # 也可以使用yvals=np.polyval(z1,x)

plot1 = plt.plot(x, y, 'k.', markersize=16, label='original values')

plot2 = plt.plot(x, yvals, 'r', lw=3, label='overfit')

plot3=plt.plot([0.0,1.0],[1.5,-1.5],'b',label='best fit')

plt.xlabel('$x$')

plt.ylabel('$y$')

plt.legend(loc=3) # 指定legend的位置,讀者可以自己help它的用法

#使用非線性最小二乘法擬合

from scipy.optimize import curve_fit

import matplotlib.pyplot as plt

import numpy as np

#用指數形式來擬合

x = np.arange(1, 17, 1)

y = np.array([4.00, 6.40, 8.00, 8.80, 9.22, 9.50, 9.70, 9.86, 10.00, 10.20, 10.32, 10.42, 10.50, 10.55, 10.58, 10.60])

deffunc

(x,a,b):

return a*np.exp(b/x)

popt, pcov = curve_fit(func, x, y)

a=popt[0]#popt裡面是擬合係數,讀者可以自己help其用法

b=popt[1]

yvals=func(x,a,b)

plot1=plt.plot(x, y, '*',label='original values')

plot2=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.show()

python曲線擬合

python中曲線擬合 乙個是numpy中的polyfit 函式,多項式擬合,給定變數x y 多項式次數,返回值為多項式的一維係數array 另乙個是scipy的 optimize 模組中的 curve fit 函式,可由自己定義擬合函式,更通用 給定變數x y 擬合函式,返回值有兩個,popt是擬...

MATLAB 曲線擬合

x0.1 0.20.15 0.0 0.2 0.3y 0.95 0.84 0.86 1.06 1.50 0.72 函式功能多項式的擬合運算 呼叫方法polyfit x,y,n x為橫座標,y為縱座標,n為擬合階數。例子x 0 0.1 2.5 1y erf x p polyfit x,y,6 p 0.0...

matlab 曲線擬合

在matlab中經常需要對資料進行曲線擬合,如最常見的多項式擬合,一般可以通過cftool呼叫曲線擬合工具 curve fit tool 通過圖形介面可以很方便的進行曲線擬合,但是有些時候也會遇到不方便用圖形工具。因此這裡簡單的記下兩種常用的擬合方法。1 多項式擬合 polyfit和polyval ...