贡献者: 零穹
Toeplitz 矩阵是这样的矩阵,处于位置 $(i,j)$ 的矩阵元和 $(i+1,j+1)$ 的矩阵元具有相同值,直观上相当于 “从左上到右下的 $45^\circ$ 斜线上” 的矩阵元具有相同值。因此,只要给出矩阵第一列和第一行的元素,其它元则根据 “斜线” 规则确定。
证明:由 Toeplitz 矩阵定义 1 ,可知:若 $i\leq j$,则
证毕!
若把行指标当 $x$ 轴,列指标当 $y$ 轴,原点取作 $(1,1)$ 构建的平面坐标系。则 Toeplitz 矩阵是说坐标位于过点 $(1,i)$ 或 $(i,1)$ 的斜率为 $-45^\circ$ 的直线上的矩阵元,取相同值。这些线就是开头提到的 “从左上到右下的 $45^\circ$ 斜线”。
Mathematica 软件提供了构建 Toeplitz 矩阵的基本函数,其语法为 ToeplitzMatrix[a,b],其中 $a$ 告诉 Mathematica 矩阵的第一列元素,$b$ 则是第一行元素。例如下面的例子给出了例 1 中的第二个矩阵。
ToeplitzMatrix[{1, 2, 3}, {1, 3}]
当然,有了 Toeplitz 矩阵的定义,和定理 1 ,我们完全可以自己写出构造 Toeplitz 矩阵的代码。这可以通过 For 循环嵌套 For 循环实现。
(*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 中的第二个矩阵。