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]]])

これは、マトリックスを少し操作し、コンポーネントが何らかの方法で結合されたマトリックスを返します。問題は、行列 A とその要素が行列であって実数ではないことを MuPad に伝えることができないことを考えると、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