python非线性拟合
时间: 2023-10-14 07:30:40 浏览: 170
要进行非线性拟合,可以使用Python中的SciPy库中的`curve_fit`函数。该函数可以根据给定的数据和拟合函数,使用最小二乘法进行非线性拟合。
以下是一个使用`curve_fit`函数进行非线性拟合的示例代码:
```python
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
# 定义拟合函数
def func(x, a, b, c):
return a * np.exp(-b * x) + c
# 生成随机数据
xdata = np.linspace(0, 4, 50)
y = func(xdata, 2.5, 1.3, 0.5)
ydata = y + 0.2 * np.random.normal(size=len(xdata))
# 使用curve_fit函数进行拟合
popt, pcov = curve_fit(func, xdata, ydata)
# 输出拟合参数
print(popt)
# 绘制拟合曲线
plt.plot(xdata, ydata, 'b-', label='data')
plt.plot(xdata, func(xdata, *popt), 'r-', label='fit')
plt.legend()
plt.show()
```
在上面的代码中,我们首先定义了一个拟合函数`func`,然后生成了一些随机数据作为样本数据。接着,我们使用`curve_fit`函数进行非线性拟合,并输出拟合参数。最后,我们绘制了拟合曲线并展示了结果。
需要注意的是,`curve_fit`函数需要传入拟合函数和样本数据。如果拟合函数需要一些额外的参数,可以在调用`curve_fit`函数时传入。拟合函数的参数需要以一个元组的形式传入,使用`*`操作符展开。
阅读全文