トップ 一覧 検索 ヘルプ RSS ログイン

tips-maxima-matrixの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!! MAXIMA を使って、行列の計算をする
*Tips-maxima 
! 行列をつくる
  行列に名前をつける. さて、matrix だけを使っても色々な行列の計算を maxima にさせることは可
 能なのですが、計算のたびに一々成分を入力するのでは全く疲れてしまいます。そこで、一度入力した行列
 に適当な名前を付けて、名前で色々な操作ができれば便利です。maxima で、何かの対象に名前を付ける
 は記号 : を使います。例を見てみましょう。
 (%i3) A : matrix([1,2,3],[4,5,6],[7,8,9]);
                                  [ 1  2  3 ]
                                  [         ]
 (%o3)                            [ 4  5  6 ]
                                  [         ]
                                  [ 7  8  9 ]
 
 (%i4) B : matrix([a,b,c,d],[e,f,g,h]);
                                [ a  b  c  d ]
 (%o4)                          [            ]
                                [ e  f  g  h ]

 これで、A, B といった名前で行列を使うことができるようになりました。この A や B を変数と言います。

!足し算
 (%i3) A : matrix([1,2],[3,4]);
                                   [ 1  2 ]
 (%o3)                             [      ]
                                   [ 3  4 ]
 (%i4) B : matrix([a,b],[c,d]);
                                   [ a  b ]
 (%o4)                             [      ]
                                   [ c  d ]
 (%i5) C : A + B ;
                               [ a + 1  b + 2 ]
 (%o5)                         [              ]
                               [ c + 3  d + 4 ]

! かけ算(スカラー)
 (%i6) C : A . B ;
                           [  2 c + a    2 d + b  ]
 (%o6)                     [                      ]
                           [ 4 c + 3 a  4 d + 3 b ]
! かけ算 ( 逓倍 )
 (%i8) A * B ;
                                 [  a   2 b ]
 (%o8)                           [          ]
                                 [ 3 c  4 d ]

! 逆行列
 (%i9) AI : invert ( A );
                                 [ - 2   1  ]
                                 [          ]
 (%o9)                           [  3     1 ]
                                 [  -   - - ]
                                 [  2     2 ]
 (%i10) A . AI ;
                                   [ 1  0 ]
 (%o10)                            [      ]
                                   [ 0  1 ]


! maxima で行列を
行列を作成
 A:matrix([f,0,Cu],[0,f,Cv],[0,0,1]);
 Rt:matrix([r11,r12,r13,t1],[r21,r22,r23,t2],[r31,r32,r33,t3]);
 Xw:matrix([xw],[yw],[zw],[1]);
!積をとる
 (%i4) A.Rt.Xw;
 (%o4) matrix([Cu (r33 zw + r32 yw + r31 xw + t3) + f (r13 zw + r12 yw + r11 xw + t1)], 
 [Cv (r33 zw + r32 yw + r31 xw + t3) + f (r23 zw + r22 yw + r21 xw + t2)], 
 [r33 zw + r32 yw + r31 xw + t3])
 (%i5)

 行列のコピー     copymatrix(A) 
 転地行列         transpose(A)
 係数行列         coefmatrix([式リスト],[変数リスト])
 拡大係数行列     augcoefmatrix([式リスト],[変数リスト])
 行列の階数       rank(A)
 逆行列           invert(A)
 対角行列         diagmatrix(階数,要素)
 単位行列         ident
 行列生成         genmatrix(関数またはラムダ式,i,j)
 階段行列         echelon(A)
 余因子行列       adjoint(A)