• 締切済み

Mathematicaで分母がルートにならないようにしたい

行列の演算をMathematicaで行なっています。 MatrixForm[a.b.c.d]と、4つ行列を使った演算を行なっているのですが、これの計算途中で分母がルートになってしまうことがあります。とある数学の参考書に載ってる問題を自動処理させてみようと思ったのですが、その参考書では分母が最終的にルートにならないように処理されています。分母がルートになった場合、その数を分子と分母に掛けることで分母をルート*ルートで実数にしているのです。 Mathematicaの演算で分母がルートになってしまった箇所を参考書のようなフォーマットで手動で書き直した結果、望んだ答えがでました。Mathematicaで自動で分母がルートにならないようにする方法ってありますでしょうか?これが出来ないと分子が「ルートA/ルートB*(C+・・・)」というとんでもない数字(式)になってしまいます。演算結果も、プラス記号がついたままです。 これは本件とは別なのですが、行列の演算結果を変数に入れる方法もできれば教えてください。 a=MatrixForm[A,B]; b=MatrixForm[C,D]; MatrixForm[a,b] というように演算を分けて行ないたいのですがうまくいきません。 なぜでしょうか。 よろしくお願いします。

みんなの回答

回答No.1

分母を有利化したいということですが、私はそれを知りません。それで何故有利化しないといけないんでしょうか。計算途中はどんなにしきが長くなってもマスマティカがやってくれるはずです。最終結果を見やすくするためならRootReduceとか、Simplifyを使ってある程度できます。有利化するなら分母と分子を分離して有利化するプログラムを自分で組むしかないかもしれません。 行列の掛け算をステップを分けてやりたいという事ですが、MatrixFormは使ってはいけません。mathematicaでは行列はリストとして扱われます。MatrixFormはそれをモニター上で見やすいように縦横にならべて書くというコマンドです。だからMatrixFormは必要ありませんし、行列の掛け算をしようとおもったらMatrixFormが邪魔をします。よって掛け算はそのままやればよいし、見やすくするためには最後だけMatrixFormを使って画面上に表示すればよいのです。 因みに行列の掛け算は.です a={{1,0},{1,2}} b={{1,1},{2,2}} a.bとすれば答えがでます。 見やすくするためには a.b//MatrixForm またMatrixForm[a.b]と。aやbのどの成分が行で、どれが列か分らなくなりますが、その場合には a//MatrixForm として画面で確認してください。

関連するQ&A