Toeplitz 矩阵

                     

贡献者: 零穹

预备知识 矩阵及其运算

   Toeplitz 矩阵是这样的矩阵,处于位置 $(i,j)$ 的矩阵元和 $(i+1,j+1)$ 的矩阵元具有相同值,直观上相当于 “从左上到右下的 $45^\circ$ 斜线上” 的矩阵元具有相同值。因此,只要给出矩阵第一列和第一行的元素,其它元则根据 “斜线” 规则确定。

定义 1 Toeplitz 矩阵

   设 $A$ 是 $m\times n$ 的矩阵,若对任意 $i\in m,j\in n$,矩阵元 $a_{ij}=a_{i+1,j+1}$ 恒成立,则称 $A$ 为Toeplitz 矩阵

定理 1 

   若 $A$ 是 $m\times n$ 的 Toeplitz 矩阵,其元记作 $a_{ij}$。则

\begin{equation} a_{ij}=\left\{\begin{aligned} &a_{1,j-i+1},\\ &a_{i-j+1,1}. \end{aligned}\right.~ \end{equation}

   证明:由 Toeplitz 矩阵定义 1 ,可知:若 $i\leq j$,则

\begin{equation} a_{ij}=a_{i-1,j-1}=\cdots=a_{i-(i-1),j-(i-1)}=a_{1,j-i+1}.~ \end{equation}
而若 $i\geq j$,同理有 $a_{ij}=a_{i-j+1,1}$。

   证毕!

   若把行指标当 $x$ 轴,列指标当 $y$ 轴,原点取作 $(1,1)$ 构建的平面坐标系。则 Toeplitz 矩阵是说坐标位于过点 $(1,i)$ 或 $(i,1)$ 的斜率为 $-45^\circ$ 的直线上的矩阵元,取相同值。这些线就是开头提到的 “从左上到右下的 $45^\circ$ 斜线”。

例 1 

   矩阵

\begin{equation} (1), \begin{aligned} \left( \begin{array}{cc} 1 & 3 \\ 2 & 1 \\ 3 & 2 \\ \end{array}\right) \end{aligned}, \left( \begin{array}{ccccc} 4 & \frac{1}{2} & 3 & 4 & 5 \\ 0 & 4 & \frac{1}{2} & 3 & 4 \\ -3 & 0 & 4 & \frac{1}{2} & 3 \\ 4 & -3 & 0 & 4 & \frac{1}{2} \\ \end{array} \right).~ \end{equation}
都是 Toeplitz 矩阵的例子。

1. Mathematica 实操

   Mathematica 软件提供了构建 Toeplitz 矩阵的基本函数,其语法为 ToeplitzMatrix[a,b],其中 $a$ 告诉 Mathematica 矩阵的第一列元素,$b$ 则是第一行元素。例如下面的例子给出了例 1 中的第二个矩阵。

代码 1:Mathematica 构造 Toeplitz 矩阵
ToeplitzMatrix[{1, 2, 3}, {1, 3}]
当然,有了 Toeplitz 矩阵的定义,和定理 1 ,我们完全可以自己写出构造 Toeplitz 矩阵的代码。这可以通过 For 循环嵌套 For 循环实现。
代码 2:Mathematica 自写 Toeplitz 矩阵代码
(*l,r分别代表第一列和第一行*)
Tope[l_, r_] := 
  Module[{ll = Length[l], lr = Length[r]},
  (*若第一列和第一行元素不同,则打印警告,并取第一个元素为第一行的第一个元素*)
    If[l[[1]] != r[[1]], Print["Warning:the column element ",
        l[[1]] , " and row element ", 
        r[[1]], " at positions 1 and 1
        are not the same. Using row element."], {}
      ];
   (*构建矩阵A,使得第一列为l,第一行为r*)
    A = Table[0, {i, 1, ll}, {j, 1, lr}];
    (*利用定理1构造矩阵其它元素*)
    A[[All, 1]] = l; A[[1]] = r;
    For[i = 2, i <= ll, {
        For[j = 2, j <= lr,
            {If[j > i, A[[i, j]] = A[[1, j - i + 1]], 
            A[[i, j]] = A[[i - j + 1, 1]]]; j++ } 
           ];
         i++}
        ];
    A
    ]
执行 Tope[{1,2,3},{1,3}],将给出自带函数 TopelitzMatrix 相同的效果,即式 3 中的第二个矩阵。

图
图 1:结果展示

                     

© 小时科技 保留一切权利