欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

矩阵分析与多元统计12 0-1矩阵 交换矩阵简介

发布时间:2025/4/14 编程问答 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 矩阵分析与多元统计12 0-1矩阵 交换矩阵简介 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

矩阵分析与多元统计12 0-1矩阵 交换矩阵简介

  • 选择矩阵
  • 交换矩阵

顾名思义,0-1矩阵就是所有元素取值均为0和1的矩阵,这类矩阵在矩阵分析、多元统计乃至组合学和图论中都有很重要的应用。在这个主题中我打算介绍选择矩阵、排列矩阵、交换矩阵、消元矩阵、复制矩阵和移位矩阵。(其实排列矩阵就是行列互换的初等变换矩阵。。。)

选择矩阵

选择矩阵selection matrix的作用是通过与某个矩阵相乘,使得结果等于这个矩阵中我们希望选择的那些元素构成的矩阵。最简单的selection matrix是列选择矩阵。假设A∈Fm×nA \in F^{m \times n}AFm×naia_iai表示它的第iii个列向量,eie_iei表示InI_nIn的第iii列,定义S=[ei1,⋯,eik],1≤i1<i2<⋯<ik≤nS = [e_{i_1},\cdots,e_{i_k}],1 \le i_1 < i_2 < \cdots < i_k \le nS=[ei1,,eik],1i1<i2<<ikn,它是一个列选择矩阵,作用是选出AAA的第i1,⋯,iki_1,\cdots,i_ki1,,ik列,
AS=[ai1,ai2,⋯,aik]∈Fm×kAS = [a_{i_1},a_{i_2},\cdots,a_{i_k}] \in F^{m \times k}AS=[ai1,ai2,,aik]Fm×k
类似地可以定义行选择矩阵,aia^iai表示AAA的第iii个行向量,eie^iei表示ImI_mIm的第iii行,定义S=[ei1;⋯;eik],1≤i1<i2<⋯<ik≤nS = [e^{i_1};\cdots;e^{i_k}],1 \le i_1 < i_2 < \cdots < i_k \le nS=[ei1;;eik],1i1<i2<<ikn,那分号表示换行:
[ei1;⋯;eik]=[(ei1)′,⋯,(eik)′]′[e^{i_1};\cdots;e^{i_k}] = [(e^{i_1})',\cdots,(e^{i_k})']'[ei1;;eik]=[(ei1),,(eik)]
它是一个列选择矩阵,可以选出AAA的第i1,⋯,iki_1,\cdots,i_ki1,,ik行,
SA=[ai1;ai2;⋯;aik]∈Fk×nSA = [a^{i_1};a^{i_2};\cdots;a^{i_k}] \in F^{k \times n}SA=[ai1;ai2;;aik]Fk×n

要选择AAA的第i,ji,ji,j个元素是比较容易的,
eiAej=ajie^iAe_j = a^i_jeiAej=aji
根据这个性质也可以定义选择AAA的某个子矩阵的方法。

交换矩阵

