Maxima メモ
Maxima のバグっぽいの見つけた。しかもかなり重大。
(%i1) m:matrix([2,7],[0,7]);
![]()
(%i2) r:matrix([1,1],[0,5/7]);
![]()
というふうに行列を定義しておいて、その積を計算すると、
(%i3) m.r;
![]()
と正しく計算するんだけど、その後でベクトル解析用のパッケージをロードして、
(%i4) load("vect");
![]()
もう一度、まったく同じ計算をすると、
(%i5) m.r;
![]()
なぜか全然違う結果になる(^^)。
マニュアルを見ると、一応、
Warning: the
vectpackage declares the dot operator.to be a commutative operator.警告:vect パッケージは、ドット演算子を可換演算子として宣言し直します。
と書いてはあるんだけど、でも、転置行列で計算したって 14 なんて要素は出てこないよなあ。。。(^^)
このパッケージをロードしないと、外積やベクトル積の演算子が使えないのでちょっと困るんだけど、線形代数パッケージとコンフリクトしちゃうのかなあ。よくわかりませんね(^^)。バグレポート出した方がいいのかな。
あ、わかった。じゃなくて可換演算子だからと思って左右ひっくり返して掛けちゃうのか。こりゃ困ったね(^^)。
とすると、これは一応バグじゃなくて仕様なのかもしれないけど、ベクトル解析パッケージをロードしたら、事実上、線形代数の計算はできないってことだよなあ。。。そんな仕様でいいんか(^^)。
あと、こんな現象も見つけた。
r の逆行列を計算すると、ベクトル解析パッケージをロードする前は、
(%i3) invert(r);
![]()
(%i4) r^^-1;
![]()
このように正しく計算するのに、ベクトル解析パッケージをロードすると、
(%i6) invert(r);
![]()
このようにエラーになってしまう。なぜか、
(%i7) r^^-1;
![]()
こっちはそのまま正しく計算できるのも不思議(^^)。
| 固定リンク
トラックバック
この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67762/42018860
この記事へのトラックバック一覧です: Maxima メモ:
