用最小二乘法进行拟合,最小化残差平方和,怎么用代码计算?
时间: 2023-07-01 11:29:35 浏览: 136
最小二乘法是一种常见的拟合方法,可以通过最小化残差平方和来得到最优的拟合结果。以下是用Python代码实现最小二乘法拟合的示例:
```python
import numpy as np
import matplotlib.pyplot as plt
# 构造数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([1.2, 2.8, 3.6, 4.1, 5.5])
# 拟合函数
def fit_func(p, x):
a, b = p
return a * x + b
# 残差函数
def residuals_func(p, x, y):
return fit_func(p, x) - y
# 初始参数值
p0 = [1, 1]
# 最小二乘法拟合
from scipy.optimize import leastsq
plsq = leastsq(residuals_func, p0, args=(x, y))
# 输出拟合参数
print("拟合参数:", plsq[0])
# 绘制拟合曲线
plt.plot(x, y, 'o', label='原始数据')
plt.plot(x, fit_func(plsq[0], x), label='拟合曲线')
plt.legend()
plt.show()
```
在上面的示例中,我们通过构造数据、定义拟合函数和残差函数,使用`leastsq`函数进行最小二乘法拟合,并绘制出拟合曲线。其中,`leastsq`函数的第一个参数是残差函数,第二个参数是初始参数值,第三个参数是数据。最后,函数返回的`plsq[0]`即为拟合参数。
需要注意的是,最小二乘法只适用于线性模型,对于非线性模型,需要使用其他的拟合方法,如最小二乘法配合非线性优化算法。
阅读全文