支持以整体变量形式进行符号矩阵运算的软件咨询
支持以整体变量形式进行符号矩阵运算的软件咨询
其实你之前的理解有点偏差哦——你提到的Sage、Matlab、Mathematica、SymPy这些工具,都支持把矩阵作为整体符号变量进行运算,完全不用拆解成单个元素来处理!
我给你举几个具体的例子:
SymPy:你可以用
MatrixSymbol来定义整体符号矩阵,比如:from sympy import MatrixSymbol, Identity, solve, symbols n = symbols('n', integer=True, positive=True) A = MatrixSymbol('A', n, n) B = MatrixSymbol('B', n, n) C = MatrixSymbol('C', n, n) solution = solve(A - B - C*A, A)运行后会直接得到
[Inverse(Identity(n) - C) * B],完全是整体矩阵运算的结果,还能给矩阵加假设,比如指定C是Hermitian矩阵。Mathematica:直接用符号矩阵类型定义变量,比如:
A = SymbolicMatrix["A"]; B = SymbolicMatrix["B"]; C = SymbolicMatrix["C"]; Solve[A == B + C.A, A, Assumptions -> C ∈ HermitianMatrices[]]它会返回
{{A -> Inverse[IdentityMatrix[Dimensions[A][[1]]] - C].B}},如果默认是方阵的话还会简化成你想要的A = inv(I - C) * B形式。Matlab(Symbolic Toolbox):用
syms ... matrix声明整体矩阵变量:syms A B C matrix assume(C, 'hermitian') sol = solve(A == B + C*A, A)结果会是
sol = inv(eye(size(A,1)) - C)*B,同样是整体运算的结果。Sage:通过
matrix_symbol定义整体矩阵,构建方程后求解,也能得到类似的整体逆矩阵表达式,还可以设置矩阵的属性比如Hermitian、正定等。
简单来说,这些工具都具备你需要的“把矩阵当作整体变量做符号代数”的能力,只是需要用它们对应的符号矩阵类型来定义变量,而不是普通的数值矩阵类型,这可能是之前你没注意到的点~
备注:内容来源于stack exchange,提问作者Max The Pax
相关产品推荐
相关产品推荐

