用Python写一个最小二乘法拟合曲线的代码
时间: 2024-03-06 08:47:11 浏览: 95
least_square_method_least_square_method_jupyternotebook_最小二乘法_
[i].score[0] + students[i].score[1] + students[i].score[2];
printf("%d\t\t%s以下是用Python实现最小二乘法拟合曲线的代码。以线性函数为例:
```python
import\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n", students[i].id, students[i numpy as np
import matplotlib.pyplot as plt
# 生成随机数据
x = np.linspace(0, 10, 50].name, students[i].score[0], students[i].score[1], students[i].score[2], total);
}
)
y = 2 * x + 1 + np.random.randn(50)
# 构造矩阵
X = np.vstack([x } else {
// 学生查询自己的成绩
int i;
for (i = 0; i < student, np.ones(len(x))]).T
# 最小二乘法求解
k, b = np.linalg.lstsq(X, y_count; i++) {
if (students[i].id == id) {
float total = students[i].score[0] + students, rcond=None)[0]
# 绘制拟合曲线
plt.plot(x, y, 'o', label='Original data',[i].score[1] + students[i].score[2];
printf("学生ID:%d\n", students[i].id);
markersize=5)
plt.plot(x, k*x+b, 'r', label='Fitted line')
plt.legend()
plt.show()
`` printf("姓名:%s\n", students[i].name);
printf("数学成绩:%.2f\n", students[i`
解释一下各个步骤:
1. 首先生成50个随机数据点,其中y值是2x+].score[0]);
printf("英语成绩:%.2f\n", students[i].score[1]);
printf("计1加上一些随机噪声。
2. 构造矩阵X,其中第一列是x的值,第二算机成绩:%.2f\n", students[i].score[2]);
printf("总成绩:%.2f\n",列全是1,形式为[[x_1, 1], [x_2, 1], ..., [x_n, 1]]。
3. 使用Numpy的lstsq函数求解线性方程组,得到k和b的值。
total);
return;
}
}
printf("未找到该学生!\n");
}
}
// 添加教4. 绘制原始数据点和拟合曲线。
当然,如果要拟合其他函数形式的曲线,需要对矩阵X进行相应的修改。
阅读全文