这段时间开始重新学习线性代数,其实这是一门很有用的学科,而且我使用matlab有一段时间了,也是一直在和矩阵打交道,但是常常碰到有些概念还是觉得模糊不清楚,所以重新捡起《线性代数》这门课进行学习。学习过程中也会插入一些matlab实现。
矩阵的特类
行矩阵
行矩阵就是只有一行的矩阵,matlab里很常用。
>> a=[1,2,3,4]
a =
1 2 3 4
>> a=[1:4]
a =
1 2 3 4
列矩阵
列矩阵就是只有一列的矩阵,因为matlab很多都是列运算,所以我常常更倾向于用列矩阵。
>> b=[1;2;3;4]
b =
1
2
3
4
上三角矩阵
上三角矩阵主对角线下侧的元素全为0,matlab也有直接取一个矩阵上三角的函数。
>> c=[1:4;2:5;3:6;4:7];
>> triu(c)
ans =
1 2 3 4
0 3 4 5
0 0 5 6
0 0 0 7
下三角矩阵
下三角矩阵主对角线上侧的元素全为0,matlab也有直接取一个矩阵下三角的函数。
>> c=[1:4;2:5;3:6;4:7];
>> tril(c)
ans =
1 0 0 0
2 3 0 0
3 4 5 0
4 5 6 7
对角阵
对角阵就是主对角线两侧的元素全为0的方阵,matlab中可用diag(a,n)生成,其中a是向量,n是它偏离对角线的列数,可以为正数也可以为负数。生成对角阵的时候设置n=0,或者直接采用diag(a)就可以了。
>> a=[1,2,3];
>> diag(a,-1)
ans =
0 0 0 0
1 0 0 0
0 2 0 0
0 0 3 0
单元矩阵
单元矩阵是对角阵的一种,只不过对角线的元素均为1。
>> eye(3)
ans =
1 0 0
0 1 0
0 0 1
当然eye()函数也可以生成mxn的矩阵,当行数小于列数时,生成的是行满秩矩阵,当行数大于列数时,生成的是列满秩矩阵。
>> eye(3,2)
ans =
1 0
0 1
0 0
矩阵的运算
基础运算
矩阵的基础运算就是加减乘除四种,对于matlab来说还有点乘和点除,分别用 .* 和 ./ 表示。矩阵运算也有幂运算,但是也不难。需要注意的是矩阵的运算有很多时候不适用交换率,所以要注意下面的情况:多项式计算
矩阵也有多项式的形式:其中与A同阶。
>> A=[1,2;3,4];
>> f=A^2+A
f =
8 12
18 26
转置
将一个矩阵的行换成同序数的列则可得到它的转置矩阵。
>> A=[1,2,3;4,5,6];
>> A'
ans =
1 4
2 5
3 6
在转置这里有两个新的概念:
-
对称阵:
-
反对称阵: