浅议最小二乘法
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。
C++实现:
/* 最小二乘法 * b=(NΣxy-ΣxΣy)/(NΣx^2-(Σx)^2) * a=y(平均)-b*x(平均) **/ #include <iostream> using namespace std; double sum_xy=0,sum_x_2=0,sum_x=0,sum_y=0; int n; double Least_Square_b(double * X,double * Y); int main() { cout<<"请输入已知节点数目:"; cin>>n; double *X=new double[n]; double *Y=new double[n]; cout << "请输入已知点的坐标(以Ctrl+Z结束输入):" << endl; int i=0; while(!cin.eof()) { cin >> *(X+i) >> Y[i]; i++; } //求出sum_xy,sum_x_2,sum_x,sum_y for(int i=0;i<n;i++) { sum_x += X[i]; sum_y += Y[i]; sum_xy+= X[i]*Y[i]; sum_x_2+=X[i]*X[i]; } cout<<sum_x<<"\t"<<sum_x_2<<"\t"<<sum_xy<<"\t"<<sum_y; cout << "请输入要求解的值的横坐标:"; double x; cin>>x; double b; b=Least_Square_b(X,Y); double a; a = sum_y/n-b*sum_x/n; cout <<"a="<<a<<"\tb="<<b<<endl; cout <<"所求为:"<<a+x*b<<endl; getchar(); getchar(); return 0; } double Least_Square_b(double * X,double * Y) { return (n*sum_xy-sum_x*sum_y)/(n*sum_x_2-sum_x*sum_x); }
本文来自博客园,作者:Arthurian,转载请注明原文链接:https://www.cnblogs.com/Arthurian/p/7844932.html
欢迎邮件交流:zhuanxinxin@aliyun.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)