资源描述:
《《计算方法》教学辅导书》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、《计算方法》习题课软件学院韩臻email:zhan@bjtu.edu.cntel:(010)51688789(O)(2006年12月)范例1:一、题目:用公式求方程x2–56x+1=0的两个根,问要使它们具有四位有效数字,D=至少要取几位有效数字?如果利用韦达定理,D又该取多少位有效数字呢?二、解答:用方法(1):x±=(-b±D)/(2a)求解4位有效数字的x+,只需2位有效数字的D即可;但求解4位有效数字的x-,需要7位有效数字的D。用方法(2):x+=(-b+D)/(2a),x-=c/(ax+)求解4位有效数字
2、的x+和x-都只需2位有效数字的D即可。三、证明:计算可得D=sqrt(562-4)=55.964274319……设D*是D的具有k位有效数字的近似值,则40,一般地bk是不大于5、不小于0.05的正数,在这里bk<1。例如:b1=0.7;b2=0.06;b4=0.8。对于方法(1)记相应的近似解为x*+和x*-,有:所以,一般地,x*+是x+的有k+1位有效数字的近似值。特别地,当k=2时,所以,这时即有4位有效数字。所以,一般地,x*-是x-的有k-3位有效数字的近似值。特别地,当k=7时有4位有效数字。1、对于
3、方法(2)x*+的分析同上。对于x*-有:
4、x*--x-
5、/
6、x*+
7、=
8、c/(ax*+)-c/(ax+)
9、/
10、c/(ax*+)
11、=
12、x*+-x+
13、/
14、x+
15、所以,这时x*-的精度与x*+一样,即一般地它有k+1位有效数字。特别地,当k=2时,有4位有效数字。四、试验:1、设计40我们用程序实现进行试验。设计以下试验的步骤:[1]求出有足够精度的D,例如有十位有效数字,用变量Delta表示;[2]用二分法求出有足够精度的x+和x-,分别用X1和X2表示;[3]k=1;[4]取D的k位有效数字近似值,用delta表示;
16、[5]用方法(1)计算x+和x-的近似值,分别用x1和x2表示,并计算它们的相对误差,并输出;[6]用方法(2)计算x+和x-的近似值,分别用x1和x2表示,并计算它们的相对误差,并输出;[7]若已得出试验结果,结束;否则k=k+1,并转第[3]步。1、程序用Matlab5.0编程:(1)主程序:p9_7.m%韩臻,2003年3月25日%求方程a*x^2+b*x+c=0的两个根,要求具有n位有效数字,%其中,a=1,b=-56,c=1;%问:%(1)用x1=(-b+Delta)/(2*a),x2=(-b-Delta)
17、/(2*a),%其中,Delta=sqrt(b*b-4*a*c)40%则Delta应取几位有效数字?%(2)若用韦达定理:x1=(-b-sign(b)*Delta)/(2*a),x2=c/(a*x1),%则Delta又应取几位有效数字?%%给定系数值:a=1;b=-56;c=1;%%计算Delta:Delta=b*b-4*a*c;ifDelta<0disp('没有实根.');return;elseDelta=sqrt(Delta);%%(具有16位有效数字的近似解):%%用二分法计算根X1和X2(具有16位有效数字的
18、近似解):X1=bi_split(50,60);X2=bi_split(0,1);%%输出具有10位有效数字的Delta、x1和x2:40fprintf('输出具有10位有效数字的Delta、x1和x2:');fprintf('Delta=%17.10e',Delta);fprintf('x1=%17.10e',X1);fprintf('x2=%17.10e',X2);%%取Delta的k位有效数字近似值计算:fork=1:10%%输入Delta的k位有效数字近似值:fprintf('输入Delt
19、a的%d位有效数字近似值',k);delta=input('delta=');fprintf('delta=%17.10e',delta);%%用方法(1)计算根x1和x2,相对误差e1和e2,并输出:x1=0.5*(-b+delta)/a;x2=0.5*(-b-delta)/a;e1=abs((x1-X1)/X1);e2=abs((x2-X2)/X2);fprintf('方法(1)的结果:');fprintf('x1=%17.10e',x1);fprintf('x2=%17.10e',x2);fprintf
20、('原结果:');40fprintf('X1=%17.10e',X1);fprintf('X2=%17.10e',X2);fprintf('相对误差:');fprintf('e1=%17.10e',e1);fprintf('e2=%17.10e',e2);%%用方法(2)计算根x1和x2,相对误差e1和e2,并输出:x1=0.5*(-b