(精选)数值计算方法上机实习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数值计算方法上机实习题

1. 设⎰+=1

05dx x

x I n

n , (1) 由递推公式n

I

I

n n 1

51+

-=-,从, 0=0.1823I 出发,计算20I ;

(2) 20=0I ,20=10000I , 用n

I I n n 51

5111+-

=--,计算0I ; (1)由I 0计算I 20

递推子程序:

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)由I 20计算I 0

程序:

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=0.18232156 I_20=10000时,I_0=0.18232156

(3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。 答:第一个算法可得出

易知第一个算法每一步计算都把误差放大了5倍,n 次计算后更是放大了5n

倍,可靠性低。 第二个算法可得出

可以看出第二个算法每一步计算就把误差缩小5倍,n 次后缩小了5n

倍,可靠性高。

2. 求方程0210=-+x e x

的近似根,要求41105-+⨯<-k k x x ,并比较计算量。 (1) 在[0,1]上用二分法; (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.09057617 ,n=11

(2) 取初值00=x ,并用迭代10

21

x k e x -=+;

(4) 取初值00 x ,并用牛顿迭代法;

(5) 分析绝对误差。

答:可以看到,在同一精度下,二分法运算了11次,题设迭代算式下运算了4次,加速迭代下运算了2次,牛顿迭代下运算了2次。因不动点迭代法和二分法都是线性收敛的,但二分法压缩系数比题设迭代方法大,收敛速度较慢。加速迭代速度是超线性收敛,牛顿法是二阶,收敛速度快。

3.钢水包使用次数多以后,钢包的容积增大,数据如下:

试从中找出使用次数和容积之间的关系,计算均方差。(用ax b

y c x

+=

+拟合)

xlabel('次数

','FontSize',14,'FontWeight','Bold'); ylabel('容积

','FontSize',14,'FontWeight','Bold'); set(gxt,'LineWidth',1.5);

grid on;

%计算均方差

for i=1:15

y2(i)=(f(1).*x(i)+f(2))./(f(3)+x(i)); (接下页)

end

j=0;

for i=1:15

j=j+(y(i)-y2(i))^2;

end

jfc=sqrt(j/15);

fprintf('拟合出的方程

为:(x+%4.4f)y=%4.4fx+%4.4f \n均方差为:%4.8f \n',f(3),f(1),f(2),jfc);指标选择,因题设方程为非线性的,要转化为线性方程故需提指标为:

其驻点方程为:

相关文档
最新文档