【问题标题】:How can I create a lower diagonal matrix in Sympy?如何在 Sympy 中创建下对角矩阵?
【发布时间】:2020-08-17 09:15:21
【问题描述】:

如何在 Sympy 中创建大小为 p 的下对角方阵?

比如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]])

【问题讨论】:

    标签: python matrix sympy


    【解决方案1】:

    你可以借用 Numpy 的 np.eye() 并使用 k 参数,它只是“移动”对角线(而且 SymPy 的 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]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      相关资源
      最近更新 更多