[2018年最新整理]二次样条插值及其C语言的实现.docVIP

[2018年最新整理]二次样条插值及其C语言的实现.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[2018年最新整理]二次样条插值及其C语言的实现

1、实验要求:用C语言编程实现三次样条插值函数及曲线拟合的最小二乘法的求解。 2、实验目的: (、通过编程加深对三次样条插值及曲线拟合的最小二乘法的理解; (、学习用计算机解决工程问题,主要包括数据处理与分析。 3、 程序说明: (、三次样条插值函数的求法: 分析:在解线性方程组确定M值时,因为矩阵是三对角阵,所以我用克拉默法则=进行求解,其中D为三对角阵的行列式,值为2^12。 程序如下: #includestdio.h void main() { double x[12],y[12],u[11],v[11],g[12]; //x[12]用于存放点的横坐标,y[12]用于存放点的纵坐标,u[11]用于存放μ1~μ10 //v[11]用于存放λ1~λ10,g[12]用于存放g0~g11 int i,j=0; int AllD=1; //三角对阵的行列式 double Mv=1,Mu=1; //Mv表示λ1*λ2*…*λ10,Mu表示μ1*μ2*…*μ10 double M[12],X3[11],X2[11],X1[11],X0[11]; //M[12]用于存放M0~M11,X3[11]用于存放x^3的系数,X2[11]用于存放x^2的系数, //X1[11]用于存放x的系数,X0[11]用于存放常数项的系数 printf(Please input x(i):\n); for(i=0;i12;i++) x[i]=0; for(i=0;i12;i++) scanf(%lf,x[i]); printf(Please input y(i):\n); for(i=0;i12;i++) scanf(%lf,y[i]); for(i=1;i11;i++) { u[i]=(x[i]-x[i-1])/(x[i+1]-x[i-1]); //μ1~μ10的求解公式 v[i]=1-u[i]; //λ1~λ10的求解公式 g[i]=(6/(x[i+1]-x[i-1]))*((y[i+1]-y[i])/(x[i+1]-x[i])-(y[i]-y[i-1])/(x[i]-x[i-1])); //g1~g10的求解公式 } g[0]=(6/(x[1]-x[0]))*((y[1]-y[0])/(x[1]-x[0])-0.75); //g0的求解公式 g[11]=(6/(x[11]-x[10]))*(18-(y[11]-y[10])/(x[11]-x[10])); //g11的求解公式 printf(u(1) to u(10):\n); for(i=1;i11;i++) { printf( %f , u[i]); j++; if(j%4==0) printf(\n); } printf(\n); j=0; printf(v(1) to v(10):\n); for(i=1;i11;i++) { printf( %f , v[i]); j++; if(j%4==0) printf(\n); } printf(\n); j=0; printf(g(0) to g(11):\n); for(i=0;i12;i++) { printf( %f , g[i]); j++; if(j%4==0) printf(\n); } for(i=1;i=12;i++) AllD=AllD*2; for(i=1;i=10;i++) { Mv=Mv*v[i]; Mu=Mu*u[i]; } //采用克拉默法则进行线性方程组的求解x[i]=D[i]/D double D[12]; D[0]=g[0]*AllD/2+Mv*g[11]; D[11]=g[11]*AllD/2+Mu*g[0]; for(i=1;i=10;i++) D[i]=g[i]*AllD/2; for(i=0;i=11;i++) M[i]=D[i]/AllD; for(i=1;i=11;i++) { X3[i]=(M[i]-M[i-1])/(6*(x[i]-x[i-1])); //计算想x^3系数的公式 X2[i]=(x[i]*M[i-1]-x[i-1]*M[i])/(2*(x[i]-x[i-1])); //计算想x^2系数的公式 X1[i]=(-x[i]*

文档评论(0)

liwenhua11 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档