实验一 基础练习
练习1 基本操作和简单语句输入
用函数sym定义符号矩阵:
1
>> sym_matrix = sym('[a b c;Jack Help_Me NO_WAY]')
结果:
1
2
3
4sym_matrix =
[ a, b, c]
[ Jack, Help_Me, NO_WAY]用函数syms定义符号矩阵
1
2
3
4
5>> syms a b c ;
>> M1 = sym('Classical');
>> M2 = sym(' Jazz');
>> M3 = sym('Blues');
>> A = [a b c;M1,M2,M3;sym([2 3 5])]结果:
1
2
3
4
5A =
[ a, b, c]
[ Classical, Jazz, Blues]
[ 2, 3, 5]输入
A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2; 3 3 3]
,在命令窗口中执行下列表达式,掌握其含义:A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2) A(:,3)*B(2,:) A*B A.*B A^2 A.^2 B/A B./A
结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14>> A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2; 3 3 3]
A =
7 1 5
2 5 6
3 1 5
B =
1 1 1
2 2 2
3 3 3A(2,3)
——输出矩阵A第二行第三列的值1
2
3
4
5>> A(2, 3)
ans =
6A(:,2)
——输出矩阵A第二列的所有值1
2
3
4
5
6
7>> A(:,2)
ans =
1
5
1A(3,:)
——输出矩阵A第三行的所有值1
2
3
4
5>> A(3,:)
ans =
3 1 5A(:,1:2:3)
—— 输出矩阵A的第一列和第三列的值1
2
3
4
5
6
7>> A(:,1:2:3)
ans =
7 5
2 6
3 5A(:,3).*B(:,2)
——输出矩阵A的第三列与矩阵B的第二列的乘积1
2
3
4
5
6
7>> A(:,3).*B(:,2)
ans =
5
12
15A(:,3).*B(2,:)
——输出矩阵A的第三列与矩阵B的第二行的乘积1
2
3
4
5
6
7>> A(:,3).*B(2,:)
ans =
10 10 10
12 12 12
10 10 10A*B
——将矩阵A与矩阵B进行矩阵乘法运算1
2
3
4
5
6
7>> A*B
ans =
24 24 24
30 30 30
20 20 20A.*B
——将矩阵A与矩阵B中相同位置的元素相乘1
2
3
4
5
6
7>> A.*B
ans =
7 1 5
4 10 12
9 3 15A^2
——将矩阵A与矩阵A进行矩阵乘法运算1
2
3
4
5
6
7>> A^2
ans =
66 17 66
42 33 70
38 13 46A.^2
——将矩阵A与矩阵A相对应位置的元素相乘1
2
3
4
5
6
7>> A.^2
ans =
49 1 25
4 25 36
9 1 25B/A
——矩阵B乘矩阵A的逆1
2
3
4
5
6
7>> B/A
ans =
0.1842 0.2105 -0.2368
0.3684 0.4211 -0.4737
0.5526 0.6316 -0.7105B./A
——矩阵B与矩阵A相对应的元素相除1
2
3
4
5
6
7>> B./A
ans =
0.1429 1.0000 0.2000
1.0000 0.4000 0.3333
1.0000 3.0000 0.6000输入
C=1:2:20
,则C(i)
表示什么?其中i=1,2,3,…,10
;结果:
1
2
3
4
5>> C=1:2:20
C =
1 3 5 7 9 11 13 15 17 19C(i)
表示第i位的数据1
2
3
4
5
6
7
8
9
10
11>> C(1)
ans =
1
>> C(5)
ans =
9查找已创建变量的信息,删除无用的变量
1
2
3
4
5
6
7
8
9
10
11>> A
A =
7 1 5
2 5 6
3 1 5
>> clear A
>> A
未定义函数或变量 'A'。
练习2 编程
编写程序,计算1+3+5+7+…+(2n+1)的值(用input 语句输入n 值)
1
2
3
4
5
6
7
8clear
clc
n = input('input n = ');
sum = 1;
for i = 1:n
sum = sum + (2*i+1);
end
disp(['sum = ' num2str(sum)]);结果:
1
2input n = 10
sum = 121编写分段函数$y = {
\[\begin{array}{ll} x & \textrm{$0 \leq x<1$}\\ 2-x & \textrm{$1 \leq x \leq 2$}\\ 0 & \textrm{其他} \end{array}\].\(的函数文件,存放于文件ff.m中,计算出\)f(-3)\(、\)f()\(、\)f()$的值。
1
2
3
4
5
6
7
8
9
10x = input('x = ');
if(x>=0 && x<1)
fx = x;
else if(x >= 1 && x <= 2)
fx = 2 - x;
else
fx = 0;
end
end
disp(['f(x) = ', num2str(fx)]);结果:
1
2
3
4
5
6
7
8x = 0.5
f(x) = 0.5
x = 1.5
f(x) = 0.5
x = -2
f(x) = 0
x = 3
f(x) = 0
练习3 矩阵计算
加、减运算
1
2
3
4
5
6
7
8
9
10clear
clc
A=[1, 1, 1; 1, 2, 3; 1, 3, 6];
B=[8, 1, 6; 3, 5, 7; 4, 9, 2];
X=A+B;
Y=A-B;
disp(['A+B = ']);
disp(X);
disp(['A-B = ']);
disp(Y);结果:
1
2
3
4
5
6
7
8
9A+B =
9 2 7
4 7 10
5 12 8
A-B =
-7 0 -5
-2 -3 -4
-3 -6 4乘法
两个矩阵相乘
1
2
3
4
5
6
7
8
9X= [2 3 4 5
1 2 2 1];
Y=[0 1 1
1 1 0
0 0 1
1 0 0];
Z = X*Y;
disp(['Z = ']);
disp(Z);结果:
1
2
3Z =
8 5 6
3 3 3矩阵的数乘
1
2
3a = 2*X;
disp('a = ');
disp(a);结果:
1
2
3a =
4 6 8 10
2 4 4 2向量的点乘(内积)
1
2
3
4X=[-1 0 2]; Y=[-2 -1 1];
Z=dot(X, Y)
% 或者
sum(X.*Y)结果:
1
2
3Z =
41
2
3ans =
4向量叉乘
1
2
3a=[1 2 3];
b=[4 5 6];
c=cross(a,b)结果:
1
2
3c =
-3 6 -3混合积
1
2a=[1 2 3]; b=[4 5 6]; c=[-3 6 -3];
x=dot(a, cross(b, c))结果:
1
2
3x =
54
矩阵的除法
1
2
3a=[1 2 3; 4 2 6; 7 4 9];
b=[4; 1; 2];
x=a\b结果:
1
2
3
4
5x =
-1.5000
2.0000
0.5000矩阵乘方
A为方阵,p 为大于0 的整数时,A^P 表示A 的P 次方,即A 自乘P 次;p 为小于0 的整数时,A^P 表示A-1 的P 次方。
1
2A=[1 2 3; 4 2 6; 7 4 9];
A^2结果:
1
2
3
4
5ans =
30 18 42
54 36 78
86 58 126A 为方阵,p 为非整数时,则其中V 为A 的特征向量,为特征值矩阵。
1
2A=[1 2 3; 4 2 6; 7 4 9];
A^0.5结果:
1
2
3
4
5ans =
-0.6094 - 0.0000i 2.4744 + 0.0000i -0.1031 - 0.0000i
0.3712 - 0.0000i 1.3908 + 0.0000i 1.3197 - 0.0000i
2.8112 - 0.0000i -0.6461 + 0.0000i 3.1847 - 0.0000i
矩阵的转置
1
2A=[1 2 3; 4 2 6; 7 4 9];
A'结果:
1
2
3
4
5ans =
1 4 7
2 2 4
3 6 9矩阵的逆矩阵
方法一
1
2
3A=[1 2 3; 2 2 1; 3 4 3];
inv(A)
%或 A^(-1)结果:
1
2
3
4
5ans =
1.0000 3.0000 -2.0000
-1.5000 -3.0000 2.5000
1.0000 1.0000 -1.0000方法二
1
2
3B=[1, 2, 3, 1, 0, 0; 2, 2, 1, 0, 1, 0; 3, 4, 3, 0, 0, 1];
C=rref(B); %化行最简形
X=C(:, 4:6)结果:
1
2
3
4
5X =
1.0000 3.0000 -2.0000
-1.5000 -3.0000 2.5000
1.0000 1.0000 -1.0000
方阵的行列式
1
2A=[1 2 3; 2 2 1; 3 4 3];
D=det(A)结果:
1
2
3D =
2.0000符号矩阵的四则运算
1
2
3
4A=sym('[1/x,1/(x+1);1/(x+2),1/(x+3)]');
B=sym('[x,1;x+2,0]');
C=B-A
D=A\B结果:
1
2
3
4
5
6
7
8
9
10C =
[ x - 1/x, 1 - 1/(x + 1)]
[ x - 1/(x + 2) + 2, -1/(x + 3)]
D =
[ -x*(2*x^2 + 7*x + 6), (x*(x^2 + 3*x + 2))/2]
[ 2*(x + 1)^2*(x + 3), -(x*(x + 1)*(x + 3))/2]符号矩阵的简化
因式分解
1
2syms x;
factor(x^9-1)结果:
1
2
3ans =
[ x - 1, x^2 + x + 1, x^6 + x^3 + 1]符号矩阵的展开
1
2
3syms x y;
p=expand((x+1)^3)
q=expand(sin(x+y))结果:
1
2
3
4
5
6
7
8p =
x^3 + 3*x^2 + 3*x + 1
q =
cos(x)*sin(y) + cos(y)*sin(x)同类式合并
Collect(s,v)
将s
中的变量v
的同幂项系数合并。符号简化
1
2Simple(s);
Pretty(s);
练习4 秩与线性相关性
矩阵和向量组的秩以及向量组的线性相关性
1
2A=[1 -2 2 3;-2 4 -1 3;-1 2 0 3;0 6 2 3;2 -6 3 4];
B=rank(A)结果:
1
2
3B =
3由于秩为3 < 向量个数,因此向量组线性相关。
向量组的最大无关组
1
2
3
4
5
6
7
8a1=[1 -2 2 3]';
a2=[-2 4 -1 3]';
a3=[-1 2 0 3]';
a4=[0 6 2 3]';
a5=[2 -6 3 4]';
A=[a1 a2 a3 a4 a5]
format rat %以有理格式输出
B=rref(A) %求A的行最简形结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14A =
1 -2 -1 0 2
-2 4 2 6 -6
2 -1 0 2 3
3 3 3 3 4
B =
1 0 1/3 0 16/9
0 1 2/3 0 -1/9
0 0 0 1 -1/3
0 0 0 0 0
练习5 线性方程的组的求解
利用矩阵除法求线性方程组的特解(或一个解) \[ \left\{ \begin{array}{ll} 5x_1 + & 6x_2 & & & & = & 1\\ x_1 + & 5x_2 + & 6x_3 & & & = & 0\\ & x_2 + & 5x_3 + & 6x_4 & & = & 0\\ & & x_3 + & 5x_4 + & 6x_5 & = & 0\\ & & & x_4 + & 5x_5 & = & 1 \end{array} \right. \]
1
2
3
4
5
6
7
8A=[5 6 0 0 0
1 5 6 0 0
0 1 5 6 0
0 0 1 5 6
0 0 0 1 5];
B=[1 0 0 0 1]';
R_A=rank(A) %求秩
X=A\B %求解结果:
1
2
3
4
5
6
7
8
9
10
11
12R_A =
5
X =
1507/665
-229/133
37/35
-79/133
212/665这就是方程的解。
求方程组的解: \[ \left\{ \begin{array}{ll} x_1 + & x_2 - & 3x_3 - & x_4 & = & 1\\ 3x_1 - & x_2 - & 3x_3 + & 4x_4 & = & 4\\ x_1 + & 5x_2 - & 9x_3 - & 8x_4 & = & 0 \end{array} \right. \]
1
2
3A=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8];
B=[1 4 0]';
X=A\B结果:
1
2
3
4
5
6X =
0
0
-8/15
3/5