下载此文档

C语言曲线拟合.doc


文档分类:IT计算机 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
C 语言曲线拟合#include <> #include <> #include <> #include <> Smooth(double *,double *,double *,int,int, double *,double *,double *); void main() { int i,n,m; double *x,*y,*a,dt1,dt2,dt3,b; n= 20; m= 6; b= 0; /* 分别为 x,y,a 分配存贮空间*/ x= (double *)calloc(n,sizeof(double)); if(x == NULL) { printf( " 内存分配失败\n "); exit (0); }y= (double *)calloc(n,sizeof(double)); if(y == NULL) { printf( " 内存分配失败\n "); exit (0); }a= (double *)calloc(n,sizeof(double)); if(a == NULL) { printf( " 内存分配失败\n "); exit (0); } for(i=1;i <=n;i++) { x[i-1]=b+(i-1)*; /* 每隔 取一个点,这样连续取 n 个点*/ y[i-1]=x[i-1]-exp(-x[i-1]); //y[i-1] = x[i-1]*x[i-1]*x[i-1]; //y[i-1] = x[i-1] ; /* 计算 x[i-1] 点对应的 y 值作为拟合已知值*/ } Smooth(x,y,a,n,m,&dt1,&dt2,&dt3); /* 调用拟合函数*/ for(i=1;i <=m;i++) printf( "a[%d] = %.10f\n ",(i-1),a[i-1]); printf( " 拟合多项式与数据点偏差的平方和为: \n "); printf( "%.10e\n ",dt1); printf( " 拟合多项式与数据点偏差的绝对值之和为: \n "); printf( "%.10e\n ",dt2); printf( " 拟合多项式与数据点偏差的绝对值最大值为: \n "); printf( "%.10e\n ",dt3); free(x); /* 释放存储空间*/ free(y); /* 释放存储空间*/ free(a); /* 释放存储空间*/ } Smooth(double *x,double *y,double *a,int n,int m,double *dt1,double *dt2,double *dt3 ) // //double *x; /* 实型一维数组,输入参数,存放节点的 xi值*/ // //double *y; /* 实型一维数组,输入参数,存放节点的 yi值*/ // //double *a; /* 双精度实型一维数组, 长度为 m。返回 m一1 次拟合多项式的 m个系数*/ // //int n; /* 整型变量,输入参数,给定数据点的个数*/ // //int m; /* 整型变量,输入参数,拟合多项式的项数*/ // //double *dt1; /* 实型变量,输出参数,拟合多项式与数据点偏差的平方和*/ // //double *dt2; /* 实型变量,输出参数,拟合多项式与数据点偏差的绝对值之和*/ // //double *dt3; /* 实型变量, 输出参数, 拟合多项式与数据点偏差的绝对值最大值*/ { int i,j,k; double *s,*t,*b,z,d1,p,c,d2,g,q,dt; /* 分别为 s,t,b 分配存贮空间*/ s= (double *)calloc(n,sizeof(double)); if(s == NULL) { printf( " 内存分配失败\n "); exit (0); }t= (double *)calloc(n,sizeof(double)); if(t == NULL) { printf( " 内存分配失败\n "); exit (0); }b= (double *)calloc(n,sizeof(double)); if(b == NULL) { printf( " 内存分配失败\n "); exit (0); } z= 0; for(i=1;i <=n;i++) z=z+x[i-1]/n; /*z 为各个 x 的平均值*/ b[0]=1; d1=n; p=0; c=0; for(i=1;i <=n;i++) { p=p+x[i-1]-z; c=c+y[i-1]; } c=c/d1; p=p/d

C语言曲线拟合 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人df158687
  • 文件大小0 KB
  • 时间2016-06-23