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;i 1) { 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="<