常州大学数值分析作业(共六章)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章:9.设2
cos 1)(x x
x f -=
,给出计算函数值)012.0(f 的一个合适算法,并在字长m 给定的,十进制计算机上给出数值计算结果。
解:由 )24
21(242)2421(1)cos(1224242x x x x x x x -=-=+-
-≈- 得 )24
21(cos 1)(22x x x x f -≈-=
10. 字长为5的十进制计算机上计算
)015.0(f 和)015.0(g ,并与)015.0(f 的精确值
1.0075376410479比较,说明差异存在理由,其中x e x f x 1)(-=,24
621)(3
2x x x x g +++=。
clear
f=@(x)1/2-x^2/24; f(0.012)
ans =
0.5000
解:字长为5时的误差很大,这是因为设置
的字长有限,就不可避免的使舍入误差不断积累。 把字长改为9时,误差已经大幅度减小。这说明,加大字长可以显著减小误差。
11. 举例介绍数组矩阵常见运算。 解:举例如下
clear
f=@(x)digit(digit(exp(x)-1,5)/x,5);
g=@(x)digit(digit(1,5)+digit(x/2,5)+digit... (digit(x^2,5)/6,5)+digit(digit(x^3,5)/24,5),5); exc=1.0075376410479; f(0.015) g(0.015)
err1=f(0.015)-exc err2=g(0.015)-exc
ans =
1.0075 ans =
1.0075 err1 =
-3.7641e-05 err2 =
-3.7641e-05
A*B
ans =
30 30 30 30 70 70 70 70 110 110 110 110 150 150 150 150
A.*B ans =
1 2 3 4 10 12 14 16 27 30 33 36 52 56 60 64 A^2 ans =
A.^2 ans =
f=@(x)digit(digit(exp(x)-1,9)/x,9);
g=@(x)digit(digit(1,9)+digit(x/2,9)+digit... (digit(x^2,9)/6,9)+digit(digit(x^3,9)/24,9),9); err1=f(0.015)-exc err2=g(0.015)-exc
err1 =
-1.0479e-09 err2 =
-1.0479e-09
clear
A=[1:4;5:8;9:12;13:16]
B=[1,1,1,1;2,2,2,2;3,3,3,3;4,4,4,4] A ’ A =
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 B =
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4 ans =
%%编写m 文件使用digit 函数设置字长%% function y=digit(x,m) k=max(size(x)); y=x;
for i=1:k if x(i)<0 sign=-1; else
sign=1; end
x(i)=abs(x(i)); p=0;
if x(i)<0.1&x(i)>eps while x(i)<0.1 x(i)=x(i)*10; p=p-1; end end
if x(i)>=1
while x(i)>=1 x(i)=x(i)/10; p=p+1; end end
y(i)=round(x(i)*10^m)/10^m; y(i)=sign*y(i)*10^p; end return
12.对任意给定的实数a 、b 、c 、试编写Matlab 程序,求方程02
=++c bx ax 的根。
解:利用教材例11的方法: 当b>0时,a ac b b x 2421---=,b
ac b c x +--=4222。
当b<0时,b
ac b c
x --=4221,a ac
b b x 2422-+-=。
13.利用1
,753arctan 7
53<+-+-=x x x x x x 及
()
3/3arctan 6
=π
,给出一个计算π的方
法,根据此方法编写程序,给出π的至少有10位有效数字的近似值。
解:根据题中所给公式,容易得到:
A+B ans = 2 3 4 5 7 8 9 10 12 13 14 15 17 18 19 20 A-B ans =
0 1 2 3 3 4 5 6 6 7 8 9 9 10 11 12
clear
a=input('输入a='); b=input('输入b='); c=input('输入c='); d=b^2-4*a*c if b>=0
x1=(-b-d^0.5)/2*a x2=-2*c/(d^0.5+b) else b<0
x1=-2*c/(d^0.5-b) x2=(-b+d^0.5)/2*a end
clear
x=3^(-0.5);
y=atan(x) ; %精确值% s=0 ; %计算值% for k=1:2:100;
s=s+(-1)^((k+1)/2)*(x^k)/k;
err=y-s; m=abs(err) if m<=1e-11 输入a=2
输入b=2 输入c=1 d = -4 x1 =
-2.0000 - 2.0000i x2 =
-0.5000 + 0.5000i 输入a=1 输入b=2 输入c=1 d = 0 x1 = -1 x2 = -1 输入a=1 输入b=5 输入c=2 d = 17 x1 =
-4.5616 x2 =
-0.4384