首页 > 解决方案 > 如何在 Sympy 中创建下对角矩阵?

问题描述

如何pSympy中创建大小的下对角方阵?

例如,如果p == 4我想获得以下矩阵:

| 0 0 0 0 |
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 0 |

我目前正在使用这种方法,但我想知道是否有类似的功能eye(p)可以工作。

def f(i, j):
    if i - j == 1:
        return 1
    else:
        return 0


print(Matrix(p, p, f))

这是输出,如果p == 4

Matrix([[0, 0, 0, 0], [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0]])

标签: pythonmatrixsympy

解决方案


你可以借用 Numpy'snp.eye()并使用k参数,它只是“移动”对角线(并且 SymPy's 似乎不支持eye()):

import sympy as sym
import numpy as np



print(sym.Matrix(np.eye(4, k=-1, dtype=int)))
# Matrix([[0, 0, 0, 0], [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0]])

或者:

print(sym.Matrix(np.eye(4, 4, -1, dtype=int)))
# Matrix([[0, 0, 0, 0], [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0]])

推荐阅读