特别是3和4 帮帮忙

题目一:线性最小二乘拟合程序
某系统输入输出呈线性关系:Y=日×+b,但参数
a、b未知。通过对系统输入(叉)和输出(Y)的数据统计,应用最小二乘估计确定a和b的值。现有一次
测量活动得到如下10组[义,Y]数据:
[1,9.762]
[2, 12.719]
[3, 15.497]
【4,18.143]
[5, 18.982]
[6, 21.008]
[7, 24.596]
[8, 26.285]
[9, 29.369]
[10,31.17]
请编程实现:输入上述测量数据后,输出参数a和b的值,以及10个测量值的离差(离差:应用拟合函数计算的Y值与测量的Y值之差)。
程序要求:
()一切计算过程全部用程序实现,具备通用性,即可以拟合任意Y=a
X+b型线性关系;
(2) 自主查找资料,通过编程实现,尽量不要使用网
可以查询到的解析表达式
(3)计算完成后,可将数据导入Excel显示测量数据
(散点)和拟合后的直线,并将该显示图形加入到结题报告中;
(4) 输出数据可以输出到文本文件

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
    // 输入10组测量数据
    int x[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    double y[10] = {9.762, 12.719, 15.497, 18.143, 18.982, 21.008, 24.596, 26.285, 29.369, 31.17};
    // 计算和
    double sumx = 0, sumy = 0, sumxy = 0, sumxx = 0;
    for (int i = 0; i < 10; i++)
    {
        sumx += x[i];
        sumy += y[i];
        sumxy += x[i] * y[i];
        sumxx += x[i] * x[i];
    }

    // 计算参数a和b
    double a = (10 * sumxy - sumx * sumy) / (10 * sumxx - sumx * sumx);
    double b = (sumxx * sumy - sumxy * sumx) / (10 * sumxx - sumx * sumx);

    // 输出参数a和b的值
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

    // 计算10个测量值的离差
    cout << "The residuals are:"
    for (int i = 0; i < 10; i++)
    {
        cout << y[i] - (a * x[i] + b) << endl;
    }

    return 0;
}

(以上代码均由chatGPT自动生成)

最小二乘法线性拟合
https://blog.csdn.net/yangziluomu/article/details/103503387