• 「循环矩阵相关的一些东西」


    大概是北大集训的某道题?我感觉挺有意思的,随便写写。

    原题需要先矩阵树定理转化成循环矩阵求行列式。我们直接跳过矩阵树 虽然我根本没想到矩阵树 考虑行列式咋求。


    首先定义 (n imes n) 的循环矩阵 (A),满足 (A_{i,j} = a_{(i-j)mod n})。下文为了方便,省去下标中的取模。

    考虑矩阵乘法 (C = AB),其中 (A, B) 都是循环矩阵,则有 (C_{i,j}=sum_{k=0}^{n-1}a_{i-k}b_{k-j})

    注意到 (C) 也为循环矩阵,对应的 (c) 可以通过 (c_{i+j} = sum a_ib_j) 算出。

    注意这里下标要取模,所以得到循环矩阵的乘法可以描述为多项式的循环卷积。


    对于两个多项式 (f(x)=a_0+a_1x+dots+a_{n-1}x^{n-1})(g(x) = b_0 + b_1x + dots + b_{n-1}x^{n-1}),循环卷积还可以用 DFT 描述。

    即:若 (h(x) = f(x)circ g(x)) 是两者循环卷积的结果,则有 (h(omega_{n}^i)=f(omega_{n}^i)g(omega_{n}^i))

    将矩阵乘法转化成 (n) 个值对应相乘,不难想到这 (n) 个值是该矩阵的特征值。事实上,循环矩阵是可对角化的:

    [X = egin{pmatrix} omega^{0 imes 0}_n & omega^{0 imes 1}_n & dots & omega^{0 imes (n-1)}_n \ omega^{1 imes 0}_n & omega^{1 imes 1}_n & dots & omega^{1 imes (n-1)}_n \ vdots & vdots & ddots & vdots \ omega^{(n-1) imes 0}_n & omega^{(n-1) imes 1}_n & dots & omega^{(n-1) imes (n-1)}_n \ end{pmatrix} \ D = egin{pmatrix} f(omega^0_n) & 0 & dots & 0 \ 0 & f(omega^1_n) & dots & 0 \ vdots & vdots & ddots & vdots \ 0 & 0 & dots & f(omega^{n-1}_n) \ end{pmatrix} \ A = XDX^{-1} ]

    知道所有特征值后,行列式 (det A = prod lambda_i = prod f(omega_n^i))。还可以验算矩阵的迹 (mathrm{tr} A = sum f(omega_n^i) = n imes a_0)


    solution 给的做法本质上就是这个。

    现场好像说还可以用结式解释,但是我不会。那就先留个坑。

  • 相关阅读:
    SWT DragSource 和 DropTarget 托拉拽
    Java的反射机制
    1. 算法导论
    SWT对于监听Tab键的理解
    SWT基础
    socket
    TCP/IP
    RPC(远程过程调用协议)
    Jython基本知识
    #与##
  • 原文地址:https://www.cnblogs.com/Tiw-Air-OAO/p/14128248.html
Copyright © 2020-2023  润新知