方程式の解を見つけるためのシンボリック ツールを使用するために、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]]])
これは、マトリックスを少し操作し、コンポーネントが何らかの方法で結合されたマトリックスを返します。問題は、行列 A とその要素が行列であって実数ではないことを MuPad に伝えることができないことを考えると、MuPad が行列の積を異なる順序で表示してしまうことです。
例えば。検討
myfun(matrix([[A11,A12],[A21,A22]]))
返された行列の最初のコンポーネントである要素 (1,1) は A11*A21*A22 であり、これは A11,A12,A21,A22 行列ではありません!
MuPad が積を正しく展開できるように、A11、A12、A21、および A22 が行列であることを MuPad に伝えるにはどうすればよいですか?