数值计算方法上机实习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值计算方法上机实习题
1 1
(2)丨20=0, 120 = 10000,用 I n 」
I n 」 一,计算丨0 ; 5 5n
答:第一个算法可得出
易知第一个算法每一步计算都把误差放大了
5倍,n 次计算后更是放大了 5n
倍,可靠性低。
第二个算法可得出
(1 )
由递推公式I n = -51心-,从
n
I o =O.1823出发,计算* ;
(3)
分析结果的可靠性及产生此现象的原因
重点分析原因。
可以看出第二个算法每一步计算就把误差缩小5倍,n次后缩小了5n倍,可靠性高。
2.求方程e^+IOx —2=0的近似根,要求 x k *—x k <^10-,并比较计算量。
(1)
在[0 , 1]上用二分法;
(1) [0, 1]上的二分法
二分法子程序:
function [root,n]=EFF3(f,x1,x2) %第二题⑴二分法
f1= subs(f,symvar(f),x1);% 函数在 x=x1 的值 f2=subs(f,symvar(f),x2);%x=x2 n=0;%步数 er=5*10A-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
、
2 _e (2) 取初值x 0 =0,并用迭代x k d :
10
(2)初值x o =O 迭代
计算根与步数程序:
迭代法子程序:
syms x;
function [root,n]=DDF(g,x0,err,max) (接下页) f=(2-exp(x))/10;(接下页)
计算根与步数程序:
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
(3)加速迭代的结果
(4)取初值X。=0,并用牛顿迭代法;
(5)分析绝对误差。
答:可以看到,在同一精度下,二分法运算了11次,题设迭代算式下运算了4次,加速迭代下运算了2次,牛顿迭代下运算了2次。因不动点迭代法和二分法都是线性收敛的,但二分法压缩系数比题设迭代方法大,收敛速度较慢。加速迭代速度是超线性收敛,牛顿法是二阶,收敛速度快。
3.钢水包使用次数多以后,钢包的容积增大,数据如下:
ax + b
试从中找出使用次数和容积之间的关系,计算均方差。(用y 拟合)
c + x
拟合曲线程序:
x=2:16;
y=[6.42 8.2 9.58 9.5 9.7 10 9.93 9.99 10.49 10.59
10.60 10.8 10.6 10.9 10.76];
[f,fval]=fminsearch(@delta1,[0,0,0],optimset,x,y)
J
%fminsearch为求解多元函数的最小值函数
%f为多元函数初值x0附近的极小值点
%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 构造函数子程序:
function delta=delta1(f,x,y)
a=f(1);
b=f(2);
c=f(3);
delta=0;
for k=1:15
delta=delta+((x(k)+c)*y(k)-(a*x(k)+b))A2;
end
计算结果显示:
拟合出的方程为:(x+-0.7110)y=11.2657x+-15.5024
均方差为033165089
总结:
指标选择,因题设方程I & E需[片—签普「为非线性的,要转化为线性方程故需提指标为: