Matlab MuPad:处理矩阵表达式时无法使用符号扩展

Matlab MuPad:处理矩阵表达式时无法使用符号扩展,matlab,symbolic-math,Matlab,Symbolic Math,我使用MuPad是为了有一个符号工具来寻找方程的解。但我在研究矩阵 考虑这一点: blck := A -> matrix([ [A[1..linalg::matdim(A)[1]/2,1..linalg::matdim(a)[2]/2], A[1..linalg::matdim(A)[1]/2,linalg::matdim(A)[2]/2+1..linalg::matdim(A)[2]]], [A[linalg::matdim(A)[1]/2+1..linalg::matdim(A)[1]

我使用MuPad是为了有一个符号工具来寻找方程的解。但我在研究矩阵

考虑这一点:

blck := A -> matrix([
[A[1..linalg::matdim(A)[1]/2,1..linalg::matdim(a)[2]/2],
A[1..linalg::matdim(A)[1]/2,linalg::matdim(A)[2]/2+1..linalg::matdim(A)[2]]],
[A[linalg::matdim(A)[1]/2+1..linalg::matdim(A)[1],1..linalg::matdim(A)[2]/2],
A[linalg::matdim(A)[1]/2+1..linalg::matdim(A)[1],linalg::matdim(A)[2]/2+1..linalg::matdim(A)[2]]]
])
此函数使我能够拥有矩阵的块表示,并且它可以工作。现在考虑这个函数

myfun := A -> matrix([[blck(A)[1,1]*blck(A)[2,2]*blck(A)[2,1],blck(A)[1,1]],
[blck(A)[1,1],blck(A)[1,1]]])
这将稍微操纵一个矩阵,并返回以某种方式组合其组件的矩阵。问题是,考虑到我不能告诉MuPad矩阵A及其组件是矩阵而不是实矩阵,MuPad会以不同的顺序向我显示矩阵乘积

比如说。考虑

myfun(matrix([[A11,A12],[A21,A22]]))
返回矩阵的第一个组成部分元素(1,1)是A11*A21*A22,这是不正确的A11、A12、A21、A22矩阵


我如何告诉MuPad A11、A12、A21和A22是矩阵,以便MuPad正确地展开产品

您可以在MuPAD中的矩阵中包含矩阵,只要您明确地将它们放在那里。仅仅告诉系统将A1*A2视为非交换的更难,也没有得到很好的支持。您可以进行全面开发,创建自己的数据类型并相应地实现算法,但如果您仍然希望简化,那么这并不一定容易