// *input: 存储数据的数组
//size: 数组中实际保存了多少数据
int LSQ_adjust(double *input, long size) {
double a11(0.0), a12(0.0), a21(0.0), a22(0.0), b1(0.0), b2(0.0);
double a(0.0), b(0.0);
long i(0);
for (i = 0;
i < size;
i++)
{
a11 = a11 + i * i;
a12 = a12 + i;
a21 = a21 + i;
a22 = size;
b1 = b1 + i * input[i];
b2 = b2 + input[i];
} //计算直线系数
b = (b1 / a11 - b2 / a21) / (a12 / a11 - a22 / a21);
a = b1 / a11 - a12 / a11 * b;
for (i = 0;
i < size;
i++)
{
input[i] = input[i] - (a * i + b);
} return 0;
}
【C++|【C++】代码实现(最小二乘法)】
推荐阅读
- C++|C++动态内存管理
- codeforces竞赛|Codeforces Round #810 (Div. 2)【比赛记录】
- ccpc|The 2021 CCPC Weihai Onsite E. CHASE!
- 树上dp|树的最小支配集和最小点覆盖
- 牛客竞赛|牛客挑战赛59 B 游戏【dp】
- c++|基于C++的OpenCV(八)图像处理
- c++|C++入门——类、对象、运算符重载
- 我用过的设计模式|我用过的设计模式(3)-- 观察者模式
- QT|基于C++的Qt(一)概述