0

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

4

1 回答 1

1

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

于 2013-03-17T10:38:21.807 回答