常州大学数值分析习题解答 下载本文

内容发布更新时间 : 2024/6/2 1:59:46星期一 下面是文章的全部内容请认真阅读。

1.1解: m=3;

f=@(x)digit(digit(x^4,m)- digit(x^3,m)+ digit(3*x^2,m)+ digit(x-2,m),m);

g=@(x)digit(digit(digit( digit(digit(digit( (x-1)*x,m)+3,m)*x,m)+1,m)*x,m)-2,m); f(3.33) g(3.33)

有ans = 121 ans =121

实际上,当m=2时,就可以看出这两种算法在计算的精确度上的区别: m=2;

f=@(x)digit(digit(x^4,m)- digit(x^3,m)+ digit(3*x^2,m)+ digit(x-2,m),m);

g=@(x)digit(digit(digit( digit(digit(digit( (x-1)*x,m)+3,m)*x,m)+1,m)*x,m)-2,m); f(3.33) g(3.33)

有ans = 120

ans =130,可以看出,两者在计算精度上的不同区别,数学上恒等,在数值上不一定恒等。 1.2解:

(1)精确到小数点后第三位,故有4位有效数字 (2)精确到小数点后第三位,故有2位有效数字 (3)精确到小数点后第三位,故有0位有效数字 1.3 解;

记圆的面积为S,由题意有|e(S)|≤1%。由S=πr2知:dS=2πrdr所以 dS/S=(2πrdr)/(πr2)=2(dr/r)

∴|e(r)|≈1/2|e(S)|≤0.5×1%=0.5% 1.4 解:

由题有:|e(x)|≤1/2×10^-2 ; |e(y)|≤1/2×10^-2; |e(z)||≤1/2×10^-2

∴|e(S)|≈|xe(x)+ye(y)|+ |ze(z)|^2≈x|e(x)|+y|e(y)|+z^2|z(z)|^2≤4.21×0.005+1.79×1.005+2.11×2.11×0.005^2=0.03≤1/2×10^-1 又S=4.21*1.79+2.11^2=11.988 ∴S至少具有3位有效数字。

在字长为3的计算机上运行,误差为:

S1=4.21*1.79+2.11;

S2=digit(digit(4.21*1.79,3)+digit(2.11^2,3),3); err=S1-S2

err = -2.3541

1.6 解: clc

disp('Please input the coefficients of');

disp('quadratic equation ax^2+bx+c=0, respectively') a=input('a='); b=input('b='); c=input('c=');

m=4; % m-digit rounding arithmetic

if abs(a)

if abs(a)

disp('Since a=0, quadrtic equation degenerates into a linear equation.') disp('The only solution of the linear eqution is') x=digit(-c/b,m) return end

delta=b^2-4*a*c; temp=sqrt(delta); if b>0

x1=(-b-temp)/(2*a) end if b<0

x1=(-b+temp)/(2*a) end if b==0

x1=temp/(2*a) end

x2=(c/a)/x1

在输入a=1,b=-112,c=2后有结果x1 =111.9821

x2 =0.0179

kxnxn??,???x??? 1.8方法一:e??n?0n!n?0n!x?k(?x)n(?x)n?1/??1/?,???x???,

n!n!n?0n?0?方法二:e?1/ex?xclc;

%Initialize the data x=5; k=10;

m=4; %three-digit rounding arithmetic %------------------------------------

% Compute exp(x) by using Method (A) % with the computer precision results_1=1; power_x=1; for i=1:k

factor_x=x/i;

power_x=power_x*factor_x; results_1=results_1+power_x; end

results_1

err_1=abs(exp(x)-results_1) %------------------------------------

% Compute exp(x) by using Method (A) % with the 3-digits precision results_2=1; power_x=1; for i=1:k

factor_x=digit(x/i,m);

power_x=digit(power_x*factor_x,m); results_2=digit(results_2+power_x,m); end

results_2

err_2=abs(exp(x)-results_2) %------------------------------------

% Compute exp(x) by using Method (B) % with the computer precision t=-x;

results_3=1; power_x=1; for i=1:k

factor_x=t/i;

power_x=power_x*factor_x; results_3=results_3+power_x; end

results_3=1/results_3

err_3=abs(exp(x)-results_3) %------------------------------------

% Compute exp(x) by using Method (B) % with the 3-digits precision t=-x;

results_4=1; power_x=1; for i=1:k

factor_x=digit(t/i,m);

power_x=digit(power_x*factor_x,m); results_4=digit(results_4+power_x,m); end

results_4=digit(1/results_4,m) err_4=abs(exp(x)-results_4) %------------------------------------

上述程序用公式(1)及(2)分别在Matlab许可精度下及限定在字长为4的算术运算情况下给出 的近似计算结果,其中results_1, results_2为用方法(1)在上述两种情况下的计算结果,err_1, err_2为相应的绝对误差;类似的,results_3, results_4为用方法(2)在上述