1

私は、行列の積と反転への記号解と展開を見つけることに関心があります。実は、自分で定義したいものです。私は自分自身を説明します。

B4MAT要素が 4 つの正方形の半サイズの行列である正方行列を表す、呼び出す「数学」オブジェクトを作成したいと考えています。そのため、2 つの間の積を定義して、積のルールを適用することによってコンポーネントが計算されるB4MAT別の積を返す必要B4MATがありますが、スカラーではなくマトリックス間です。

さらに、これは非常に重要なポイントです。行列のブロック単位の反転を考えてみましょう。リンクのブロック単位の反転アルゴリズムを使用して要素が計算されB4MATた別の a を返す操作としてa の反転を定義したいと思います。B4MAT

マキシマでこれを達成する方法は?

ありがとうございました

4

1 に答える 1

0

質問の前半では、matrix_element_mult非可換乗算に変更してから、要素が必要なブロックである行列を使用するだけです。例えば:

Maxima branch_5_27_base_248_ge261c5e http://maxima.sourceforge.net
using Lisp SBCL 1.0.57.0.debian
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1) A: matrix([1,2],[3,4])$ B: matrix([2,1],[3,4])$

(%i3) matrix([A,B], [B,A]);
*** output flushed ***
(%i4) C: matrix([A,B], [B,A]);
                            [ [ 1  2 ]  [ 2  1 ] ]
                            [ [      ]  [      ] ]
                            [ [ 3  4 ]  [ 3  4 ] ]
(%o4)                       [                    ]
                            [ [ 2  1 ]  [ 1  2 ] ]
                            [ [      ]  [      ] ]
                            [ [ 3  4 ]  [ 3  4 ] ]
(%i5) C . C;
                          [ [ 5   5  ]  [ 4   4  ] ]
                          [ [        ]  [        ] ]
                          [ [ 18  32 ]  [ 18  32 ] ]
(%o5)                     [                        ]
                          [ [ 4   4  ]  [ 5   5  ] ]
                          [ [        ]  [        ] ]
                          [ [ 18  32 ]  [ 18  32 ] ]
(%i6) matrix_element_mult: ".";
(%o6)                                  .
(%i7) C . C;
                          [ [ 14  16 ]  [ 13  17 ] ]
                          [ [        ]  [        ] ]
                          [ [ 33  41 ]  [ 33  41 ] ]
(%o7)                     [                        ]
                          [ [ 13  17 ]  [ 14  16 ] ]
                          [ [        ]  [        ] ]
                          [ [ 33  41 ]  [ 33  41 ] ]

ただし、反転式を自分でコーディングする必要があると思います(「C [1] [2]」(右上隅)などの式でブロックを取得できることを忘れないでください.

于 2012-08-22T08:35:32.477 に答える