所以,我试图创建一个矩阵,其中元素是定积分的答案。该矩阵中的元素 (ψ_1, ψ_2, ψ_3, ψ_4)。在矩阵中可以看到,这里ψ的下标就是矩阵元素的索引。我不知道您是否可以在不显式键入的情况下创建矩阵(例如使用 for 循环或其他东西)。这些定积分将在 sympy 中创建,然后在 numpy 中转换为数组。
我可以在 numpy 中轻松完成此操作,但积分在 numpy 中不会准确,因此我想要 sympy。我如何才能在 sympy 中做到这一点?
我不太确定你在问什么。假设 (ψ_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
。
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⎦