最小二乘法python拟合抛物线方程组
时间: 2023-12-06 20:38:53 浏览: 197
以下是使用最小二乘法拟合抛物线方程组的Python代码:
```python
import numpy as np
from scipy.optimize import leastsq
import matplotlib.pyplot as plt
# 定义抛物线方程
def func(x, p):
a, b, c = p
return a * x ** 2 + b * x + c
# 定义误差函数
def error(p, x, y):
return func(x, p) - y
# 生成随机数据
x = np.linspace(-5, 5, 100)
a, b, c = 2, 3, 1
y = func(x, [a, b, c]) + np.random.randn(len(x))
# 初始值
p0 = [1, 1, 1]
# 最小二乘拟合
res = leastsq(error, p0, args=(x, y))
# 拟合结果
a_fit, b_fit, c_fit = res[0]
print("拟合结果:a={:.2f}, b={:.2f}, c={:.2f}".format(a_fit, b_fit, c_fit))
# 绘制拟合曲线和原始数据
plt.plot(x, y, 'bo', label='Original data')
plt.plot(x, func(x, [a_fit, b_fit, c_fit]), 'r-', label='Fitted curve')
plt.legend()
plt.show()
```
解释一下代码的主要步骤:
1. 定义抛物线方程和误差函数。
2. 生成随机数据。
3. 定义初始值。
4. 使用`leastsq`函数进行最小二乘拟合。
5. 输出拟合结果。
6. 绘制拟合曲线和原始数据。
阅读全文