数值分析作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

所以方法二较方法一好

相关文档
最新文档