python实现加权最小二乘法,九阶拟合,并画出拟合曲线
时间: 2025-01-08 07:01:44 浏览: 4
在Python中,我们可以使用`numpy`库和`matplotlib`库来实现加权最小二乘法的九阶多项式拟合并绘制拟合曲线。首先,你需要安装这两个库,如果没有安装可以使用pip安装:
```bash
pip install numpy matplotlib
```
下面是一个简单的示例,假设我们有数据点`(x_data, y_data)`以及对应的权重`w_data`:
```python
import numpy as np
import matplotlib.pyplot as plt
# 假设我们有一个列表存储x值、y值和权重
x_data = np.array([...])
y_data = np.array([...])
w_data = np.array([...])
# 加权最小二乘法九阶多项式拟合
def polyfit_wls(degree, x, y, weights):
p = np.polyfit(x, y, degree, w=weights)
return p
# 计算拟合系数
coefficients = polyfit_wls(9, x_data, y_data, w_data)
# 拟合函数
def polynomial_function(coefficients, x):
return np.polyval(coefficients, x)
# 创建等间距的x轴范围用于绘制
x_range = np.linspace(min(x_data), max(x_data), 400)
# 计算拟合曲线
y_fit = polynomial_function(coefficients, x_range)
# 绘制原始数据和拟合曲线
plt.scatter(x_data, y_data, s=50, alpha=0.5, label='Data')
plt.plot(x_range, y_fit, 'r', lw=2, label='Fitted curve')
# 设置图例和其他样式
plt.legend()
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Weighted Least Squares Fit - 9th Degree Polynomial')
plt.grid(True)
plt.show()
阅读全文