www.pudn.com > cal_line.rar > abc.cpp


#include 
#include 
 
double CalculateCurveParameter(double X[],double Y[],long M,long N, 
							 double A[]) 
{ 
 long i,j,k; 
 double Z,D1,D2,C,P,G,Q; 
 double B[19],S[19],T[19]; 
 if(M>N)M=N; 
 if(M>20)M=20; 
 for(i=0;i1) 
 { 
  T[1]=1; 
  T[0]=(-1)*P; 
  D2=0; 
  C=0; 
  G=0; 
  for(i=0;i=3) 
  { 
   for(k=j-2;k>=1;k--) 
    S[k]=(-1)*P*T[k]+T[k-1]-Q*B[k]; 
  } 
  S[0]=(-1)*P*T[0]-Q*B[0]; 
  D2=0; 
  C=0; 
  G=0; 
  for(i=0;i=0;k--) 
    Q=Q*(X[i]-Z)+S[k]; 
   D2=D2+Q*Q; 
   C=Y[i]*Q+C; 
   G=(X[i]-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 A[M-1]; 
 
} 
 
 
void main(void) 
{ 
	double X[3],Y[3]; 
	for(int i=0;i<4;i++) 
	{    
		cout<<"X="; 
		cin>>X[i]; 
		cout<<"Y="; 
		cin>>Y[i]; 
	} 
    double A[2]; 
	CalculateCurveParameter(X,Y,3,4,A); 
	double a,b,c; 
	c=A[0]; 
	b=A[1]; 
	a=A[2]; 
	cout<<"a="<