好文档 - 专业文书写作范文服务资料分享网站

习题2-数值数组及向量化运算

天下 分享 时间: 加入收藏 我要投稿 点赞

习题2

1. 请读者先运行以下指令 a=0;b=pi;

t1=a:pi/9:pi;

t2=linspace(a,b,10); T=t1*t2'; F=find(T<0);

然后,请回答变量a、t1、T、F的维度、规模、长度分别是多少?t1完全等于t2吗?为什么?

1)产生数据 a=0;b=pi;

t1=a:pi/9:pi;

t2=linspace(a,b,10); T=t1*t2';

F=find(T<0);

2)罗列各变量的特征

Na=ndims(a);Nt1=ndims(t1);NT=ndims(T);NF=ndims(F);

Sa=size(a);St1=size(t1);ST=size(T);SF=size(F); La=length(a);Lt1=length(t1);LT=length(T);LF=length(F);

fprintf('数组%7s%8s%8s%8s\\n','a','t1','T','F') fprintf('维度数]???\\n',Na,Nt1,NT,NF) fprintf('规模]=]=]=]=\\n',Sa,St1,ST,SF) fprintf('长度}???\\n',La,Lt1,LT,LF)

数组 a t1 T F 维度数 2 2 2 2 规模 1 1 1 10 1 1 0 0 长度 1 10 1 0

3)判断数组相等

P=t1==t2 %对不同浮点计算方法获得的数进行比较的本指令,不推荐使用 E=max(abs(t1-t2)) P =

1

1 1 1 1 1 1 0 1 1 1 E =

4.4409e-16

可见2个数组中的元素不完全相等。应记住:这种现象在数值计算中常常会遇到;并且,若想检验同一个量的不同方法、途径算得的结果,应尽量不用“==”符判断,而应借助“两个量间的(相对)误差水平是否小于某个容差”进行判断。比如 pp=abs(t1-t2)<1e-14 pp =

1 1 1 1 1 1 1 1 1 1

2. 对于指令A=reshape(1:18,3,6)产生的数组 A =

1 4 7 10 13 16 2 5 8 11 14 17 3 6 9 12 15 18

先请你用一条指令,使A数组中取值为2、4、8、16的元素都被重新赋值为NaN。然后,再请你用一条指令,把A数组的第4、5两列元素都被重新赋值为Inf。

1)产生数组A

A=reshape(1:18,3,6) A =

1 4 7 10 13 16 2 5 8 11 14 17 3 6 9 12 15 18

2)利用单序号实现对2、4、8、16的元素的重新赋值 A([2,4,8,16])=NaN %这些位置元素的重赋值不可能采用“全下标”一次性实现 A =

1 NaN 7 10 13 NaN NaN 5 NaN 11 14 17 3 6 9 12 15 18

3)利用全下标和冒号对第4、5列元素进行重赋值 A(:,[4,5])=Inf A =

1 NaN 7 Inf Inf NaN

2

NaN 5 NaN Inf Inf 17 3 6 9 Inf Inf 18

3. 由指令rng('default'),A=rand(3,5)生成二维数组A,试求该数组中

所有大于0.5的元素的位置,分别求出它们的“全下标”和“单下标”。

1)产生试验数组 rng('default') A=rand(3,5) A =

0.8147 0.9134 0.2785 0.9649 0.9572 0.9058 0.6324 0.5469 0.1576 0.4854 0.1270 0.0975 0.9575 0.9706 0.8003

2)寻找数值大于0.5的所有元素的全下标 [ri,cj]=find(A>0.5); disp(' ')

disp('大于0.5的元素的全下标') disp(['行号 ',int2str(ri')]) disp(['列号 ',int2str(cj')])

大于0.5的元素的全下标

行号 1 2 1 2 2 3 1 3 1 3 列号 1 1 2 2 3 3 4 4 5 5

3)寻找数值大于0.5的所有元素的单序号 id=find(A>0.5); disp(' ')

disp('大于0.5的元素的单序号') disp(id')

大于0.5的元素的单序号

1 2 4 5 8 9 10 12 13 15

4. 已知A=magic(3),B=rand(3),请回答以下问题:

(1)A.*B和B.*A的运行结果相同吗?请说出理由。 (2)A*B和A.*B的运行结果相同吗?请说出理由。

3

习题2-数值数组及向量化运算

习题21.请读者先运行以下指令a=0;b=pi;t1=a:pi/9:pi;t2=linspace(a,b,10);T=t1*t2';F=find(T<0);然后,请回答变量a、t1、T、F的维度、规模、长度分别是多少?t1完全等于t2吗?为什么?1)产生数据a=0;b=pi;t1=a
推荐度:
点击下载文档文档为doc格式
2gbhr87nwx55mbu22qqe
领取福利

微信扫码领取福利

微信扫码分享