用最小二乘法拟合求3次龙格函数曲线拟合的PYTHON实现
时间: 2024-05-03 16:22:29 浏览: 134
以下是使用Python实现3次龙格函数曲线拟合的最小二乘法拟合示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义龙格函数
def runge(x):
return 1 / (1 + 25 * x ** 2)
# 生成数据
x = np.linspace(-1, 1, 21)
y = runge(x) + np.random.normal(0, 0.1, len(x))
# 定义3次龙格函数模型
def model(x, w):
return w[0] * runge(x) + w[1] * runge(x - 1/3) + w[2] * runge(x + 1/3)
# 定义误差函数
def error(w):
return np.sum((model(x, w) - y) ** 2)
# 使用最小二乘法拟合
from scipy.optimize import minimize
w0 = np.zeros(3)
res = minimize(error, w0)
# 绘制拟合曲线
x_plot = np.linspace(-1, 1, 100)
y_plot = model(x_plot, res.x)
plt.plot(x, y, 'o', label='data')
plt.plot(x_plot, y_plot, label='fit')
plt.legend()
plt.show()
```
上述代码中,首先定义了龙格函数 `runge`,并在其基础上生成了带有噪声的数据。然后定义了3次龙格函数模型 `model` 和误差函数 `error`,并使用 `scipy.optimize.minimize` 函数进行最小二乘拟合。最后绘制拟合曲线。
阅读全文
相关推荐


















