我正在使用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]]))返回的矩阵的第一个分量element (1,1)是A11*A21*A22,这是不正确的,是A11,A12,A21,A22矩阵!
我如何告诉MuPad A11、A12、A21和A22是矩阵,这样MuPad才能正确扩展产品?
发布于 2013-03-17 18:38:22
在MuPAD中,您可以在矩阵中包含矩阵,只要您显式地将它们放入其中。仅仅告诉系统将A1*A2视为非交换是更困难的,并且没有得到很好的支持。您可以完全创建自己的数据类型并相应地实现算术,但如果您仍然希望简化,那么这并不一定容易。
https://stackoverflow.com/questions/11464785
复制相似问题