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生成。)