对python 指数、幂函数拟合curve_fit 详解
可以⽤scipy.optimize的curve_fit⽅法实现对指数、幂函数曲线拟合
官⽅⽂档的说法:使⽤⾮线性最⼩⼆乘法将函数拟合到数据
例:⽤给定数据求的参数、import numpy
from scipy .optimize import curve_fit
import numpy as np
import matplotlib .pyplot as plt
def func (x , a , b ):
return a * np .exp (b * x )
#以上是需要拟合的⽬标函数,可以修改返回的参数个数
xi =np .linspace (1,8,8)
linspace numpy
yi =np .array ([15.3,20.5,27.4,36.6,49.1,65.6,87.87,117.6])
#以上是待拟合的(xi ,yi )
popt , pcov = curve_fit (func , xi , yi )
print (popt [0],popt [1]) #依次打印的是a ,b ,(c ,d )(如果有的话)
x =np .linspace (1,9,900) #1到9是因为待拟合的数据给到了1到8
y_fit = [func (i , popt [0],popt [1]) for i in x ]
#以上是离散化的拟合曲线
#以下是画图
fig , ax = plt .subplots (figsize =(12, 4))
ax .plot (xi , yi , 'go', alpha =0.5, label ='Simulated data')
ax .plot (x , y_fit , 'b', lw =2, label ='Least square fit')
ax .set_xlabel (r "$x$", fontsize =18)
ax .set_ylabel (r "$y$", fontsize =18)
ax .legend (loc =2)
plt .show ()
源数据:数学建模算法与应⽤(第⼆版),103,司守奎,孙兆亮,2020.2第9次重印版官⽅⽂档:f y =ae 中bx a b
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论