描述如下:多元线性方程组AX=B,令Y=AX,B是Y的测量值,找出X使Y与B的距离最小,请哪位高手给段源码,感激不尽,谢谢!如有其他方法,不用最小二乘也可以。
解决方案 »
- 对话框没有TitleBar,在任务栏中怎么显示caption呢?
- VC应用程序DEBUG版本无法看到printf信息
- 急!急!急!如何修改服务器返回来的消息
- 怎么实现在一个对话框里按一个按钮,打开另一个对话框?
- PeekMessage和GetMessage的区别
- 如何实现异步ping,也就是ICMP回复/应答包(高手请进,高分相送)
- 请教一个https协议分析的解决方法
- 关于光驱的相关问题
- 简单问题,如何关闭一个MDI里面的子窗体
- 请问ado中如何用select对SQL Server数据库中的表进行查询?(分还可以再加)
- [二级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