数值分析作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值分析课后作业:习题一
1.在字长为3的十进制计算机上计算f (3.33)和g (3.33),其中f(x)=x 4-x 3+3x 2+x-2,
g(x)=(((x-1)x+3)x+1)x-2
解: 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 2.下列各近似值的绝对误差限都是102
1⨯-3,
试指出它们各有几位有效数字:
x=1.00052, y=0.05, z=0.00052.
解:当 x=1.00052时, 由丨X*—X 丨 ≤0.5×10-3 得 x=1.00052 有四位有效数字; 同理 y=0052 有两位有效数字 Z=0.00052有零位有效数字 3,计算圆的面积,要使其相对误差限为1%,问测量半径r 允许的相对误差限是多少? 解:设圆的面积为S , 由题意有|e(S)|≤1%。 又S=πr 2 dS=2πr dr 所以 dS/S=(2πrdr)/(π
r 2)=2(dr/r)
∴|e(r)|≈21
|e(S)|≤0.5×1%=0.5% 11.数组与矩阵是Matlab 编程的基础,试学习Matlab 的数组与矩阵的表示方法,并举例介绍数组、矩阵的常见运算. 解:>> syms a b c d; >> a=[1 2 3];
>> b=[4 5 6];
>> a+b
ans =
5 7 9
>> b-a
ans =
3 3 3
>> a.*b
ans =
4 10 18 >> a.^2 ans = 1 4 9
>> c=[1 2 3;1 2 3;1 2 3];
>> d=[4 5 6;4 5 6;4 5 6];
>> c
c = 1 2 3 1 2 3 1 2 3
d = 4 5 6 4 5 6 4 5 6 >> c+d
ans =
5 7 9 5 7 9 5 7 9
>> d-c
ans = 3 3 3
3 3 3
3 3 3 12.学习使用Matlab 命令help 和doc 学习自己感兴趣的Matlab 的运算、函数或命令的用法,并对于任意给定的实数a,b,c,编写Matlab 程序求方程ax 2+bx+c=0的根. 解:x 1=a ac b b b 24)sgn(2
---, x 2=1
ax c
1 x>0 其中 sgn = 0 x=0 -1 x<0 disp('Please input the coefficients of');
disp('quadratic equation ax^2+bx+c=0, resp
ectively') a=input('a='); b=input('b='); c=input('c=');
m=3; if abs(a) x=digit(-c/b,m) return End delta=b^2-4*a*c; temp=sqrt(delta); x 1=(-b+temp)/(2*a) ; x 2=(-b-temp)/(2*a) ; err1=abs(a*x 1^2+b*x 1+c) ; err2=abs(a*x 2^2+b*x 2+c) ; if b>0 x 1=(-b-temp)/(2*a) End if b<0 x 1=(-b+temp)/(2*a) End if b=0 x 1=temp/(2*a) End x 2=c/(a*x 1) err1=abs(a*x 1^2+b*x 1+c) err2=abs(a*x 2^2+b*x 2+c) if abs(a) disp('Since a=0, quadrtic equation degen erates into a linear equation.') disp('The only solution of the linear equtio n is') x=digit(-c/b,m) return End delta=digit(digit(b^2,m)-digit(4*digit(a*c,m),m),m); temp=digit(sqrt(delta),m); x 1=digit(digit(-b+temp,m)/digit(2*a,m),m); x 2=digit(digit(-b-temp,m)/digit(2*a,m),m); err1=abs(a*x 1^2+b*x 1+c); err2=abs(a*x 2^2+b*x 2+c); if b>0 x 1=digit(digit(-b-temp,m)/digit(2*a,m),m) ; End if b<0 x 1=digit(digit(-b+temp,m)/digit(2*a,m),m); End if b=0 x 1=digit(temp/digit(2*a,m),m); End x 2=digit(digit(c/a,m)/x1,m) ; err1=abs(a*x 1^2+b*x 1+c) ; err2=abs(a*x 2^2+b*x 2+c) ; 14分别利用ln (1+x)= 11,) 1(1 1 ≤<--+∞ =∑x n x n n n 和ln 11...),1 2...53(2111 253<<-++++++=-++x n x x x x x x n ,给出计算ln2的近似方法,编写相应的Matlab 程序,并比较算法运行情况. 解:方法一: x=1; s=0; for k=1:100 s=s+(-1)^(k+1)*(x^k)/k; end s q=log(2) err=abs(t-q) ans= t = 0.6882 q = 0.6931 err = 0.0050 方法二 x=1/3; s=0; for k=1:2:100 s=s+(x^k)/k; end t=2*s q=log(2) err=abs(t-q) Ans= t = 0.6931 q = 0.6931 err = 2.2204e-16 所以方法二较方法一好