7

我需要创建完全符号矩阵,是否有现成的函数sympy

例如,如果我要手动创建一个 2x2 矩阵,我会这样做

from sympy import *

a00, a01, a10, a11 = symbols('a00 a01 a10 a11')
A = Matrix([[a00, a01],[a10, a11]])

问题是我在模拟之前不知道尺寸并且当尺寸变高时手动创建每个符号会很快变旧。理想情况下,我希望能够使用A=Matrix(10,10)withA[0,0]=Symbol('A00')等创建一个 10x10 矩阵。

此外,如果上述情况可行,那么能够批量替换也非常好。例如,我想要类似的东西some_equation.subs([(A,numpy.random.rand(2,2))])

4

2 回答 2

5

您可以使用subs方法进行替换。

In [5]: A = MatrixSymbol('A', 2, 2)

In [6]: B = MatrixSymbol('B', 2, 2)

In [7]: C = A*B

In [8]: C.subs({A: Matrix([[0, 1], [1, 0]]), B: Matrix([[2, 3], [4, 5]])})
Out[8]: 
Matrix([
[0, 1],
[1, 0]])*Matrix([
[2, 3],
[4, 5]])

可能您的MatrixSymbol对象需要符号维度。

于 2015-10-07T12:11:31.247 回答
1

我想您可能一直在尝试使矩阵的所有元素都成为单独的符号?这是我试图制作一个大小为“states x states”的数组 rho 的东西:

rho = np.array([[Symbol("rho{}{}".format(i,j)) for j in range(len(states))] for i in range(len(states))])
于 2020-07-10T04:05:57.583 回答