5. 数值数组及向量化运算¶
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吗?为什么?
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
。
3. 由指令rng('default')
, A=rand(3,5)
生成二维数组A,试求该数组中所有大于0.5的元素的位置,分别求出它们的“全下标”和“单下标”。
4. 在时间区间[0,10]
中,绘制$y=1-e^{-0\ldotp 5t} \mathrm{cos}2t$曲线。要求分别采取“标量循环运算法”和“数组运算法”编写两段程序绘图。
5. 已知A=magic(3),B=rand(3)
,请回答以下问题:
(1)A.*B
和B.*A
的运行结果相同吗?请说出理由。
(2)A*B
和A.*B
的运行结果相同吗?请说出理由。
(3)A*B
和B*A
的运行结果相同吗?请说出理由。
(4)A.\B
和B./A
的运行结果相同吗?请说出理由。
(5)A\B
和B/A
的运行结果相同吗?请说出理由。
(6)A*A\B-B
和A*(A\B)-B
的运行结果相同吗?它们中那个结果的元素都十分接近于0
?
(7)A\eye(3)
和eye(3)/A
的运行结果相同吗?为什么?
6. 已知矩阵$A=\left\lbrack \begin{array}{cc} 1 & 2\\ 3 & 4 \end{array}\right\rbrack$,
(1)运行指令B1=A.^(0.5), B2=0.5.^A, B3=A^(0.5), B4=0.5^A
可以观察到不同运算方法所得结果不同。
(2)请分别写出根据B1, B2, B3, B4恢复原矩阵A的M码。
(3)用指令检验所得的两个恢复矩阵是否相等。
7. 先运行指令x=-3*pi:pi/15:3*pi;
y=x;
[X,Y]=meshgrid(x,y);
warning off;
Z=sin(X).*sin(Y)./X./Y;
产生矩阵Z。
(1)请问矩阵Z中有多少个“非数”数据?
(2)用指令surf(X,Y,Z);
shading interp
观察所绘的图形。
(3)请写出绘制相应的“无裂缝”图形的全部指令。(提示:isnan
用于判断是否非数;可借助sum
求和;realmin
是最小正数。)
8. 请分别用“标量循环+条件分支”法和“数组混合运算”法,在$-1.5\leq x \leq 1.5$、$-3\leq y \leq 3$的矩形域内计算以下二元函数。然后,比较两个计算结果中元素的最大相对误差,并使用surf指令绘制函数图形。(提示:数组运算时所需的矩形域内的自变量数组X、Y可使用meshgrid生成。)