数值计算方法上机实习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.求方程0
2
10=
-
+x
e x的近似根,要求4
1
10
5-
+
⨯
<
-
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)
计算根与步数程序:
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 -=+;
(3) 加速迭代的结果;
(4) 取初值00=x ,并用牛顿迭代法;
(
5) 分析绝对误差。
答:可以看到,在同一精度下,二分法运算了11次,题设迭代算式下运算了4次,加速迭代下运算了2次,牛顿迭代下运算了2次。因不动点迭代法和二分法都是线性收敛的,但二分法压缩系数比题设迭代方法大,收敛速度较慢。加速迭代速度是超线性收敛,牛顿法是二阶,收敛速度快。
3.钢水包使用次数多以后,钢包的容积增大,数据如下:
试从中找出使用次数和容积之间的关系,计算均方差。(用ax b
y c x
+=
+拟合)
%fval为极小值
k=2:100;
y1=(f(1).*k+f(2))./(f(3)+k);
figure1=figure('Color',[1 1 1]);
gxt=plot(x,y,'xr',k,y1,'k-');
legend('原数据','拟合曲线
','Location','northwest'); %y为数据点连接曲线,
y1为拟合曲线
title('函数y=(ax+b)/(x+c)的拟合
','FontSize',14,'FontWeight','Bold');
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);
end
计算结果显示:
拟合出的方程为:(x+-0.7110)y=11.2657x+-15.5024
均方差为:0.33165089
总结:
指标选择,因题设方程为非线
性的,要转化为线性方程故需提指标为:
其驻点方程为: