矩阵时一个神奇的东西,第一次见到时是在求斐波那契数列的时候,那时觉得矩阵好神奇,但至于原理什么的一概不懂
基本概念
蒟蒻不懂,形似于
的东东就是一个 n n 行列的矩阵
基本运算
方便模拟,先设两个矩阵
A,B,C
A
,
B
,
C
,其中
C
C
为运算结果矩阵
【加减法】两个矩阵的对应元素直接加减
对于矩阵 C C 中的元素
【数乘】一个数与一个矩阵相乘
对于矩阵 C C 中的元素
【矩乘】两个矩阵相乘
对于矩阵 C C 中的元素
行列式计算
首先,仅有行数等于列数的矩阵存在行列式
对于一个矩阵(取楼上的
S
S
矩阵),其行列式计算公式为:
其中, b[] b [ ] 为 [1,n] [ 1 , n ] 的一个全排列, t t 为该全排列的逆序对数
在程序中,由于暴力计算一个阶行列式的时间复杂度为 O(n!nlog2n) O ( n ! n log 2 n ) ,所以一般不采用直接求行列式的方式,而是采用一些奇异的性质(节选自《工程数学-线性代数》第六版,同济大学数学系编)
性质1
对换行列式的两行(列),行列式变号
证明:由于所有的加和项绝对值不变,符号由于两行对换,逆序对数奇偶性变换,则整个行列式变号
性质2
如果行列式的任意两行(列)完全成比例,则该行列式为 0 0
证明:对换这两行(列),按照性质1,行列式变号,但实际上行列式不变(若比例不为,可以将比例系数提到行列式外),则该行列式只能为 0 0
性质3
如果将行列式的一行(列)a的元素乘上一个系数k再加到另一行(列)b上,行列式不变
证明:首先,这个答案行列式等于原行列式加上矩阵B
矩阵B为原行列式,并设行(列)b为a乘上系数k,可由性质2得知行列式B为,得证
性质4
- 如果行列式中所有元素 aij,i>j a i j , i > j 都为 0 0 ,则称该行列式为上三角行列式
- 一个上三角行列式等于
其中最有用的的性质莫过于性质3和4了,利用这两点便可以将一个任意行列式通过性质3转化成一个上三角行列式,便可以简便地计算出一个任意行列式的值了
其中通过性质三的转化类似于高斯消元,其时间复杂度为 O(n3) O ( n 3 ) ,求上三角行列式的时间复杂度为 O(n) O ( n ) ,总复杂度为:时间 O(n3) O ( n 3 ) ,空间 O(n2) O ( n 2 )
矩阵的用途
1 优化Dp
例题
Problem
求给定数列
f(n)=a∗f(n−1)+b∗f(n−2)+⋯
f
(
n
)
=
a
∗
f
(
n
−
1
)
+
b
∗
f
(
n
−
2
)
+
⋯
中的第k项,
k≤1e9
k
≤
1
e
9
Solution
使用矩阵加速
例如对于一个数列
f(n)=a∗f(n−1)+b∗f(n−2)
f
(
n
)
=
a
∗
f
(
n
−
1
)
+
b
∗
f
(
n
−
2
)
答案为
2 模拟Dp
例题
对边用上邻接矩阵,并对邻接矩阵进行快速幂
3 高斯消元
一般是先列出形似于下面的式子,化成矩阵,再用高斯消元求解
具体就是按照简化行列式的思想将其转化为如下矩阵:
最后的ans数组即为答案
矩阵是一个很神奇的东西,蒟蒻不会用,所以只总结出会的一点点东西,以后还有新学习的再加