80分急求:用c++写成的最小二乘法的源代码,该如何解决

80分急求:用c++写成的最小二乘法的源代码
80分急求:用c++写成的最小二乘法的源代码   问题描述:本人要做一个最小2乘法的曲线拟合的vc程序,现在已经得到了在假定坐标轴下面的5个点的坐标,分别存放在x[],y[]数组里面,现在需要根据已知点的坐标求出曲线拟合的2次多项式的3个系数,本来想用matlab去拟合的,可是在vc中如何使用matlab的polyfit函数不太会用,于是自己想找一个c++的最小二乘法的曲线拟合的函数自己调用,希望有过此类编程经验的高手能够帮忙救急,能够提供c语言的最小2乘法的函数,决不吝啬分数,解决即给分,谢谢了!!!!

------解决方案--------------------
typedef CArrayCDoubleArray;
BOOL CalculateCurveParameter(CDoubleArray *X,CDoubleArray *Y,long M,long N,CDoubleArray *A)
{
//X,Y -- X,Y两轴的坐标
//M -- 结果变量组数
//N -- 采样数目
//A -- 结果参数

register long i,j,k;
double Z,D1,D2,C,P,G,Q;
CDoubleArray B,T,S;
B.SetSize(N);
T.SetSize(N);
S.SetSize(N);
if(M> N)M=N;
for(i=0;i (*A)=0;
Z=0;
B[0]=1;
D1=N;
P=0;
C=0;
for(i=0;i {
P=P (*X)-Z;
C=C (*Y);
}
C=C/D1;
P=P/D1;
(*A)[0]=C*B[0];
if(M> 1)
{
T[1]=1;
T[0]=-P;
D2=0;
C=0;
G=0;
for(i=0;i {
Q=(*X)-Z-P;
D2=D2 Q*Q;
C=(*Y)*Q C;
G=((*X)-Z)*Q*Q G;
}
C=C/D2;
P=G/D2;
Q=D2/D1;
D1=D2;
(*A)[1]=C*T[1];
(*A)[0]=C*T[0] (*A)[0];
}
for(j=2;j {
S[j]=T[j-1];
S[j-1]=-P*T[j-1] T[j-2];
if(j> =3)
{
for(k=j-2;k> =1;k--)
S[k]=-P*T[k] T[k-1]-Q*B[k];
}
S[0]=-P*T[0]-Q*B[0];
D2=0;
C=0;
G=0;
for(i=0;i {
Q=S[j];
for(k=j-1;k> =0;k--)
Q=Q*((*X)-Z) S[k];
D2=D2 Q*Q;
C=(*Y)*Q C;
G=((*X)-Z)*Q*Q G;
}
C=C/D2;
P=G/D2;
Q=D2/D1;
D1=D2;
(*A)[j]=C*S[j];
T[j]=S[j];
for(k=j-1;k> =0;k--)
{
(*A)[k]=C*S[k] (*A)[k];
B[k]=T[k];
T[k]=S[k];
}
}
return TRUE;
}

------解决方案--------------------
参考:
//最小二乘法直线拟合
BOOL CalculateLineKB(CFoldPointList *m_FoldList,double &k,double &b)
{
//最小二乘法直线拟合
//m_FoldList为关键点(x,y)的链表
//拟合直线方程(Y=kX+b)


if(m_FoldList==NULL)return FALSE;
long lCount=m_FoldList-> GetCount();
if(lCount <2)return FALSE;
CFoldPoint *pFold;
double mX,mY,mXX,mXY,n;
mX=mY=mXX=mXY=0;
n=lCount;
POSITION pos=m_FoldList-> GetHeadPosition();
while(pos != NULL)
{
pFold=m_FoldList-> GetNext(pos);
mX+=pFold-> X;
mY+=pFold-> Y;
mXX+=pFold-> X*pFold-> X;
mXY+=pFold-> X*pFold-> Y;
}
if(mX*mX-mXX*n==0)return FALSE;
k=(mY*mX-mXY*n)/(mX*mX-mXX*n);
b=(mY-mX*k)/n;
return TRUE;
}
------解决方案--------------------
http://xinsoft.org/modules/newbb/viewtopic.php?topic_id=435&forum=2&PHPSESSID=aafcc10ddd9ea70c8b39d929d75115fb
http://xinsoft.org/modules/newbb/viewtopic.php?topic_id=436&forum=2&PHPSESSID=aafcc10ddd9ea70c8b39d929d75115fb
------解决方案--------------------
m是结果变量组数,这个是什么意思啊,我不太清楚,能否说得清楚一点???
===================================
就是说拟和结果在 M 这个数组中......