数值分析第一章部分答案-常州大学 下载本文

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

1.在字长为3的十进制计算机上计算

f(3.33)和g(3.33),其中

432

f(x)=x-x+3x+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 但当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

说明两者在计算数学上相等,但是在数值上不一定相等。

记圆的面积为S,由S=πr2 知:dS=2πrdr所以dS/S=(2πrdr)/(πr2)=2(dr/r);|e(S)|≤1%; ∴|e(r)|≈?|e(S)|≤0.5×1%=0.5%

11.数组与矩阵是Matlab编程的基础,

试学习Matlab的数组与矩阵的表示方法,并举例介绍数组,矩阵的常见运算. 解:MATLAB的基本算术运算有:+(加)、-(减)、*(乘)、/(右除)、\\(左除)、^(乘方)、’(转置)。

(1)矩阵加减运算假定有两个矩阵A和B,则可以由A+B和A-B实现矩阵的加减运算。运算规则是:若A和B矩阵的维数相同,则可以执行矩阵的加减运算,A和B矩阵的相应元素相加减。如果A与B的维数不相同,则Matlab将给出错误信息,提示用户两个矩阵的维数不匹配。

(2)矩阵乘法 假定有两个矩阵A和B,若A为m*n矩阵,B为n*p矩阵,则C=A*B为m*p矩阵。

(3)矩阵除法在Matlab中,有两种矩阵除法运算:\\和/,分别表示左除和右除。如果A矩阵是非奇异方阵,则A\\B和B/A运算可以实现。A\\B等效于A的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。对于含有标量的运算,两种除法运算的结果相同。对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系,一般A\\B≠B/A。

(4)矩阵的乘方 一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。

(5)矩阵的转置 对实数矩阵进行行列互换,对复数矩阵,共轭转置,特殊的操作符’共轭不转置(见点运算); (6)点运算在Matlab中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。点运算符有.*、./、.\\和^。两矩阵进行点运算是指它们的对应元素进行相关运

2.下列各近似值的绝对误差限都是

1-3?10,试指出它们各有几位有效数2字.x=1.00052, y=0.052, z=0.00052. 解:

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

(2)精确到小数点后第三位,故有2位有效数字;

(3)精确到小数点后第三位,故有0

位有效数字.

3.计算圆的面积,要使其相对误差限为

1%,问测量半径r时允许的相对误差限是多少? 解:

第 1 页 共 1 页

算,要求两矩阵的维参数相同。 如:

(1)clear all;

A=[1,1,2;2,1,3;1,2,3]; B=[2,1,2;1,1,3;3,2,1]; C=A+B D=A-B E=A*B 运行结果: C =

3 2 4 3 2 6 4 4 4 D =

-1 0 0 1 0 0 -2 0 2 (2)clear all;

A=[1,1,2;1,3,2;2,5,6]; B=[4;2;9]; X=A\\B 执行后 X= 1 -1 2

(3)clear all;

A=[1,1,-1;0,2,2;1,-1,2]; B=[1,-1;1,1;2,1]; X=A./B 执行后 X=

1.8333 0.5 0.1667 -0.5 0.6667 1

b=input('b='); c=input('c='); p=[a b c]; ans=roots(p)

14.. 分别利用

ln(1+x)=?(-1)n?13?n?1xnn,-1

52n?11?xln?2(x?x?x???x??)1-x352n?1,-1

解1:程序设计: clear all; x=1; sum=0;

for n=1:100;

sum=sum+((-1)(n+1))(xn)/n; end s=sum j=log(2) ans=s-j

运行结果: s =

0.6682 j =

0.6931 ans = -0.0050 解2: 程序设计: clear all; x=1/3; sum=0;

for n=1:2:100;

sum=sum+((x)n)/n; end s=sum2 j=log(2) ans=s-j

运行结果:

12.学习使用Matlab命令help或doc,

利用help和doc学习自己感兴趣的Matlab的运算,函数或命令的用法,并对于任意给定的实数a,b,c,编写Matlab程序求方程ax2+bx+c=0. 解:

dis('a*x2+b*x+c=0'); a=input('a=');

第 2 页 共 2 页

s =

0.6931 j =

0.6931 ans =

-2.2204e-16

第 3 页 共 3 页