【笔记】矩阵

矩阵时一个神奇的东西,第一次见到时是在求斐波那契数列的时候,那时觉得矩阵好神奇,但至于原理什么的一概不懂

基本概念


蒟蒻不懂,形似于

S=a11a21an1a12a22an2   a1ma2manm S = [ a 11 a 12 ⋯   a 1 m a 21 a 22 ⋯   a 2 m ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯   a n m ]

的东东就是一个 n n m列的矩阵

基本运算


方便模拟,先设两个矩阵 A,B,C A , B , C ,其中 C C 为运算结果矩阵

A=[a11a12 a1ma21a22 a2man1an2 anm]

B=b11b21bn1b12b22bn2   b1mb2mbnm B = [ b 11 b 12 ⋯   b 1 m b 21 b 22 ⋯   b 2 m ⋮ ⋮ ⋱ ⋮ b n 1 b n 2 ⋯   b n m ]

【加减法】两个矩阵的对应元素直接加减

对于矩阵 C C 中的元素cij=aij±bij

【数乘】一个数与一个矩阵相乘

对于矩阵 C C 中的元素cij=aijmul

【矩乘】两个矩阵相乘

对于矩阵 C C 中的元素cij=k=1maikbkj

行列式计算


首先,仅有行数等于列数的矩阵存在行列式
对于一个矩阵(取楼上的 S S 矩阵),其行列式计算公式为:

ans=(1)ti=1nai,b[j]

其中, b[] b [ ] [1,n] [ 1 , n ] 的一个全排列, t t 为该全排列的逆序对数

在程序中,由于暴力计算一个n阶行列式的时间复杂度为 O(n!nlog2n) O ( n ! n log 2 ⁡ n ) ,所以一般不采用直接求行列式的方式,而是采用一些奇异的性质(节选自《工程数学-线性代数》第六版,同济大学数学系编)

性质1
  • 对换行列式的两行(列),行列式变号

  • 证明:由于所有的加和项绝对值不变,符号由于两行对换,逆序对数奇偶性变换,则整个行列式变号

性质2
  • 如果行列式的任意两行(列)完全成比例,则该行列式为 0 0

  • 证明:对换这两行(列),按照性质1,行列式变号,但实际上行列式不变(若比例不为1,可以将比例系数提到行列式外),则该行列式只能为 0 0

性质3
  • 如果将行列式的一行(列)a的元素乘上一个系数k再加到另一行(列)b上,行列式不变

  • 证明:首先,这个答案行列式等于原行列式加上矩阵B
    矩阵B为原行列式,并设行(列)b为a乘上系数k,可由性质2得知行列式B为0,得证

性质4
  • 如果行列式中所有元素 aij,i>j a i j , i > j 都为 0 0 ,则称该行列式为上三角行列式
  • 一个上三角行列式等于i=1nai,i

其中最有用的的性质莫过于性质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)=af(n1)+bf(n2)+  f ( n ) = a ∗ f ( n − 1 ) + b ∗ f ( n − 2 ) + ⋯  
中的第k项, k1e9 k ≤ 1 e 9

Solution

使用矩阵加速

例如对于一个数列
f(n)=af(n1)+bf(n2) f ( n ) = a ∗ f ( n − 1 ) + b ∗ f ( n − 2 )

答案为

[f1f2]a10b01k1 [ f 1 f 2 ] ∗ [ a b 1 0 0 1 ] k − 1

2 模拟Dp
例题

SDOI-2009-HH去散步

对边用上邻接矩阵,并对邻接矩阵进行快速幂

3 高斯消元

一般是先列出形似于下面的式子,化成矩阵,再用高斯消元求解

{aixi=si} { ∑ a i ∗ x i = s i }

a11a21an1a12a22an2   a1ma2manms1s2sn ⇒ [ a 11 a 12 ⋯   a 1 m s 1 a 21 a 22 ⋯   a 2 m s 2 ⋮ ⋮ ⋱ ⋮ ⋮ a n 1 a n 2 ⋯   a n m s n ]

具体就是按照简化行列式的思想将其转化为如下矩阵:

100010   001ans1ans2ansn [ 1 0 ⋯   0 a n s 1 0 1 ⋯   0 a n s 2 ⋮ ⋮ ⋱ ⋮ ⋮ 0 0 ⋯   1 a n s n ]

最后的ans数组即为答案


矩阵是一个很神奇的东西,蒟蒻不会用,所以只总结出会的一点点东西,以后还有新学习的再加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值