sympy 中的矩阵自动化以及转换为 numpy

问题描述 投票:0回答:2

所以,我试图创建一个矩阵,其中元素是定积分的答案。该矩阵中的元素 (ψ_1, ψ_2, ψ_3, ψ_4)。在矩阵中可以看到,这里ψ的下标就是矩阵元素的索引。我不知道您是否可以在不显式键入的情况下创建矩阵(例如使用 for 循环或其他东西)。这些定积分将在 sympy 中创建,然后在 numpy 中转换为数组。

我可以在 numpy 中轻松完成此操作,但积分在 numpy 中不会准确,因此我想要 sympy。我如何才能在 sympy 中做到这一点?

numpy loops for-loop matrix sympy
2个回答
1
投票

我不太确定你在问什么。假设 (ψ_1, ψ_2, ψ_3, ψ_4) 是符号表达式。为了方便起见,我将它们表示为符号:

P = Matrix(symbols("psi1:5"))
P_conj = conjugate(P)
z, V = symbols("z, V")
M = (P_conj * P.T * z).applyfunc(lambda t: Integral(t, V))
M

如果您对结果感兴趣,您应该将

Integral
替换为
integrate


0
投票

由于矩阵的元素是函数,因此您可以使用

FunctionMatrix

from sympy import symbols, FunctionMatrix, Function, Lambda, pretty
m = 3
n = 4
f = Function('f')
M = FunctionMatrix(m, n, f) # 3 by 4 matrix

print(pretty((M.as_explicit())))
# ⎡f(0, 0)  f(0, 1)  f(0, 2)  f(0, 3)⎤
# ⎢                                  ⎥
# ⎢f(1, 0)  f(1, 1)  f(1, 2)  f(1, 3)⎥
# ⎢                                  ⎥
# ⎣f(2, 0)  f(2, 1)  f(2, 2)  f(2, 3)⎦

如果您指定功能

i, j = symbols('i,j')
f = Lambda((i,j), i+j)
M = FunctionMatrix(m, n, f)

print(pretty((M.as_explicit())))
# ⎡0  1  2  3⎤
# ⎢          ⎥
# ⎢1  2  3  4⎥
# ⎢          ⎥
# ⎣2  3  4  5⎦
© www.soinside.com 2019 - 2024. All rights reserved.