求最小二乘拟合源码 描述如下:多元线性方程组AX=B,令Y=AX,B是Y的测量值,找出X使Y与B的距离最小,请哪位高手给段源码,感激不尽,谢谢!如有其他方法,不用最小二乘也可以。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 void Min2Method(double &xyTopX, double &xyTopY, int X[], int Y[], int nCount)///////////////////////////////////////////////////////////////////////////////////////////// 功能描述:利用最小二乘法求斜率 ////////////////// xyTopX -- 截距 ////////////////// xyTopY -- 斜率//////// nCount -- 点数/////////////////////////////////////////////////////////////////////////////////////{ int i; double SumX, SumY, SumXY, SumX2; SumX = 0; SumX2 = 0; for( i=0; i<nCount; i++) { SumX += X[i]; SumX2 += (X[i]*X[i]); } SumY = 0; for( i=0; i<nCount; i++) { SumY += Y[i]; } SumXY = 0; for( i=0; i<nCount; i++) { SumXY += ( X[i]* Y[i]); } xyTopX = ( (SumX2*SumY - SumX*SumXY) / (nCount*SumX2 - SumX * SumX)); xyTopY = ( (nCount*SumXY - SumX*SumY) / (nCount*SumX2 - SumX * SumX));} void LineFit(){ float av_x,av_y; //声明变量 float L_xx,L_yy,L_xy; int i; //变量初始化 av_x=0; //X的平均值 av_y=0; //Y的平均值 L_xx=0; //Lxx L_yy=0; //Lyy L_xy=0; //Lxy int nPtCount; nPtCount = m_uCurveGraphStruct.m_uLine.GetSize(); for(i=0;i<nPtCount;i++) //计算X、Y的平均值 { av_x+=m_uCurveGraphStruct.m_uLine.GetAt(i).X/nPtCount; av_y+=m_uCurveGraphStruct.m_uLine.GetAt(i).Y/nPtCount; } for(i=0;i<nPtCount;i++) //计算Lxx、Lyy和Lxy { L_xx+=(m_uCurveGraphStruct.m_uLine.GetAt(i).X-av_x)*(m_uCurveGraphStruct.m_uLine.GetAt(i).X-av_x); L_yy+=(m_uCurveGraphStruct.m_uLine.GetAt(i).Y-av_y)*(m_uCurveGraphStruct.m_uLine.GetAt(i).Y-av_y); L_xy+=(m_uCurveGraphStruct.m_uLine.GetAt(i).X-av_x)*(m_uCurveGraphStruct.m_uLine.GetAt(i).Y-av_y); } if(nPtCount > 1) { GraphPoint p(L_xy/L_xx,av_y-L_xy*av_x/L_xx); m_KB = p; }}CArray <point,point> m_uLine; k = m_KB.X;b = m_KB.Y;y=kx+b 关于updatewindow函数 用mfc模拟实现 任务管理器 调用DLL的基本问题 〈〈〈〈〈 初学者问:请教一个类的问题 为什么我的程序在打印预览的时候 经过反复的狂刷会出现 单文档视图类GetDC结果为空的现象 ?? 关于VC的Winsock的数据通信问题,请大家多关照! 这个问题怎么解决:(? 血的教训--TOP托普的内幕!程序员的悲哀! 如何在MFC的按钮类中设置本按钮的鼠标形状? MFC 动态加载文档模板 使用我产生的模板 [二级C++]下列关于运算符重载的叙述中,正确的是? 关于文档模版的GetDocString,之前是怎么设置的呢?
/////////////////////////////////////////////////////////////////////////////////////
//////// 功能描述:利用最小二乘法求斜率 //////////
//////// xyTopX -- 截距 //////////
//////// xyTopY -- 斜率
//////// nCount -- 点数
/////////////////////////////////////////////////////////////////////////////////////
{
int i;
double SumX, SumY, SumXY, SumX2;
SumX = 0;
SumX2 = 0;
for( i=0; i<nCount; i++)
{
SumX += X[i];
SumX2 += (X[i]*X[i]);
}
SumY = 0;
for( i=0; i<nCount; i++)
{
SumY += Y[i];
} SumXY = 0;
for( i=0; i<nCount; i++)
{
SumXY += ( X[i]* Y[i]);
} xyTopX = ( (SumX2*SumY - SumX*SumXY) / (nCount*SumX2 - SumX * SumX));
xyTopY = ( (nCount*SumXY - SumX*SumY) / (nCount*SumX2 - SumX * SumX));
}
{
float av_x,av_y; //声明变量
float L_xx,L_yy,L_xy;
int i;
//变量初始化 av_x=0; //X的平均值
av_y=0; //Y的平均值
L_xx=0; //Lxx
L_yy=0; //Lyy
L_xy=0; //Lxy
int nPtCount;
nPtCount = m_uCurveGraphStruct.m_uLine.GetSize();
for(i=0;i<nPtCount;i++) //计算X、Y的平均值
{
av_x+=m_uCurveGraphStruct.m_uLine.GetAt(i).X/nPtCount;
av_y+=m_uCurveGraphStruct.m_uLine.GetAt(i).Y/nPtCount;
}
for(i=0;i<nPtCount;i++) //计算Lxx、Lyy和Lxy
{
L_xx+=(m_uCurveGraphStruct.m_uLine.GetAt(i).X-av_x)*(m_uCurveGraphStruct.m_uLine.GetAt(i).X-av_x);
L_yy+=(m_uCurveGraphStruct.m_uLine.GetAt(i).Y-av_y)*(m_uCurveGraphStruct.m_uLine.GetAt(i).Y-av_y);
L_xy+=(m_uCurveGraphStruct.m_uLine.GetAt(i).X-av_x)*(m_uCurveGraphStruct.m_uLine.GetAt(i).Y-av_y);
}
if(nPtCount > 1)
{
GraphPoint p(L_xy/L_xx,av_y-L_xy*av_x/L_xx);
m_KB = p;
}
}
CArray <point,point> m_uLine;
b = m_KB.Y;y=kx+b