计算方法结大作业.docVIP

  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文档。上传文档
查看更多
计算方法结大作业

计算方法结课大作业 第一题:求数值积分,精确到。 解:Romberg方法基本思想: 根据 分别算出T0(0), T0(1),T1(0)…….的值,若对角线上的值的差足够小则停止,否则继续计算,直到足够小为止。 T0(0)= = = 其中sin1= 0.841471 sin(-1)= -0.841471 ==0.438098 T0(1)= T0(0)+ = 0.469049 T1(0)== =0.479366 T0(2)=T0(1) =0.476729 T1(1) ===0.479289 T2(0)===0.479284 T0(3)=T0(2)=0.478645 T1(2)== =0.478645 T2(1)=T0(1)=0.438098 T3(0)===0.479284 化简成缩略图,根据公式可一目了然: T0(0)=, T0(1)=0.469049, T1(0)= 0.479366 T0(2)=0.476729, T1(1) =0.479289 T2(0)=0.479284 T0(3)= 0.478645, T1(2)=0.479284, T2(1)=0.479284,T3(0)=0.479284 由于T3(0)就已达预定精度,故取I T3(0)=0.479284 第二题:设实验数据如下 1 2 3 4 5 6 7 8 9 10 5.8191 10.3626 18.4715 26.0003 34.9121 48.1684 60.2300 73.9750 92.2391 109.3331 建立形如最小二乘拟合。 解:已知曲线,将表格中所有点依次代入得到方程: 改写成矩阵形式: 根据公式进行转置: 上式整理得: = 整理为方程如下: 得解为: 于是所求拟合曲线为 第三题 :给定初值问题 经典四阶R-K方法,分别取,计算并打印各点的值,并于准确值相比较。 解:四阶龙格-库塔算法公式如下: 当步长h=0.1时,运行结果如下: 当步长h=0.025时,运行结果如下: 当步长h=0.01时,运行结果如下: 与准确值相比较: 注:(因数据庞大,此处只取前十一个数作比较) 用编程实现如下: 注:此处只举例出当步长h=0.1时执行的程序,当h=0.025和h=0.01时只需稍加修改即可。 #includestdlib.h #includestdio.h /*n表示几等分,n+1表示它输出的个数*/ int RungeKutta(double y0,double a,double b,int n,double *x,double *y,double (*function)(double,double)) { double h=(b-a)/n,k1,k2,k3,k4; int i; x[0]=a; y[0]=y0; for(i=0;in;i++) { x[i+1]=x[i]+h; k1=function(x[i],y[i]); k2=function(x[i]+h/2,y[i]+h*k1/2); k3=function(x[i]+h/2,y[i]+h*k2/2); k4=function(x[i]+h,y[i]+h*k3); y[i+1]=y[i]+h*(k1+2*k2+2*k3+k4)/6; } return 1; } double function(double x,double y) { return -30*y+30*x*x+2*x; } //例子求y=-30y+30*x*x+2*x(0x1);y0=1; int main() { double x[11],y[11]; printf(用四阶龙格-库塔方法\n); RungeKutta(1,0,1,10,x,y,function); for(int i=0;i11;i++) printf(x[%d]=%f,y[%d]=%f\n,i,x[i],i,y[i]); return 1; }

文档评论(0)

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

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

1亿VIP精品文档

相关文档