2022年 11月 9日

python自定义函数拟合_python自定义函数拟合

import numpy as np

import matplotlib.pyplot as plt

from scipy.optimize import curve_fit#用python拟合函数最主要模块就是cure_fit

#准备数据

x=[一组数据]

y=[一组数据]

#定义你自己想要拟合的函数

def func(x,E0,B0,B1,V0):

return E0+(9.0/16)*V0*B0*(((V0/x)**(2.0/3)-1)**(3.0)*B1)+(9.0/16)*V0*B0*((V0/x)**(2.0/3)-1)**(2.0)*(6-4*(V0/x)**(2.0/3))

#定义好自己需要的函数之后就是拟合

#popt是一个一维数组,表示得到的拟合方程的参数

#pcov是一个二维数组,是在popt参数下得到的协方差

popt,pcov=curve_fit(func,x,y,[-800,-1,-1,930]) #后面这个数组是进行设置初猜,即使初猜设置的不是特别好,也能拟合出来比较理想的效果。如果你不设置初猜的话,默认的都是1

print(popt)

E0=popt[0]

B0=popt[1]

B1=popt[2]

V0=popt[3]

print(pcov)

yval=func(x,E0,B0,B1,V0)#拟合完参数之后 就用拟合之后的参数来计算函数的值,即得到拟合拟合曲线的数值

plt.scatter(x,y)#原始数据画图

plt.plot(x,yval,’g’,label=’E0=%5.3f,B0=%5.3f,B1=%5.3f,V0=%5.3f’%tuple(popt))#拟合之后的数据画图 tuple是把列表变成元组

plt.legend()

plt.show()