1、l MATLAB R2012a l 课后习题答案全解 l 第一章 基础准备及入门 习题1及解答 n 1.数字1.5e2,1.5e3 中的哪个与1500相同吗? 〖解答〗 1.5e3 n 2.请指出如下5个变量名中,哪些是合法的? abcd-2 xyz_3 3chan a变量 ABCDefgh 〖解答〗 2、5是合法的。 n 3.在MATLAB环境中,比1大的最小数是多少? 〖解答〗 1+eps n 4.设 a = -8 , 运行以下三条指令,问运行结果相同吗?为什么? w1=a^(2/3)
2、 w2=(a^2)^(1/3) w3=(a^(1/3))^2 〖解答〗 (1)不同。具体如下 w1=a^(2/3) %仅求出主根 w2=(a^2)^(1/3) %求出(-8)^2的主根 w3=(a^(1/3))^2 %求出(-8)主根后再平方 w1 = -2.0000 + 3.4641i w2 = 4.0000 w3 = -2.0000 + 3.4641i (2)复数的多方根的,下面是求取全部方根的两种方法: (A)根据复数方根定义 a=-8;n=2;m=3; ma=abs(a);aa=angle(a
3、); for k=1:m %m决定循环次数 sa(k)=(aa+2*pi*(k-1))*n/m; %计算各根的相角 end result=(ma^(2/3)).*exp(j*sa) %计算各根 result = -2.0000 + 3.4641i 4.0000 - 0.0000i -2.0000 - 3.4641i (B)利用多项式求根 p=[1,0,0,-a^2]; r=roots(p) r = -2.0000 + 3.4641i -2.0000 - 3.4641i 4.0000
4、 n 5.指令clear, clf, clc各有什么用处? 〖解答〗 clear 清除工作空间中所有的变量。 clf 清除当前图形。 clc 清除命令窗口中所有显示。 n 6.以下两种说法对吗?(1)“MATLAB进行数值的表达精度与其指令窗中的数据显示精度相同。” (2)MATLAB指令窗中显示的数值有效位数不超过7位。” 〖解答〗 (1)否;(2)否。 n 7.想要在MATLAB中产生二维数组,下面哪些指令能实现目的? (1) S=[1,2,3;4,5,6;7,8;9] (2) S=[1 2 3;4 5 6;7 8
5、 9] (3) S=[1,2,3;4,5,6;7,8,9] %整个指令在中文状态下输入 〖解答〗 前两种输入方法可以,后一种方法不行。 n 8.试为例1.3-5编写一个解题用的M脚本文件? 〖解答〗 直接点击新文件图标,出现M文件编辑器窗口;在该M文件编辑器中,输入例1.3-5中的全部指令;并另存为p109.m,便得到所需的脚本文件。 第2章 符号运算 习题2及解答 n /1说出以下四条指令产生的结果各属于哪种数据类型,是“双精度”对象,还是“符号”符号对象? 3/7+0.1; sym(3/7+0.1); sym('3/
6、7+0.1'); vpa(sym(3/7+0.1)) 〖目的〗 l 不能从显示形式判断数据类型,而必须依靠class指令。 〖解答〗 c1=3/7+0.1 c2=sym(3/7+0.1) c3=sym('3/7+0.1') c4=vpa(sym(3/7+0.1)) Cs1=class(c1) Cs2=class(c2) Cs3=class(c3) Cs4=class(c4) c1 = 0.5286 c2 = 37/70 c3 = 0.52857142857142857142857142857143 c4 = 0.5285714285714285
7、7142857142857143 Cs1 = double Cs2 = sym Cs3 = sym Cs4 = sym n /2在不加专门指定的情况下,以下符号表达式中的哪一个变量被认为是自由符号变量. sym('sin(w*t)'),sym('a*exp(-X)'),sym('z*exp(j*th)') 〖目的〗 l 理解自由符号变量的确认规则。 〖解答〗 symvar(sym('sin(w*t)'),1) ans = w symvar(sym('a*exp(-X)'),1) ans = a symvar(sym(
8、'z*exp(j*th)'),1) ans = z n /3求以下两个方程的解 (1)试写出求三阶方程正实根的程序。注意:只要正实根,不要出现其他根。 (2)试求二阶方程在时的根。 〖目的〗 l 体验变量限定假设的影响 〖解答〗 (1)求三阶方程正实根 reset(symengine) %确保下面操作不受前面指令运作的影响 syms x positive solve(x^3-44.5) ans = (2^(2/3)*89^(1/3))/2 (2)求五阶方程的实根 syms a positive %注意:关于x的假设没有去除
9、 solve(x^2-a*x+a^2) Warning: Explicit solution could not be found. > In solve at 83 ans = [ empty sym ] syms x clear syms a positive solve(x^2-a*x+a^2) ans = a/2 + (3^(1/2)*a*i)/2 a/2 - (3^(1/2)*a*i)/2 n /4观察一个数(在此用@记述)在以下四条不同指令作用下的异同。 a =@, b = sym( @ ), c = sym( @ ,
10、'd ' ), d = sym( '@ ' ) 在此,@ 分别代表具体数值 7/3 , pi/3 , pi*3^(1/3) ;而异同通过vpa(abs(a-d)) , vpa(abs(b-d)) , vpa(abs(c-d))等来观察。 〖目的〗 l 理解准确符号数值的创建法。 l 高精度误差的观察。 〖解答〗 (1)x=7/3 x=7/3;a=x,b=sym(x),c=sym(x,'d'),d=sym('7/3'), a = 2.3333 b = 7/3 c = 2.3333333333333334813630699500209 d = 7/3
11、 v1=vpa(abs(a-d)),v2=vpa(abs(b-d)),v3=vpa(abs(c-d)) v1 = 0.0 v2 = 0.0 v3 = 0.00000000000000014802973661668756666666667788716 (2)x=pi/3 x=pi/3;a=x,b=sym(x),c=sym(x,'d'),d=sym('pi/3'), a = 1.0472 b = pi/3 c = 1.047197551196597631317786181171 d = pi/3 v1=vpa(abs(a-
12、d)),v2=vpa(abs(b-d)),v3=vpa(abs(c-d)) v1 = 0.0 v2 = 0.0 v3 = 0.00000000000000011483642827992216762806615818554 (3)x=pi*3^(1/3) x=pi*3^(1/3);a=x,b=sym(x),c=sym(x,'d'),d=sym('pi*3^(1/3)') a = 4.5310 b = 1275352044764433/281474976710656 c = 4.5309606547207899041040946030989
13、 d = pi*3^(1/3) v1=vpa(abs(a-d)),v2=vpa(abs(b-d)),v3=vpa(abs(c-d)) v1 = 0.00000000000000026601114166290944374842393221638 v2 = 0.00000000000000026601114166290944374842393221638 v3 = 0.0000000000000002660111416629094726767991785515 n /5求符号矩阵的行列式值和逆,所得结果应采用“子表达式置换”简洁化。 〖目的〗 l
14、 理解subexpr指令。 〖解答〗 A=sym('[a11 a12 a13;a21 a22 a23;a31 a32 a33]') DA=det(A) IA=inv(A); [IAs,d]=subexpr(IA,d) A = [ a11, a12, a13] [ a21, a22, a23] [ a31, a32, a33] DA = a11*a22*a33 - a11*a23*a32 - a12*a21*a33 + a12*a23*a31 + a13*a21*a32 - a13*a22*a31 IAs = [ d*(a22*a33 - a23*a32), -d
15、a12*a33 - a13*a32), d*(a12*a23 - a13*a22)] [ -d*(a21*a33 - a23*a31), d*(a11*a33 - a13*a31), -d*(a11*a23 - a13*a21)] [ d*(a21*a32 - a22*a31), -d*(a11*a32 - a12*a31), d*(a11*a22 - a12*a21)] d = 1/(a11*a22*a33 - a11*a23*a32 - a12*a21*a33 + a12*a23*a31 + a13*a21*a32 - a13*a22*a31) n /6求
16、的符号解,并进而用该符号解求,,的准确值。 〖目的〗 l symsum, subs的应用。 l 从实例中,感受指令所给出的关于符号解的含义。 〖解答〗 syms x k f=x^(k); Z1=symsum(f,k,0,inf) Z1 = piecewise([1 <= x, Inf], [abs(x) < 1, -1/(x - 1)]) subs(Z1,x,{sym('-1/3'),sym('1/pi'),sym('3')}) ans = [ 3/4, -1/(1/pi - 1), Inf] n /7对于,求。(提示:理论结果为) 〖目的〗
17、
l 符号变量的限定性定义的作用。
〖解答〗
syms k;
x=sym('x','positive');
f_k=2/(2*k+1)*((x-1)/(x+1))^(2*k+1);
s=simple(symsum(f_k,k,0,inf)) %结果与理论值lnx相符!
s =
piecewise([abs(x - 1) < x + 1, log(x)])
〖注意〗
l 解答中,条件abs(x - 1) < x + 1意味着:
n 约束一:x-1 18、 x>0 此为“约束”,满足题意。
n /8(1)通过符号计算求的导数。(2)然后根据此结果,求和。
〖目的〗
l diff, limit指令的应用。
l 如何理解运行结果。
〖解答〗
syms t
y=abs(sin(t))
d=diff(y) %求dy/dt
d0_=limit(d,t,0,'left') %求dy/dt|t=0-
dpi_2=limit(d,t,pi/2) %求dy/dt|t=pi/2
y =
ab 19、s(sin(t))
d =
sign(sin(t))*cos(t)
d0_ =
-1
dpi_2 =
0
n /9求出的具有64位有效数字的积分值。
〖目的〗
l 符号积分的解析解和符号数值解。
l 符号计算和数值计算的相互校验。
〖解答〗
(1)符号积分
syms x clear
syms x
y=exp(-abs(x))*abs(sin(x))
si=vpa(int(y,-10*pi,1.7*pi),64)
y =
abs(sin(x))/exp(abs(x))
si =
1.087849499412904913166671875 20、948174520895458535212845987519414166
(2)数值计算复验
xx=-10*pi:pi/100:1.7*pi;
sn=trapz(exp(-abs(xx)).*abs(sin(xx)))*pi/100
sn =
1.0877
n /10计算二重积分。
〖目的〗
l 变上限二重积分的符号计算法。
〖解答〗
syms x y
f=x^2+y^2;
r=int(int(f,y,1,x^2),x,1,2)
r =
1006/105
n /11在区间,画出曲线,并计算。
〖目的〗
l 21、在符号计算中,经常遇到计算结果是特殊经典函数的情况。
l 如何应用subs获得超过16位有效数字的符号数值结果。
l 初步尝试ezplot指令的简便。
〖解答〗
(1)符号计算
syms t x;
f=sin(t)/t;
y=int(f,t,0,x) % 将得到一个特殊经典函数
y5=subs(y,x,sym('4.5'))
ezplot(y,[0,2*pi])
y =
sinint(x)
y5 =
1.6541404143792439835039224868515
(2)数值计算复验
tt=0:0.001:4.5;
tt(1)=eps 22、
yn=trapz(sin(tt)./tt)*0.001
yn =
1.6541
n /12在的限制下,求的一般积分表达式,并计算的32位有效数字表达。
〖目的〗
l 一般符号解与高精度符号数值解。
〖解答〗
syms x
syms n positive
f=sin(x)^n;
yn=int(f,x,0,pi/2)
y3s=vpa(subs(yn,n,sym('1/3')))
y3d=vpa(subs(yn,n,1/3))
yn =
beta(1/2, n/2 + 1/2)/2
y3s =
1.2935547796148952 23、674767575125656
y3d =
1.2935547796148951782413405453553
n 13.有序列,,(在此,),求这两个序列的卷积。
〖目的〗
l 符号离散卷积直接法和变换法。
〖解答〗
(1)直接法
syms a b k n
x=a^k;
h=b^k;
w=symsum(subs(h,k,n)*subs(x,k,k-n),n,0,k) %据定义
y1=simple(w)
w =
piecewise([a = b, b^k + b^k*k], [a <> b, (a*a^k - b*b^k)/(a - b)])
y1 = 24、
piecewise([a = b, b^k + b^k*k], [a <> b, (a*a^k - b*b^k)/(a - b)])
(2)变换法(复验)
syms z
X=ztrans(a^k,k,z);
H=ztrans(b^k,k,z);
y2=iztrans(H*X,z,k) %通过Z变换及反变换
y2 =
piecewise([b <> 0, (a*a^k)/(a - b) - (b*b^k)/(a - b)])
〖说明〗
l 符号计算不同途径产生的结果在形式上有可能不同,而且往往无法依靠符号计算本身的指令是它们一致。此时, 25、必须通过手工解决。
n 14.设系统的冲激响应为,求该系统在输入,作用下的输出。
〖目的〗
l 符号连续函数卷积的直接法和变换法。
l 符号变量限定性定义的作用。
l laplace, ilaplace指令的应用。
〖解答〗
(1)直接法
syms t
h=exp(-3*t);u=cos(t);
syms tao;
h_tao=subs(h,t,tao);
u_t_tao=subs(u,t,t-tao);
hu_tao=h_tao*u_t_tao;
hut=simple(int(hu_tao,tao,0,t)) %直接卷积
hut =
(3*cos(t))/ 26、10 - 3/(10*exp(3*t)) + sin(t)/10
(2)变换法(复验)
syms s;
HU=laplace(h,t,s)*laplace(u,t,s);
huL=simple(ilaplace(HU,s,t)) %拉氏变换及反变换
huL =
(3*cos(t))/10 - 3/(10*exp(3*t)) + sin(t)/10
n 15.求的Fourier变换。
〖目的〗
l 符号变量限定性定义的作用。
l fourier指令的应用。
〖解答〗
syms A t w
a=sym('a','positive');
f=A*exp( 27、a*abs(t));
y=fourier(f,t,w)
F=simple(y)
y =
(2*A*a)/(a^2 + w^2)
F =
(2*A*a)/(a^2 + w^2)
n 16.求的Fourier变换,并画出时的幅频谱。
〖目的〗
l 单位阶跃符号函数heaviside的应用。
l subs实现多变量置换。
l ezplot的使用。
〖解答〗
syms t A w;
tao=sym('tao','positive');
f=A*((1+t/tao)*(heaviside(t+tao)-heaviside(t))+(1-t/tao)*(he 28、aviside(t)-heaviside(t-tao)));
Fw=fourier(f,t,w);
Fws=simple(Fw)
Fw2=subs(Fws,[A,tao],[2,2])
ezplot(abs(Fw2))
grid
Fws =
-(4*A*(cos((tao*w)/2)^2 - 1))/(tao*w^2)
Fw2 =
-(8*cos(w)^2 - 8)/(2*w^2)
n 17.求的Laplace反变换。
〖解答〗
syms s t
F=(s+3)/(s^3+3*s^2+6*s+4);
f=simple(ilaplace(F,s, 29、t))
f =
(3^(1/2)*sin(3^(1/2)*t) - 2*cos(3^(1/2)*t) + 2)/(3*exp(t))
n 18.利用符号运算证明Laplace变换的时域求导性质:。
〖目的〗
l 符号计算用于定理证明。
〖解答〗
syms t s;
y=sym('f(t)');
df=diff(y,t);
Ldy=laplace(df,t,s)
Ldy =
s*laplace(f(t), t, s) - f(0)
n 19.求的Z变换表达式。
〖目的〗
l 注意:变换中,被变换变量的约定。
〖解答〗
syms l 30、ambda k T z;
f_k=k*exp(-lambda*k*T);
F_z=simple(ztrans(f_k,k,z))
F_z =
(z*exp(T*lambda))/(z*exp(T*lambda) - 1)^2
n 20.求方程的解。
〖目的〗
l solve指令中,被解方程的正确书写,输出量的正确次序。
〖解答〗
eq1='x^2+y^2=1';
eq2='x*y=2';
[x,y]=solve(eq1,eq2,'x','y')
x =
(1/2 + (15^(1/2)*i)/2)^(1/2)/2 - (1/2 + (15^( 31、1/2)*i)/2)^(3/2)/2
- (1/2 + (15^(1/2)*i)/2)^(1/2)/2 + (1/2 + (15^(1/2)*i)/2)^(3/2)/2
(1/2 - (15^(1/2)*i)/2)^(1/2)/2 - (1/2 - (15^(1/2)*i)/2)^(3/2)/2
- (1/2 - (15^(1/2)*i)/2)^(1/2)/2 + (1/2 - (15^(1/2)*i)/2)^(3/2)/2
y =
(1/2 + (15^(1/2)*i)/2)^(1/2)
-(1/2 + (15^(1/2)*i)/2)^(1/2)
(1/2 32、 (15^(1/2)*i)/2)^(1/2)
-(1/2 - (15^(1/2)*i)/2)^(1/2)
n 21.求图p2-1所示信号流图的系统传递函数,并对照胡寿松主编“自动控制原理”中的例2-21结果,进行局部性验证。
图p2-1
〖目的〗
l 理解和掌握信号流图传递函数的“代数状态方程解法”。
l 并设法用胡寿松主编的“自动控制原理”的例2-21进行局部性验证。
〖解答〗
(1)求传递函数
syms G1 G2 G3 G4 G5 G6 G7 H1 H2 H3 H4 H5
A=[ 0 0 0 0 -H3 -H4;
33、
G1 0 -H1 0 0 0;
0 G2 0 0 -H2 G6;
0 0 G3 0 0 G7;
0 0 0 G4 0 0;
0 G5 0 0 0 -H5];
b=[ 1; 0; 0; 0; 0; 0];
c=[ 0 0 0 0 1 0];
Y2U=c*((eye(size(A))-A)\b); %求传递函数
[NN,DD]=n 34、umden(Y2U); %分离出分子、分母多项式
DD=sort(DD); %分母多项式排序
disp([blanks(5),'传递函数 Y2U 为'])
pretty(NN/DD)
传递函数 Y2U 为
(G1 G4 (G2 G3 + G5 G7 + G3 G5 G6 + G2 G3 H5)) /
(H5 + G2 H1 + G3 G4 H2 + G1 G5 H4 + G5 G6 H1 + G2 H1 H5 + G3 G4 H2 H5 +
G1 G2 G3 G4 H3 + G1 G4 G5 G7 H3 - G4 G 35、5 G7 H1 H2 + G1 G3 G4 G5 G6 H3 +
G1 G2 G3 G4 H3 H5 + G1 G3 G4 G5 H2 H4 + 1)
(2)局部性验证
syms a b c d e f g
y2u=subs(Y2U,[G1,G2,G3,G4,G5,G6,G7,H1,H2,H3,H4,H5],[a,e,f,1,b,c,0,g,0,0,0,d]);
[nn,dd]=numden(y2u);
dd=sort(dd);
disp([blanks(5),'局部性验证用的传递函数y2u'])
pretty(nn/dd)
局部性验证用的 36、传递函数y2u
a (e f + b c f + d e f)
---------------------------
d + e g + b c g + d e g + 1
此结果与胡寿松主编的“自动控制原理”例2-21一致。
n 22.采用代数状态方程法求图p2-2所示结构框图的传递函数和。
图p2-2
〖目的〗
l 运用“代数状态方程解法”求输入和扰动同时存在的结构框图的传递函数。
〖解答〗
(1)理论演绎
对于结构框图写出状态方程
(p2-1)
此式第一个方程关于x的解可写为
(p2 37、2)
把此式代入式(p2-1)的第二个方程,加以整理后可得
据此可写出传递函数
(p2-3)
(p2-4)
(2)列出“元素级”状态方程
值得提醒:在编写M码之前,最好先在草稿纸上,仔细“元素级”状态方程是避免出错的冲要措施。对此,不要掉以轻心。
本例的“元素级”状态方程如下
(p2-5)
(3)编写相应的M码
syms G1 G2 G3 H1 H2
A=[ 0 0 0 -G1 -G1;
G2 0 -G2 0 0;
0 0 0 0 38、 0;
0 H1 0 0 0;
0 H2 0 0 0];
b=[ G1; 0; 0; 0; 0];
f=[ 0; 0; G3; 0; -H2];
c=[ 0 1 0 0 0];
d=0;
g=-1;
R=c/(eye(size(A))-A); %中间变量
Y2U=R*b+d; %计算传递函数 Y/U
Y2W=R*f+g; %计算传递函数 Y/W
[NU,DU]=numden(Y2U); %分离出分 39、子、分母多项式
DU=sort(DU); %分母多项式排序
disp([blanks(5),'传递函数 Y2U 为'])
pretty(NU/DU)
[NW,DW]=numden(Y2W);
NW=sort(NW);
DW=sort(DW);
disp([blanks(5),'传递函数 Y2W 为'])
pretty(NW/DW)
传递函数 Y2U 为
G1 G2
-----------------------
G1 G2 H1 + G1 G2 H2 + 1
传递函数 Y2W 为
40、 G2 G3 + G1 G2 H1 + 1
- -----------------------
G1 G2 H1 + G1 G2 H2 + 1
n 23.求微分方程的通解,并绘制任意常数为1时解的图形。
〖目的〗
l 理解指令dsolve的正确使用。
l 对dsolve输出结果的正确理解。
l ezplot指令绘图时,如何进行线色控制。
l 如何覆盖那些不能反映图形窗内容的图名。
〖解答〗
(1)求通解
reset(symengine)
clear
syms y x
y=dsolve('0.2*y*Dy+0.25*x=0','x')
y 41、 =
2^(1/2)*(C3 - (5*x^2)/8)^(1/2)
-2^(1/2)*(C3 - (5*x^2)/8)^(1/2)
(2)根据所得通解中不定常数的符号写出“对其进行数值替代的指令”
yy=subs(y,'C3',1) %将通解中的C3用1代替
yy =
2^(1/2)*(1 - (5*x^2)/8)^(1/2)
-2^(1/2)*(1 - (5*x^2)/8)^(1/2)
(3)观察通解中两个分解的平方是否相同
yy(1)^2==yy(2)^2
ans =
1
(4) 42、于是可考虑函数的平方关系
syms Y
fxy=Y^2-yy(1)^2
fxy =
Y^2 + (5*x^2)/4 - 2
(5)根据平方关系式画完整曲线
clf
ezplot(fxy,[-2,2,-2,2])
axis square
grid on
(6)假如直接用“分解”画曲线,那么将是不完整的
ezplot(yy(1)),hold on
cc=get(gca,'Children');
set(cc,'Color','r')
ezplot(yy(2)),axis([-2 2 -2 2])
legend('y(1)','y( 43、2)'),hold off;
title(' ') %覆盖不完全的图名
grid
axis square
n 24.求一阶微分方程的解。
〖目的〗
l 初值微分方程的符号解。
l pretty指令的使用。
〖解答〗
x=dsolve('Dx=a*t^2+b*t','x(0)=2','t')
pretty(x) %比较易读的表达形式
x =
(t^2*(3*b + 2*a*t))/6 + 2
2
t (3 b + 2 a t)
---------------- + 2
6 44、
n 25.求边值问题的解。(注意:相应的数值解法比较复杂)。
〖目的〗
l 边值微分方程的符号解。
〖解答〗
[f,g]=dsolve('Df=3*f+4*g','Dg=-4*f+3*g','f(0)=0,g(0)=1')
f =
sin(4*t)*exp(3*t)
g =
cos(4*t)*exp(3*t)
第3章 数值数组及其运算
习题3及解答
n 5.要求在闭区间上产生具有10个等距采样点的一维数组。试用两种不同的指令实现。
〖目的〗
l 数值计算中产生自变量采样点的两个常用指令的异同。
〖解答〗
%方法一
t1 45、linspace(0,2*pi,10)
%方法二
t2=0:2*pi/9:2*pi %要注意采样间距的选择,如这里的2*pi/9.
t1 =
Columns 1 through 7
0 0.6981 1.3963 2.0944 2.7925 3.4907 4.1888
Columns 8 through 10
4.8869 5.5851 6.2832
t2 =
Columns 1 through 7
0 0.6981 1.3963 46、 2.0944 2.7925 3.4907 4.1888
Columns 8 through 10
4.8869 5.5851 6.2832
n 6.由指令rng('default'),A=rand(3,5)生成二维数组A,试求该数组中所有大于0.5的元素的位置,分别求出它们的“全下标”和“单下标”。
〖目的〗
l 数组下标的不同描述:全下标和单下标。
l sub2ind, int2str, disp的使用。
l 随机发生器的状态控制:保证随机数的可复现性。
〖解答〗
rng('default')
A=rand(3,5 47、)
[ri,cj]=find(A>0.5);
id=sub2ind(size(A),ri,cj);
ri=ri';cj=cj';
disp(' ')
disp('大于0.5的元素的全下标')
disp(['行号 ',int2str(ri)])
disp(['列号 ',int2str(cj)])
disp(' ')
disp('大于0.5的元素的单下标')
disp(id')
A =
0.8147 0.9134 0.2785 0.9649 0.9572
0.9058 0.6324 0.5469 0.1 48、576 0.4854
0.1270 0.0975 0.9575 0.9706 0.8003
大于0.5的元素的全下标
行号 1 2 1 2 2 3 1 3 1 3
列号 1 1 2 2 3 3 4 4 5 5
大于0.5的元素的单下标
1 2 4 5 8 9 10 12 13 15
n 7.采用默认全局随机流,写出产生长度为1000的“等概率双位(即取-1,+1)取值的随机码”程序指令,并给出 -1码的数 49、目。
〖目的〗
l 两种基本随机发生器的使用。
l 关系运算产生逻辑数组——可用于数组的元素的标识和寻访。
l 逻辑数组的应用。
l 如何判断两个整数数组是否相等。
〖解答〗
(1)运用均匀随机数解题法——解法1
rng default %为以下结果重现而设;产生默认随机流。详见第4.3.2节
A=rand(1,1000);
a=2*(A>0.5)-1;
Na=sum(a==-1)
Na =
512
(2)运用正态随机数解题法——解法2
randn('state',123)
B=randn(1,1000);
b=2*(B>0)-1;
Nb 50、sum(b==-1)
Nb =
462
(3)直接发生法——解法3
c=randsrc(1,1000,[-1,1]);
Nc=sum(c==-1)
Nc =
482
n 2.已知矩阵,运行指令B1=A.^(0.5), B2=A^(0.5), 可以观察到不同运算方法所得结果不同。(1)请分别写出根据B1, B2恢复原矩阵A的程序。(2)用指令检验所得的两个恢复矩阵是否相等。
〖目的〗
l 数组运算和矩阵运算的不同。
l 如何判断两个双精度数组是否相等。
l norm指令的应用。
〖解答〗
A=[1,2;3,4];
B1=A