最小二乘法c 语言程序,最小二乘法C语言编程.docx

最小二乘法C语言编程

#include /* common defines and macros */#include "derivative.h" /* derivative-specific definitions */float a[3][3]={0};float a8[]={1,2,3,4,5,6,7,8,9,10,11,12,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27} ;float a9[]={147,155,146,146,144,146,145,144,143,146,146,149,147,148,150,152,155,157,160,163,168,173,175,177,180,199,203} ; float b[3][1]={0}; float b3[3][1]; float b4[3][3]; float b1[3][3]={0}; float a1[3][3]={0}; float x,x1,x2,x3,x4,x5,x6,x7,x8,x9,c,*p,*pp,*ppp; int i,j,ii,jj,d1=0;void main(void) { /最小二乘初始化// x=0;p=a9;for(i=0;i<10;i++)x+=*(p++);pp=*(b+0);*(pp++)=x; x=0; p=a8; for(ii=0;ii<3;ii++) { if(ii==0){ pp=*(a+0); *(pp++)=10; for(i=0;i<10;i++) x1=x+=*(p++); *(pp++)=x; p=a8; for(i=0;i<10;i++) { x=*(p++); x2+=x*x; } *(pp++)=x2; } if(ii==1){ pp=*(a+1); *(pp++)=x1; *(pp++)=x2; p=a8; x1=0; for(i=0;i<10;i++) { x=*(p++); x1+=x*x*x; } *(pp++)=x1; } if(ii==2) { pp=*(a+2); *(pp++)=x2; *(pp++)=x1; x3=0; p=a8; for(i=0;i<10;i++) { x=*(p++); x2=x*x*x*x; x3+=x2; } *(pp++)=x3; } }pp=*(b+1); p=a9; ppp=a8; x3=0; for(i=0;i<10;i++) { x=*(p++); x2=*(ppp++); x3+=x*x2; } *pp=x3; pp=*(b+2); p=a9; ppp=a8; x3=0; for(i=0;i<10;i++) { x=*(p++); x2=*(ppp++); x3+=x*x2*x2; } *pp=x3; ///求矩阵的模 p=*(a+0); c=*p; p=*(a+1); p++; for(i=1;i<3;i++) {for( j=1;j<3;j++) {switch (d1) { case 0:x=x1= *(p++); d1++;break; case 1:x4=x5= *(p++); d1++;break; case 2:x2= *(++p); d1++;break; case 3:x3= *(++p); break; } } }x7=c*(x1*x3-x5*x2); p=*(a+1); c=*p; p=*(a+0); p++; x1=*(p++); x5=*p; x8=c*(x1*x3-x5*x2); p=*(a+2); c=*p; x9=c*(x1*x4-x5*x); c=1/(x7-x8+x9);/求伴随阵// p=*(a+0); x1=*(p++); x2=*(p++); x3=*(p++); p=*(a+1); x4=*(p++); x5=*(p++); x6=*(p++); p=*(a+2); x7=*(p++); x8=*(p++); x9=*(p++); p=*(b1+0); *(p++)=(x5*x9-x6*x8); *(p++)=-1*(x2*x9-x3*x8); *(p++)=(x2*x6-x3*x5); p=*(b1+1); *(p++

你可能感兴趣的:(最小二乘法c,语言程序)