C++_数值分析_三次样条插值_自动选取步长梯形法_Romberg求积法_列主元高斯消去法_列主元LU分解法_Jacobi迭.docxVIP

C++_数值分析_三次样条插值_自动选取步长梯形法_Romberg求积法_列主元高斯消去法_列主元LU分解法_Jacobi迭.docx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE  PAGE 16 数值分析上机实验报告之样条插值 1.三次样条插值(初值条件1): P52.9、给定函数y=fx的函数表和边界条件s75=0,s80=0,求三次样条插值函数s(x),并求f(78.3)的近似值。 函数表 x757677787980y=fx2.7682.8332.9032.9793.0623.153 源代码:yangtiao.cpp #includeiostream.h #includemath.h void main() { int choice = 0; int n = 2; double xx,*x, *y,*a,*b,*a1,*b1,*h,*m; cout请输入插值节点个数n:endl; cin n; x = new double[n]; y = new double[n]; a = new double[n]; b = new double[n]; a1 = new double[n]; b1 = new double[n]; h = new double[n-1]; m = new double[n+1]; cout请输入n个插值的节点(xi,yi):endl; for (int i = 0 ; i n ; i++) { cinx[i]y[i]; } for (int j = 0 ; j n-1 ; j++) { h[j] = x[j+1] - x[j]; } cout请输入待估点xx:endl; cinxx; cout请选择边界条件:endl; cinchoice; switch(choice) { case 1: { double temp1,temp2; a[0] = 0; a[n-1] = 1; cout请输入边界条件的两个一阶微商值s(x1)与s(xn):endl; cintemp1temp2; b[0] = 2*temp1; b[n-1] = 2*temp2; break; } case 2: { a[0] = 1; a[n-1] = 0; b[0] = 3/h[0]*(y[1]-y[0]); b[n-1] = 3/h[n-2]*(y[n-1]-y[n-2]); break; } } for (int k = 1 ; kn-1 ; k++) { a[k] = h[k-1]/(h[k-1]+h[k]); b[k] = 3*( (1-a[k])/h[k-1]*(y[k]-y[k-1]) + a[k]/h[k]*(y[k+1]-y[k]) ); } a1[0] = -a[0]/2; b1[0] = b[0]/2; for (int l = 1; ln ;l++) { a1[l] = -a[l]/(2+(1-a[l])*a1[l-1]); b1[l] = ( b[l] - (1-a[l])*b1[l-1] )/( 2+ (1-a[l]) * a1[l-1] ); } m[n] = 0; for (j = n-1 ; j=0; j--) { m[j] = a1[j] * m[j+1] + b1[j]; } //判别xx所在区间并输出结果 cout\n插值结果为:; for(k = 0 ;k n-1 ;k++) { if (x[k] = xx x[k+1] xx ) { double output = 0; output = (1+2*(xx-x[k])/(x[k+1]-x[k]))* pow(((xx-x[k+1])/(x[k]-x[k+1])),2) *y[k] +(1+2*(xx-x[k+1])/(x[k]-x[k+1]))* pow(((xx-x[k])/(x[k+1]-x[k])),2) *y[k+1] +(xx-x[k])* pow(((xx-x[k+1])/(x[k]-x[k+1])),2) *m[k] +(xx-x[k+1])* pow(((xx-x[k])/(x[k+1]-x[k])),2) *m[k+1]; cout output endl; break; } } delete x; delete y; delete a; delete b; delete a1; delete b1; delete h; delete m; } 运行结果截图: 2.三次样条插值(初值条件2): P52.10、给定函数y=fx的函数表和边

文档评论(0)

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

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

1亿VIP精品文档

相关文档