« ベジエ曲線を整数の加減算だけで描画する方法 | トップページ | HSB の色調整を LUT だけで処理する方法 »

Maxima メモ

 Maxima のバグっぽいの見つけた。しかもかなり重大。

(%i1) m:matrix([2,7],[0,7]); 

 untitled_0.png

(%i2) r:matrix([1,1],[0,5/7]); 

 untitled_1.png

というふうに行列を定義しておいて、その積を計算すると、

(%i3) m.r; 

 untitled_2.png

と正しく計算するんだけど、その後でベクトル解析用のパッケージをロードして、

(%i4) load("vect"); 

 untitled_3.png

もう一度、まったく同じ計算をすると、

(%i5) m.r; 

 untitled_4.png

なぜか全然違う結果になる(^^)。

 マニュアルを見ると、一応、

Warning: the vect package declares the dot operator . to be a commutative operator.

警告:vect パッケージは、ドット演算子を可換演算子として宣言し直します。

と書いてはあるんだけど、でも、転置行列で計算したって 14 なんて要素は出てこないよなあ。。。(^^)

 このパッケージをロードしないと、外積やベクトル積の演算子が使えないのでちょっと困るんだけど、線形代数パッケージとコンフリクトしちゃうのかなあ。よくわかりませんね(^^)。バグレポート出した方がいいのかな。

 あ、わかった。じゃなくて可換演算子だからと思って左右ひっくり返して掛けちゃうのか。こりゃ困ったね(^^)。

 とすると、これは一応バグじゃなくて仕様なのかもしれないけど、ベクトル解析パッケージをロードしたら、事実上、線形代数の計算はできないってことだよなあ。。。そんな仕様でいいんか(^^)。

 あと、こんな現象も見つけた。

 r の逆行列を計算すると、ベクトル解析パッケージをロードする前は、

(%i3) invert(r); 

 untitled_2.png

(%i4) r^^-1; 

 untitled_3.png

このように正しく計算するのに、ベクトル解析パッケージをロードすると、

(%i6) invert(r); 

untitled_5.png

このようにエラーになってしまう。なぜか、

(%i7) r^^-1; 

untitled_6.png

こっちはそのまま正しく計算できるのも不思議(^^)。

|

« ベジエ曲線を整数の加減算だけで描画する方法 | トップページ | HSB の色調整を LUT だけで処理する方法 »

パソコン・インターネット」カテゴリの記事

数学」カテゴリの記事

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67762/42018860

この記事へのトラックバック一覧です: Maxima メモ:

« ベジエ曲線を整数の加減算だけで描画する方法 | トップページ | HSB の色調整を LUT だけで処理する方法 »