第一章操作题
1、设A为3行4列的矩阵,B为一个行数大于3的矩阵,写出MATLAB命令。
(1)删除A的第1、3两列。
(2)删除B的倒数第3行。
>> A=[1,2,3,4;5,6,7,8;1,2,3,4];
>> B=[1,2;3,4;5,6;7,8];
>> A(:,[1,3])=[]
A =
2 4
6 8
2 4
>> B((end-2),:)=[]
B =
1 2
5 6
7 8
2、建立一个字符串“I'm A STUDENT”,然后对该字符串做如下处理,写出MATLAB命令。
(1)将字符串中的大写字母变成相应的小写字母,其余字符不变。
(2)将子字符串“student”替换为字符串“teacher”
>> ch='I am A STUDENT';
>> k=find(ch>='a'&ch<='z');
>> ch(k)=ch(k)-('a'-'A')
ch =
'I AM A STUDENT'
>> p=strrep(ch,'STUDENT','teacher')
p =
'I AM A teacher'
3、分别求一个三位正整数的个位数字、十位数字和百位数字。
>> m=123;
>> ge=rem(m,10)
ge = 3
>> shi=rem(fix(m/10),10)
shi = 2
>> bai=fix(m/100)
bai = 1
4、求[1,100]区间的所有素数。
>> x=1:100;
>> k=isprime(x) //用于判断是否为素数,是素数返回1
>> m=find(k);//找到k中非零元素的序号
>> p=x(m)
p =
1 至 23 列
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83
24 至 25 列
89 97
5、建立一个字符串向量,然后对该向量做如下处理:
① 取第1~5个字符组成的子字符串。
② 将字符串倒过来重新排列。
③ 将字符串中的小写字母变成相应的大写字母,其余字符不变。
④ 统计字符串中小写字母的个数。
>> ch='ABCD1234ced';
>> p=ch(1:5)
p = 'ABCD1'
>> down=ch(end:-1:1)
down = 'dec4321DCBA'
>> k=find(ch>='a'&ch<='z');
>> ch(k)=ch(k)-('a'-'A')
ch = 'ABCD1234CED'
>> length(k)
ans = 3
第二章操作题
1、求下列矩阵的秩、迹和范数。
>> A=[0.43 43 2;-8.9 4 21;45 6 8];
>> rank(A)
ans =3
>> trace(A)
ans =12.4300
>> norm(A)
ans =48.1120
2、产生5阶希尔伯特矩阵H和5阶帕斯卡矩阵P,且求其行列式的值Hh和Hp以及它们的条件数Th和Tp。
>> H=hilb(5)
H =
1.0000 0.5000 0.3333 0.2500 0.2000
0.5000 0.3333 0.2500 0.2000 0.1667
0.3333 0.2500 0.2000 0.1667 0.1429
0.2500 0.2000 0.1667 0.1429 0.1250
0.2000 0.1667 0.1429 0.1250 0.1111
>> P=pascal(5)
P =
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
>> Hh=det(H)
Hh = 3.7493e-12
>> Ht=det(P)
Ht =1
>> Th=cond(H)
Th = 4.7661e+05
3、求A的特征值及特征向量。
>> A=[-29 6 18;20 5 12;-8 8 5];
>> [X,D]=eig(A)
X =
0.7130 0.2803 0.2733
-0.6084 -0.7867 0.8725
0.3487 0.5501 0.4050
D =
-25.3169 0 0
0 -10.5182 0
0 0 16.8351
4、产生5阶两位随机整数矩阵A,再产生均值为0.6、方差为0.1的5阶正态分布随机矩阵B,验证(A+B)I=IA+BI(I为单位矩阵)。
>> A=fix(10+90*rand(5))
A =
78 73 84 49 54
76 12 72 44 50
45 34 38 78 68
68 14 95 81 73
25 18 13 26 77
>> B=0.6+sqrt(0.1)*rand(5)
B =
0.6873 0.7576 0.8376 0.9034 0.8659
0.8149 0.9035 0.6807 0.7730 0.6804
0.8072 0.7076 0.7600 0.6438 0.8575
0.6514 0.7851 0.8211 0.6472 0.6770
0.6376 0.6708 0.8817 0.6814 0.8939
>> C=eye(5)
C =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
>> (A + B)*C==A*C + B*C
ans =
5×5 logical 数组
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
5、产生8阶魔方阵,求其每行每列元素的和。
>> A=magic(8)
A =
64 2 3 61 60 6 7 57
9 55 54 12 13 51 50 16
17 47 46 20 21 43 42 24
40 26 27 37 36 30 31 33
32 34 35 29 28 38 39 25
41 23 22 44 45 19 18 48
49 15 14 52 53 11 10 56
8 58 59 5 4 62 63 1
>> sum(A(1,:))
ans =260
>> sum(A(:,1))
ans =260
6、生成5阶帕斯卡矩阵,验证它的逆矩阵的所有元素也为整数。
>> format rat
>> pascal(5)
ans =
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
>> inv(pascal(5))
ans =
5 -10 10 -5 1
-10 30 -35 19 -4
10 -35 46 -27 6
-5 19 -27 17 -4
1 -4 6 -4 1
7、先建立5×5矩阵A,然后将A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。
>> A=eye(5)
A =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
>> D=diag(1:5);
>> D*A
ans =
1 0 0 0 0
0 2 0 0 0
0 0 3 0 0
0 0 0 4 0
0 0 0 0 5
8、验证魔方阵的主对角线、副对角线元素之和相等。
> A=magic(5);
>> D1=diag(A);
>> sum(D1)
ans =
65
>>B=flipud(A);
>>D2=diag(B);
>>sum(D2)
ans =
65
9、用求逆矩阵的方法解线性方程组
>> A=[1,2,3;1,4,9;1,8,27];
>> b=[5;-2;6];
>> x=inv(A)*b
x =
23
-29/2
11/3
>> x=A\b
x =
23
-29/2
11/3
10、验证det(A-1)=1/det(A)。
>> format rat
>> A=[1,3,2;-3,2,1;4,1,2];
>> det(inv(A))==1/det(A)
ans =
logical
1
11、求3~20阶魔方阵的秩。
>> for n=3:20
r(n)=rank(magic(n))
end
12、求2~10阶希尔伯特矩阵的条件数。
>> for n=2:10
cond(hilb(n))
end
第三章操作题
1、 输入一个整数,若为奇数则输出其平方根,否则输出其立方根。
>> x=input('请输入一个数:');
请输入一个数:9
>> if rem(x,2)==1
y=sqrt(x);
else y=x^(1\3);
end
>> y
y =
3
2、 输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应数的平方,若为其他字符则原样输出。