Python表示非线性最小二乘法并画出拟合图
时间: 2023-07-11 18:52:08 浏览: 140
利用最小二乘法进行非线性拟合
要实现非线性最小二乘法,可以使用Python中的SciPy库中的optimize模块。具体步骤如下:
1. 导入必要的库和数据
```python
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
x = np.array([1, 2, 3, 4, 5, 6])
y = np.array([0.5, 2.5, 2.0, 4.0, 3.5, 6.0])
```
2. 定义非线性函数模型
这里我们采用一个简单的指数函数模型:
```python
def func(x, a, b, c):
return a * np.exp(-b * x) + c
```
3. 进行拟合
```python
popt, pcov = curve_fit(func, x, y)
```
其中,popt是最优拟合参数,pcov是协方差矩阵。
4. 绘制拟合曲线
```python
plt.plot(x, y, 'bo', label='data')
plt.plot(x, func(x, *popt), 'r-', label='fit')
plt.legend()
plt.show()
```
完整代码如下:
```python
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
x = np.array([1, 2, 3, 4, 5, 6])
y = np.array([0.5, 2.5, 2.0, 4.0, 3.5, 6.0])
def func(x, a, b, c):
return a * np.exp(-b * x) + c
popt, pcov = curve_fit(func, x, y)
plt.plot(x, y, 'bo', label='data')
plt.plot(x, func(x, *popt), 'r-', label='fit')
plt.legend()
plt.show()
```
运行代码,即可得到拟合图。
阅读全文