- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
........
..
.
..
.
..
.专业学习资料.
.
专业学习资料
.
设I
1 xn dx
数值计算方法上机实习题
,n 0 5 x
,
由递推公式I
n
5I 1
n 1 n
,从 , I
0
=0.1823出发,计算I ;
20
I
=0 , I
=10000 , 用I
1 I 1
,计算I ;
20 20
n 1 5 n 1 5n 0
由I
0
计算 I20
由I
20
计算 I0
递推子程序:
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.18时24,I_20=%d\n,fib1); fprintf(I_0=0.18时23,I_20=%d\n,fib2);
计算结果显示:
I_0=0.1824 时,I_20=7.480927e+09 I_0=0.1823 时,I_20=-2.055816e+09
程序:
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=1000时0 ,I_0=%4.8f\n,f2);
计算结果显示:
I_20=0 时,I_0=0I_20=10000 时,I_0=0分析结果的可靠性及产生此现象的原因(重点分析原因)。答:第一个算法可得出
易知第一个算法每一步计算都把误差放大了 5 倍,n 次计算后更是放大了 5n 倍,可靠性低。
第二个算法可得出
可以看出第二个算法每一步计算就把误差缩小5 倍,n 次后缩小了 5n倍,可靠性高。
求方程ex
10x 2 0 的近似根,要求x
k 1
x 5 10 4 ,并比较计算量。
k
在[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*f20)
计算根与步数程序:
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);
计算结果显示:
disp(两 端点函数值乘积大于 0!);
return; else
while(abs(x1-x2)er)%循环 x3=(x1+x2)/2;
f3=subs(f,symvar(f),x3); root=0,n=11
n=n+1;
n=n+1;
if(f3==0)
root=x3; break;
elseif(f1*f30) x1=x3;
else
x2=x3;
end
end
root=(x1+x2)/2;%while循环少一步需加上
end
取初值x
0
0 ,并用迭代x
k 1
2 ex ;
10
(2)
(2) 初值 x =0 迭代
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(cerr)
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);
fprintf(root=%6.8f ,n=%d \n,root,n);
计算结果
原创力文档


文档评论(0)