数值计算方法上机实习题.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数值计算方法上机实习题 设, 由递推公式,从I0=0.1824, 出发,计算; ,, 用,计算; (1)由I0计算I20 递推子程序: function f=fib(n,i) if n>=1 f=fib(n-1,i)*(-5)+(1/(n)); elseif n==0 f=i; end 计算和显示程序: I=0.1824; I1=0.1823; fib1=fib(20,I); fib2=fib(20,I1); fprintf('I_0=0.1824时,I_20=%d\n',fib1); fprintf('I_0=0.1823时,I_20=%d\n',fib2); 计算结果显示: I_0=0.1824时,I_20=7.480927e+09 I_0=0.1823时,I_20=-2.055816e+09(2)由I20计算I0 程序: n=21; i1=0; i2=10000; f1=i1; f2=i2; while n~=0; f1=f1*(-1/5)+(1/(5*n)); f2=f2*(-1/5)+(1/(5*n)); n=n-1; end fprintf('I_20=0 时,I_0=%4.8f\n',f1); fprintf('I_20=10000时,I_0=%4.8f\n',f2); 计算结果显示: I_20=0 时,I_0=0I_20=10000时,I_0=0 分析结果的可靠性及产生此现象的原因(重点分析原因)。 答:第一个算法可得出 e0=I0-I0* en=In-In*=5ne0 易知第一个算法每一步计算都把误差放大了5倍,n次计算后更是放大了5n倍,可靠性低。 第二个算法可得出 en=In-In* e0=15nen 可以看出第二个算法每一步计算就把误差缩小5倍,n次后缩小了5n倍,可靠性高。 求方程的近似根,要求,并比较计算量。 在[0,1]上用二分法; [0,1]上的二分法 二分法子程序: function [root,n]=EFF3(f,x1,x2) %第二题(1)二分法 f1=subs(f,symvar(f),x1);%函数在x=x1的值 f2=subs(f,symvar(f),x2);%x=x2 n=0;%步数 er=5*10^-4;%误差 if(f1==0) root=x1; return; elseif(f2==0) root=x2; return; elseif(f1*f2>0) disp('两端点函数值乘积大于0!'); return; else while(abs(x1-x2)>er)%循环 x3=(x1+x2)/2; f3=subs(f,symvar(f),x3); n=n+1; if(f3==0) root=x3; break; elseif(f1*f3>0) x1=x3; else x2=x3; end end root=(x1+x2)/2;%while循环少一步需加上 end计算根与步数程序: fplot(@(x) exp(x)+10*x-2,[0,1]); grid on; syms x; f=exp(x)+10*x-2; [root,n]=EFF3(f,0,1); fprintf('root=%6.8f ,n=%d \n',root,n); 计算结果显示: root=0,n=11  取初值,并用迭代; 初值x0=0迭代 迭代法子程序: function [root,n]=DDF(g,x0,err,max) (接下页) %root根,n+1步???,g函数,x0初值,err误差,max最大迭代次数 X(1)=x0; for n=2:max X(n)=subs(g,symvar(g),X(n-1)); c=abs(X(n)-X(n-1)); root=X(n); if(c<err) break; end if n==max disp('超出预设迭代次数'); end end n=n-1;%步数减1计算根与步数程序: syms x; f=(2-exp(x))/10; (接下页) x0=0; err=5*10^(-4); max=100; [root,n]=DDF(f,x0,err,max); f

您可能关注的文档

文档评论(0)

高江辉 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档