对于矩阵A∈Fm×nA \in F^{m \times n}AFm×n
vec(A)=[a1;⋯;an]∈Fmn×1,vec(A′)=[a1,⋯,am]′∈Fmn×1vec(A) = [a_1;\cdots;a_n] \in F^{mn\times 1},\ vec(A') = [a^1,\cdots,a^m]' \in F^{mn \times 1}vec(A)=[a1;;an]Fmn×1, vec(A)=[a1,,am]Fmn×1

如果∃Kmn∈Fmn×mn,Kmnvec(A)=vec(A′)\exists K_{mn} \in F^{mn \times mn},K_{mn}vec(A) = vec(A')KmnFmn×mn,Kmnvec(A)=vec(A),则称KmnK_{mn}Kmn是交换矩阵。根据定义我们会发现交换矩阵有如下简单性质:

  • KnmKmnvec(A)=vec(A)K_{nm}K_{mn}vec(A) = vec(A)KnmKmnvec(A)=vec(A)
  • Knm=Kmn′=Kmn−1K_{nm} = K_{mn}' = K_{mn}^{-1}Knm=Kmn=Kmn1
  • K1n=Kn1=InK_{1n} = K_{n1} = I_nK1n=Kn1=In
  • 证明 想必大家对交换矩阵会感觉很陌生,但它在矩阵求导的时候会发挥很强大的功能,性质3非常直观,这里就不谈了,我把性质1和2都简单证明评述一下:
    性质1:根据定义计算左边的式子
    KnmKmnvec(A)=Knmvec(A′)=vec((A′)′)=vec(A)K_{nm}K_{mn}vec(A) = K_{nm}vec(A') = vec((A')') = vec(A)KnmKmnvec(A)=Knmvec(A)=vec((A))=vec(A)
    性质2:事实上交换矩阵的指标对应的是矩阵AAA的维数,KmnK_{mn}Kmn表示它交换的是Fm×nF^{m\times n}Fm×n上的矩阵,KnmK_{nm}Knm表示它交换的是Fn×mF^{n \times m}Fn×m上的矩阵,性质2给出了这两个交换矩阵的是互为转置的关系,并指出交换矩阵是正交矩阵,先证明互为转置的关系,根据定义,
    Kmnvec(A)=vec(A′)=[devec(A)]′K_{mn}vec(A) = vec(A') = [devec(A)]'Kmnvec(A)=vec(A)=[devec(A)]

    再根据性质1,
    KnmKmnvec(A)=Knm[devec(A)]′=vec(A)⇒devec(A)Knm′=[vec(A)]′=devec(A′)K_{nm}K_{mn}vec(A) = K_{nm}[devec(A)]'=vec(A) \\ \Rightarrow devec(A)K_{nm}' = [vec(A)]' = devec(A')KnmKmnvec(A)=Knm[devec(A)]=vec(A)devec(A)Knm=[vec(A)]=devec(A)

    再对定义的两边求转置,
    [vec(A)]′Kmn′=[vec(A′)]′⇒devec(A′)Kmn′=devec(A)[vec(A)]'K_{mn}' = [vec(A')]' \Rightarrow devec(A')K_{mn}' = devec(A)[vec(A)]Kmn=[vec(A)]devec(A)Kmn=devec(A)

    比较这两个式子就可以得到Kmn′=KnmK_{mn}' = K_{nm}Kmn=Knm;接下来证明交换矩阵是正交矩阵,根据性质1和互为转置的关系,
    KnmKmnvec(A)=Kmn′Kmnvec(A)=vec(A),∀A⇒Kmn′=Kmn−1K_{nm}K_{mn}vec(A) = K_{mn}'K_{mn}vec(A) = vec(A),\forall A \Rightarrow K_{mn}' = K^{-1}_{mn}KnmKmnvec(A)=KmnKmnvec(A)=vec(A),AKmn=Kmn1

    证毕

    尽管有了交换的一个定义,但我们对交换矩阵是什么还是没有很直观的概念,下面我先举一个数值例子,先看看交换矩阵有什么用:

    交换矩阵的作用
    A=[123456789],A′=[147258369]A = \left[ \begin{matrix} 1& 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{matrix} \right],\ \ A' = \left[ \begin{matrix} 1& 4 & 7 \\ 2 & 5 & 8 \\ 3 & 6 & 9 \end{matrix} \right]A=147258369,  A=123456789
    vec(A)=[147258369],vec(A′)=[123456789]vec(A)= \left[ \begin{matrix} 1\\ 4 \\ 7 \\ 2 \\ 5 \\ 8 \\ 3 \\ 6 \\ 9 \end{matrix} \right],\ vec(A') = \left[ \begin{matrix} 1\\ 2 \\ 3 \\ 4 \\ 5 \\ 6 \\ 7 \\ 8 \\ 9 \end{matrix} \right]vec(A)=147258369, vec(A)=123456789
    交换矩阵K33K_{33}K33的作用是把vec(A)vec(A)vec(A)变成vec(A′)vec(A')vec(A)

    下一个问题是:我们能不能写出K33K_{33}K33这个矩阵长什么样子呢?或者说更一般地,我们怎么写出KmnK_{mn}Kmn这个矩阵?记ei(n)e_i(n)ei(n)表示单位矩阵InI_nIn的第iii列,ei(n)e^i(n)ei(n)表示单位矩阵InI_nIn的第iii行,则
    Kmn=[In⊗e1(m)In⊗e2(m)⋯In⊗em(m)]=[Im⊗e1(n)Im⊗e2(n)⋯Im⊗en(n)]K_{mn} = \left[ \begin{matrix} I_n \otimes e^1(m)\\ I_n \otimes e^2(m) \\ \cdots \\ I_n \otimes e^m(m) \end{matrix} \right] = \left[ \begin{matrix} I_m \otimes e_1(n)& I_m \otimes e_2(n) & \cdots & I_m \otimes e_n(n) \end{matrix} \right]Kmn=Ine1(m)Ine2(m)Inem(m)=[Ime1(n)Ime2(n)Imen(n)]
    比如在上面的例子中,我们可以写出:
    K33=[100000000000100000000000100010000000000010000000000010001000000000001000000000001]K_{33} = \left[ \begin{matrix} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \end{matrix} \right]K33=100000000000100000000000100010000000000010000000000010001000000000001000000000001
    按行来看,每一行不为0的元素正好是第1、4、7、2、5、8、3、6、9个,因此K33K_{33}K33乘以vec(A)vec(A)vec(A)时,会按顺序将vec(A)vec(A)vec(A)的第1、4、7、2、5、8、3、6、9个元素取出来排成一列。

    总结

    以上是生活随笔为你收集整理的矩阵分析与多元统计12 0-1矩阵 交换矩阵简介的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。