###MATLAB基础三
- 方阵的行列式
把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为所对应的行列式的值。
det(A):求方阵A所对应的行列式的值。
e.g.验证det(A-1)=1/det(A)。
format rat
A=[1,3,2;-3,2,1;4,1,2]
det(inv(A))
1/det(A)
- 矩阵的秩
矩阵线性无关的行数或列数称为矩阵的秩。
rank(A):求矩阵A的秩。
e.g.求3~20阶魔方阵的秩。
for n=3:20
r(n)=rank(magic(n));
end
bar®
grid on
axis([2,21,0,20])
[3:20;r(3:20)]
- 矩阵的迹
矩阵的迹等于对角线元素之和,也等于矩阵的特征值之和。
trace(A):求矩阵A的迹。
>>a=[1,3,2;-3,2,1;4,1,2]
a =
1 3 2
-3 2 1
4 1 2
>> b=trace(a)
b =
5
>> t=sum(diag(a))
t =
5
- 向量和矩阵的范数
矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度。
(1)向量的3种常用范数
求向量范数的函数为:
norm(V,1):计算向量V的1–范数。
norm(V)或norm(V,2):计算向量V的2–范数。
norm(V,inf):计算向量V的∞–范数。
(2)矩阵的范数
>>x=[2,0,1;-1,1,0;-3,3,0]
x =
2 0 1
-1 1 0
-3 3 0
>> n=norm(x)
n =
4.7234
>> n=norm(x,1)
n =
6
- 矩阵的条件数
矩阵A的条件数等于A的范数与A的逆矩阵的范数的乘积。
条件数越接近于1,矩阵的性能越好,反之,矩阵的性能越差。
计算矩阵A的条件数的函数为:
cond(A,1):计算A的1–范数下的条件数。
cond(A)或cond(A,2):计算A的2–范数下的条件数。
cond(A,inf):计算A的∞–范数下的条件数。
e.g.求2~10阶希尔伯特矩阵的条件数。
for n=2:10
c(n)=cond(hilb(n));
end
format long
c’
- 矩阵的特征值和特征向量
计算矩阵的特征值和特征向量的函数是eig,常用的调用格式有两种:
E=eig(A):求矩阵A的全部特征值,构成向量E。
[X,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并产生矩阵X,X各列是相应的特征向量。
>>R=[-1,2,0;2,-4,1;1,1,-6];
>>S=[1,2;2,3];
>>A=>>[R,zeros(3,2);zeros(2,3),S];
>>[X1,d1]=eig®
>>[X2,d2]=eig(S)
>>[X3,d3]=eig(A)
X1 =
0.8553 0.4517 0.1899
0.4703 -0.8395 -0.5111
0.2173 -0.3021 0.8383
d1 =
0.0996 0 0
0 -4.7165 0
0 0 -6.3832
X2 =
-0.8507 0.5257
0.5257 0.8507
d2 =
-0.2361 0
0 4.2361
X3 =
0.8553 0.4517 0.1899 0 0
0.4703 -0.8395 -0.5111 0 0
0.2173 -0.3021 0.8383 0 0
0 0 0 -0.8507 -0.5257
0 0 0 0.5257 -0.8507
d3 =
0.0996 0 0 0 0
0 -4.7165 0 0 0
0 0 -6.3832 0 0
0 0 0 -0.2361 0
0 0 0 0 4.2361
>>x=[0,0.5,0.5,3,5.5,5.5,6,6,3,0;0,0,6,0,6,0,0,8,1,8];
>>A=[1,0.5;0,1];
>>y=A*x;
>>subplot(2,2,1);
>>fill(x(1,:),x(2,:),‘r’);
>>subplot(2,2,2);
>>fill(y(1,:),y(2,:),‘r’);
定义变换矩阵A,再利用A对x进行变换,得到y矩阵,最后分别绘制变换前后的图形,M原来是正体,变换后改为斜体。
在构建字库时,不必单独创建斜体字库,而只需对正体字库进行适当的线性变换即可,这样可以大大节省存储空间。
参考:MOOC《科学计算与MATLAB语言》