我正在使用 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 正确扩展产品?