学工程计算作业.docxVIP

  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文档。上传文档
查看更多
学工程计算作业 姓名:刘欣 班级:统计1201 学号:2012471(X)125 学院:数计学院 解方程xA3-3x-1=0在【1,2】的近似根(精确到10A-3)(二分法).include stdio.h #includc math.h main() { double xl,x2,x,e,y; xl = 1.0;x2=2.0; do { e=xl-x2; x=(xl+x2)/2; y=pow(x,30)-3*x-1.0; if(y!=O) { if(y0) x2=x; else xl=x; } else printf(” %0.20hn“,x); } whilc(fabs(c) 1.0c-10); printf(近似根是:“ %0.20f\n“,x); return x; } 说明:运行程序后,显示:“近似根是:1.87938524156925270000,结果位数为e的截断精 度有关。 解方程x*eAx-l=0.(牛顿迭代) #includestdio.h # includemath.h int main() { double f(double x); double xyd; x=l; y=o; d=0.000000001; while(fabs(x-y)=d) x=y; y=f(x); ) printf(H%.3t\nu,y); printf(%f\nn,exp(y)*y); return 0; } double f(double x) { return x-(x*exp(x)-1 )/(exp(x)+x*exp(x)); } 说明:结果显示:^0° IJ中表2.9给出了迭代四次后的结果为0结果表明 算法收敛,有四位有效数字。 3,解方程x*x?l=0.(简单迭代) #includestdio.h # includemath.h main() double x0,xl,d; xO; x 1=0.0;//迭代值。 d=0.000000001;//误差控制 while(fabs(xO -x 1 )=d) { x0=x1; xl=exp(-x0); ) printf(”%.3f\n”,xl); printf(%f\n,exp(x 1 )*xl); return x 1; } 说明:结果显示与3相同。 4,二分法搜索xA3-1.8xA2+0.15x+0.65=0的有根区间。 #includestdio.h #includcmath.h main() { double a,x,y,k; a=-2; k=0.5; do x=a+k; y=x*x*x-l .8*x*x+0.15*x+0.65; if(y!=O) { if(yo) printf(n 区间[%f,%f]\nH,a,x); else a=x;t=t+l;printF(Mffi 环次数是 %d\nM,t); else piintf(”精确值是 %f\n,x); }while(y0); 说明:结果显示;【0.5,1】,与用逐步搜索法笔算结果一致,循坏次数为3次。 matlab语言实现。 f二inline( 1.8x9+(). 15x+0.65) %把f=xA3-1.8xA2+0.15x+0.65设定为内嵌函数 xl=1.0,x2=2.0 %给定区间[a,b]即[xl,x2]—个初值,这里为[1.0,2.0]. err=le-3; %给出精度为1E-3。 k=0; %k为一个计数变量,为了统计符合精度时,二分的循环次数。给初值0. while abs(xl-x2)err; %二分循环的结束条件,最示一次的解变竝与倒数第二次的解变量 %的差的绝对值,比精度err小时,则循环结束,否则,循环继续。 x=(xl+x2)/2; %给方程的解变量赋一个初值,为区间的中点。 k=k+1; %循环一次k自加1. format long %对从此行一下的变最进行长精度格式化。 X %这里的X的作用是,显示每次循环时二分之后的当前X的值。 if(f(x)0) %若为负数即f(x)v0,则把((xl+x2) /2)赋给xl,即新区间的左端点。 xl=x; else %若为正数即f(x)0,则把((xl+x2) /2)赋给x2,即新区间的右端点。 x2=x; else if(f(x)==O) %若为零即f(x)==(),则找到方程的根。 end end end end x %输出最终的解X k %输出二分法的循环次数 ?x=-2:0.001:2; ?y=xA3-1.8xA2+0.15x+0.65; ?plot(x,y) ?grid on 求xA5-x-0.2=0的正根,精确到10八-5.(牛顿迭代) #include stdio.h #include math

文档评论(0)

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

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

1亿VIP精品文档

相关文档