最小二乘拟合直线(曲线拟合)
【问题描述】根据N个数据点构造最小二乘拟合直线y=ax+b。
【输入形式】在屏幕上依次输入数据点的个数N,和N对数据点的x和y坐标。
【输出形式】输出最小二乘拟合直线y=ax+b和误差。
【样例1输入】
8
-1 10
0 9
1 7
2 5
3 4
4 3
5 0
6 -1
【样例1输出】
y=-1.60714x+8.64286
1.18019
【样例1说明】
输入:有8对数据点,后续每行是一对数据点的x和y坐标。
输出:最小二乘拟合直线为y=-1.60714x+8.64286,误差(norm2范数,即欧式距离)为1.18019,如果有多位小数,则保留6位有效数字。
【评分标准】根据输入得到的输出准确
#include<iostream>
#include<cmath>
using namespace std;
int n;//8对点
int X[50][2];//存放n对点的x,y坐标
double p[2] = {
0};//存均值
double C[2] = {
0};//存方差*n 就是C=∑(xi-x均)²
double summ, sum=0;
double A, B;
int main()
{
cin >> n;
for (int i = 0;