C语言多项式拟合测试程序.doc

上传人:scccc 文档编号:13801238 上传时间:2022-01-24 格式:DOC 页数:2 大小:36KB
返回 下载 相关 举报
C语言多项式拟合测试程序.doc_第1页
第1页 / 共2页
C语言多项式拟合测试程序.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《C语言多项式拟合测试程序.doc》由会员分享,可在线阅读,更多相关《C语言多项式拟合测试程序.doc(2页珍藏版)》请在三一文库上搜索。

1、#include #include #include #include main()int i,j,m,n=7,poly_n=2;double x7=1,2,3,4,6,7,8,y7=2,3,6,7,5,3,2;double a3;void polyfit(int n,double *x,double *y,int poly_n,double a);system(cls); polyfit(n,x,y,poly_n,a);for (i=0;ipoly_n+1;i+)/* 这里是升序排列, Matlab 是降序排列 */ printf(a%d=%g/n,i,ai);getch();/*=poly

2、fit(n,x,y,poly_n,a)=*/*=拟合 y=a0+a1*x+a2*x人2+ +apoly_n*xpoly_n=*/*=n 是数据个数 xy 是数据值 poly_n 是多项式的项数 =*/*=返回a0,a1,a2, apoly_n系数比项数多一(常数项)=*/void polyfit(int n,double x,double y,int poly_n,double a)int i,j;double *tempx,*tempy,*sumxx,*sumxy,*ata;void gauss_solve(int n,double A,double x,double b); tempx=c

3、alloc(n,sizeof(double);sumxx=calloc(poly_n*2+1,sizeof(double);tempy=calloc(n,sizeof(double);sumxy=calloc(poly_n+1,sizeof(double);ata=calloc(poly_n+1)*(poly_n+1),sizeof(double);for (i=0;in;i+)tempxi=1; tempyi=yi;for (i=0;i2*poly_n+1;i+)for (sumxxi=0,j=0;jn;j+)sumxxi+=tempxj;tempxj*=xj;for (i=0;ipoly_

4、n+1;i+)for (sumxyi=0,j=0;jn;j+)sumxyi+=tempyj; tempyj*=xj;for (i=0;ipoly_n+1;i+)for (j=0;jpoly_n+1;j+) atai*(poly_n+1)+j=sumxxi+j; gauss_solve(poly_n+1,ata,a,sumxy);free(tempx); free(sumxx); free(tempy); free(sumxy); free(ata); void gauss_solve(int n,double A,double x,double b)int i,j,k,r;double max

5、;for (k=0;kn-1;k+)max=fabs(Ak*n+k); /*find maxmum*/r=k;for (i=k+1;in-1;i+)if (maxfabs(Ai*n+i)max=fabs(Ai*n+i);r=i;if (r!=k)for (i=0;in;i+) /*change array:Ak&Ar */max=Ak*n+i;Ak*n+i=Ar*n+i;Ar*n+i=max;max=bk;/*change array:bk&br*/bk=br;br=max;for (i=k+1;in;i+)for (j=k+1;j=0;xi/=Ai*n+i,i-)for (j=i+1,xi=bi;jn;j+)xi-=Ai*n+j*xj;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1