python最小二乘拟合
时间: 2023-07-05 12:21:50 浏览: 141
使用Python进行最小二乘拟合可以使用NumPy和SciPy库中的polyfit函数,步骤如下:
1.导入NumPy和SciPy库:
```python
import numpy as np
from scipy.optimize import curve_fit
```
2.定义最小二乘拟合函数:
```python
def func(x, a, b, c):
return a * x ** 2 + b * x + c
```
其中,x为自变量,a、b、c为待求系数。
3.获取数据并进行拟合:
```python
xdata = np.array([1, 2, 3, 4, 5, 6])
ydata = np.array([3.2, 5.1, 7.4, 9.5, 11.8, 13.7])
popt, pcov = curve_fit(func, xdata, ydata)
```
其中,popt为拟合系数,pcov为系数的协方差矩阵。
4.绘制拟合曲线:
```python
import matplotlib.pyplot as plt
plt.plot(xdata, ydata, 'b-', label='data')
plt.plot(xdata, func(xdata, *popt), 'r-', label='fit')
plt.legend()
plt.show()
```
其中,'b-'表示数据的颜色和线型,'r-'表示拟合曲线的颜色和线型。
完整代码如下:
```python
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
def func(x, a, b, c):
return a * x ** 2 + b * x + c
xdata = np.array([1, 2, 3, 4, 5, 6])
ydata = np.array([3.2, 5.1, 7.4, 9.5, 11.8, 13.7])
popt, pcov = curve_fit(func, xdata, ydata)
plt.plot(xdata, ydata, 'b-', label='data')
plt.plot(xdata, func(xdata, *popt), 'r-', label='fit')
plt.legend()
plt.show()
```
阅读全文