我想创建一个元素都是变量的矩阵,所以我尝试了以下方法
import sympy as sp
from sympy import MatrixSymbol, Matrix
A=sp.symbols('rho0:'+str(side*(side)/2))
rho = MatrixSymbol('rho', side, side)
rho[0][0]=A[0]
count=0
for i in range(side):
for j in range(i,side):
rho[i][j]=A[count]
rho[j][i]=rho[i][j]
count+=1
不过我使用的矩阵类型似乎不支持符号,我该怎么办?
2条答案
按热度按时间rkttyhzu1#
MatrixSymbol用于将抽象矩阵表示为单个实体/符号,其方式类似于Symbol用于表示标量。如果您只打算按顺序使用泛型符号,也许您可以使用
注意,一个标准的符号矩阵已经产生。
但是,由于您希望矩阵是对称的,因此必须循环返回矩阵,并像在上面的代码中尝试的那样,为矩阵下面的元素赋值。
或者,您可以通过使用正确的矩阵索引和矩阵(而不是MatrixSymbol)来修改上述操作:
qhhrdooz2#
如果你首先创建一个非对称矩阵,那么你可以用它的元素创建一个对称矩阵: