还剩4页未读,继续阅读
文本内容:
第3章数值数组及其运算习题3及解答11要求在闭区间上产生具有10个等距采样点的一维数组试用两种不同的指令实现〖目的〗数值计算中产生自变量采样点的两个常用指令的异同〖解答〗%方法一t1=linspace02*pi10%方法二t2=0:2*pi/9:2*pi%要注意采样间距的选择,如这里的2*pi/
9.t1=Columns1through
700.
69811.
39632.
09442.
79253.
49074.1888Columns8through
104.
88695.
58516.2832t2=Columns1through
700.
69811.
39632.
09442.
79253.
49074.1888Columns8through
104.
88695.
58516.283212由指令rngdefaultA=rand35生成二维数组A,试求该数组中所有大于
0.5的元素的位置,分别求出它们的“全下标”和“单下标”〖目的〗数组下标的不同描述全下标和单下标sub2indint2strdisp的使用随机发生器的状态控制保证随机数的可复现性〖解答〗rngdefaultA=rand35[ricj]=findA
0.5;id=sub2indsizeAricj;ri=ri;cj=cj;dispdisp大于
0.5的元素的全下标disp[行号int2strri]disp[列号int2strcj]dispdisp大于
0.5的元素的单下标dispidA=
0.
81470.
91340.
27850.
96490.
95720.
90580.
63240.
54690.
15760.
48540.
12700.
09750.
95750.
97060.8003大于
0.5的元素的全下标行号1212231313列号1122334455大于
0.5的元素的单下标1245891012131513采用默认全局随机流,写出产生长度为1000的“等概率双位(即取-1,+1)取值的随机码”程序指令,并给出-1码的数目〖目的〗两种基本随机发生器的使用关系运算产生逻辑数组——可用于数组的元素的标识和寻访逻辑数组的应用如何判断两个整数数组是否相等〖解答〗
(1)运用均匀随机数解题法——解法1A=rand11000;a=2*A
0.5-1;Na=suma==-1Na=512
(2)运用正态随机数解题法——解法2randnstate123B=randn11000;b=2*B0-1;Nb=sumb==-1Nb=462
(3)直接发生法——解法3c=randsrc11000[-11];Nc=sumc==-1Nc=48214已知矩阵,运行指令B1=A.^
0.5B2=A^
0.5可以观察到不同运算方法所得结果不同
(1)请分别写出根据B1B2恢复原矩阵A的程序
(2)用指令检验所得的两个恢复矩阵是否相等〖目的〗数组运算和矩阵运算的不同如何判断两个双精度数组是否相等norm指令的应用〖解答〗A=[12;34];B1=A.^
0.5B2=A^
0.5A1=B
1.*B1;A2=B2*B2;normA1-A2fro%求误差矩阵的F-范数,当接近eps量级时,就认为实际相等B1=
1.
00001.
41421.
73212.0000B2=
0.5537+
0.4644i
0.8070-
0.2124i
1.2104-
0.3186i
1.7641+
0.1458ians=
8.4961e-01615在时间区间
[010]中,绘制曲线要求分别采取“标量循环运算法”和“数组运算法”编写两段程序绘图〖目的〗加强理解数组运算的机理和应用初步使用subplotplotxlabelylabel等指令绘图〖解答〗%标量循环运算法t=linspace010200;N=lengtht;y1=zerossizet;fork=1:Ny1k=1-exp-
0.5*tk*cos2*tk;endsubplot121plotty1xlabeltylabely1gridon%数组运算法y2=1-exp-
0.5*t.*cos2*t;subplot122plotty2xlabeltylabely2gridon16先运行clearformatlongrngdefaultA=rand33,然后根据A写出两个矩阵一个对角阵B,其相应元素由A的对角元素构成;另一个矩阵C,其对角元素全为0,而其余元素与对应的A阵元素相同〖目的〗常用指令diag的使用场合〖解答〗clearformatlongrngdefaultA=rand33B=diagdiagAC=A-BA=
0.
9057919370756190.
6323592462254100.546881519204984B=
00.
6323592462254100000.957506835434298C=
0.
90579193707561900.54688151920498417先运行指令x=-3*pi:pi/15:3*pi;y=x;[XY]=meshgridxy;warningoff;Z=sinX.*sinY./X./Y;产生矩阵Z
(1)请问矩阵Z中有多少个“非数”数据?
(2)用指令surfXYZ;shadinginterp观察所绘的图形
(3)请写出绘制相应的“无裂缝”图形的全部指令〖目的〗初步感受三维曲面的绘制方法非数NaN的产生,非数的检测,和对图形的影响sum的应用eps如何克服“被零除”的尴尬〖解答〗x=-3*pi:pi/15:3*pi;y=x;[XY]=meshgridxy;warningoffZ=sinX.*sinY./X./Y;NumOfNaN=sumsumisnanZ%计算“非数”数目subplot121surfXYZshadinginterptitle有缝图%产生无缝图XX=X+X==0*eps;YY=Y+Y==0*eps;ZZ=sinXX.*sinYY./XX./YY;subplot122surfXXYYZZshadinginterptitle无缝图NumOfNaN=18118下面有一段程序,企图用来解决如下计算任务有矩阵,当依次取10987654321时,计算矩阵“各列元素的和”,并把此求和结果存放为矩阵Sa的第k行例如时,A阵为,此时它各列元素的和是一个行数组,并把它保存为Sa的第3行问题该段程序的计算结果对吗?假如计算结果不正确,请指出错误发生的根源,并改正之〖目的〗正确理解sum的工作机理reshape的应用〖解答〗
(1)企图用以下程序完成题目要求fork=10:-1:1A=reshape1:10*kk10;Sak:=sumA;endSaSa=555555555555555555553711151923273135396152433425160697887102642587490106122138154154065901151401651902152402157931291652012372733093452877126175224273322371420469361001642282923564204845486124512620728836945053161269377455155255355455555655755855955
(2)正确性分析除k=1外,计算所得Sa所有行的结果都正确但k=1时,,Sa的第1行应该与相同上述程序的错误是对sum理解不正确sum对二维数组,求和按列施行;而对一维数组,不管行数组或列数组,总是求那数组所有元素的和正确的程序应该写成fork=10:-1:1A=reshape1:10*kk10;Sak:=sumA;ifk==1Sak:=A;endendSaSa=123456789103711151923273135396152433425160697887102642587490106122138154154065901151401651902152402157931291652012372733093452877126175224273322371420469361001642282923564204845486124512620728836945053161269377455155255355455555655755855955。