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

时间:2012-07-13 05:41:53

标签: 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],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能正确扩展产品?

1 个答案:

答案 0 :(得分:1)

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