给定一个随机矩阵(任意大小!),编写一个函数来确定该矩阵是否为 Toeplitz 矩阵。在线性代数中,托普利茨矩阵是这样一种矩阵,其中从左上角到右下角的任何给定对角线上的元素都是相同的。
这是一个例子:
x <- structure(c(1, 5, 4, 7, 2, 1, 5, 4, 3, 2, 1, 5, 4, 3, 2, 1, 8,
4, 3, 2), .Dim = 4:5)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 8
[2,] 5 1 2 3 4
[3,] 4 5 1 2 3
[4,] 7 4 5 1 2
所以我们的函数应该接收这样的矩阵并在满足条件时返回 TRUE。
要测试该功能,可以使用stats::toeplitz()
生成托普利兹矩阵。例如,我们函数的预期输出应该是:
> toeplitz_detector(stats::toeplitz(sample(5, 5)))
> [1] TRUE