Mathematica 製品
-----
 /
Mathematica
*密な線形代数の高速処理
*疎な線形代数の高速処理
*大規模線形系
*大きな数の演算
*64ビットのプラットフォームのサポート
*スピードアップしたMathLink
*微分方程式の数値解法
*数値方程式の解法
*データのフィット
*数値最適化
*DSolve
*RSolve
*Reduce
*Resolve
*FindInstance
*記号的大域的最適化
*領域指定の幅広いサポート
*接続テクノロジー
*インポートとエキスポート
*統計のプロット
*評価中の式の累積
*新しい線形代数関数
<代数的数オブジェクト
*著作と発表
*新機能の一覧
*このページについてのお問い合せ

代数的数オブジェクト

Wolfram Mathematica 6の新機能をご覧ください

Mathematica 5では,指定された代数的数体内で,代数的数の高性能計算が実行できます.Mathematica はバージョン3以来,代数的数をRootオブジェクトとして表現してきました.Rootオブジェクトには,代数的数と根の番号(Rootオブジェクトが最小多項式のどの根を表しているかを示す整数)の最小多項式が含まれます.これにより,任意の複素数の代数的数を一意に表すことができるのです.

しかし,このような表現で演算操作を実行することはコストが高いという欠点があります.もし,固定された実数の有限次代数拡大Q(Theta)内での計算に限定すると,Q(Theta)の元の表現により便利な方法,つまりThetaの多項式を使うことができます.固定された代数的数体内では,Algebraicオブジェクト表現で代数的数の演算をした方が,Rootオブジェクト表現で行うよりも格段に速く実行できます.Mathematica 5には,代数的数体に関連した広範に渡る機能が備わっており,パッケージNumberTheory`AlgebraicNumberFields`で利用することができます.

詳細 戻る進む

以下の代数的数

{x, y, z} = {i, 2^(1/2), Root[#1^3 - 2 #1 + 3 &, 1]} ;

があり,(-2 y z (7 + x - y + z^2) + (6 + x^2 + 2 y) (-11 + x y + z^2))/(2 y z (-4 - x + 3 y z) - (6 + x^2 + 2 y) (2 - 2 x + z^3))の値を計算するとします.

RootReduceを使って値を直接計算すると,長時間かかります.

Timing[RootReduce[(-2 y z (7 + x - y + z^2) + (6 + x^2 + 2 y) (-11 + x y + z^2))/(2 y z (-4 - x + 3 y z) - (6 + x^2 + 2 y) (2 - 2 x + z^3))] ;]

{93.865 Second, Null}

これよりも速く実行するには,まず{a, b, c}を含む共通の代数的数体を見付けます.これにはほんの一瞬しかかかりません.

Timing[({x, y, z} = ToCommonField[{x, y, z}]) ;]

{0.11 Second, Null}

共通の数体内での計算の方が格段に速く終ります.

Timing[(-2 y z (7 + x - y + z^2) + (6 + x^2 + 2 y) (-11 + x y + z^2))/(2 y z (-4 - x + 3 y z) - (6 + x^2 + 2 y) (2 - 2 x + z^3)) ;]

{0.11 Second, Null}


関連リンク


「組込み関数」からのドキュメント   「組込み関数」からのドキュメント
AlgebraicNumberFields
Algebraics
Root



トップへ 戻る進む



 © 2008 Wolfram Research, Inc.  Terms of Use  Privacy Policy | [en]