Maple の数値計算
|
このドキュメントでは、Maple の数値計算環境について説明します。以下のトピックごとに解説します。
|
|
Mapl における数値計算環境の目的
|
|
|
Maple の数値計算環境は、以下の目標を達成するために設計されたものです。
|
|
2. 各種の数値計算間で整合性を保つ (ハードウェア、ソフトウェア、厳密)
|
|
4. Numerical Algorithms Group (NAG) のルーチンの統合化
|
|
浮動小数点演算の IEEE/754 および IEEE/854 の規格では、Maple のような 任意精度の計算環境に自然な一般化を行います。このような自然な一般化を適用することにより、Maple はハードウェア計算 (固定精度)、ソフトウェア計算 (任意精度)、および厳密な数値計算の各環境で均一な表示を提供します。これに加え、コンピューター業界で IEEE/754 は広く採用されており、今では IEEE/754 に明確に準拠しているマシン上でのみ Maple がサポートされるまでになっています。
|
|
Maple の浮動小数点計算環境には、以下の機能を含む、IEEE/754 基準とは異なる点があります。
|
|
3. 平方根は基本演算とはみなされず、負の引数に対する 無効 の指示はしません。
|
|
4. RealToComplex イベントは、real (実数) 入力を受け取って結果を complex (複素数) で返す演算処理を含みます。
|
|
|
数値形式
|
|
|
Maple の数値計算環境では、以下の数値形式をサポートします。各形式には当該の コンストラクタ 関数と 型検証 関数があります。詳細については、constructor と type-checking の各ヘルプページを参照してください。
|
|
ソフトウェア の浮動小数点 (sfloat 型) および一般の浮動小数点 (float 型) は、同じオブジェクトとみなされます。
|
|
Maple ハードウェアの浮動小数点 は、rtables (Maple V Release 5 および 5.1 では、ハードウェア浮動小数点要素を持つ rtables は hfarrays でした) として評価器 evalhf 内部にのみ存在できます。rtables にハードウェア浮動小数点エントリを持つ特殊な Matrix および Vector では、NAG ライブラリルーチンを呼び出す線形代数計算を行う方法が一般的です。この方法は、記号計算分野で実施される同様の計算でかなり高い効率性が得られます (UseHardwareFloats も参照してください)。
|
|
上記の任意の形式における数値オブジェクトが式での構造単位です。つまり、これらは map() から見た 最小単位 です。これらのオブジェクト (分子、分母、符号、仮数、指数、実数部、虚数部) の演算コンポーネントを抽出するために標準関数が与えられます。セクション 関数と述語 を参照してください。
|
|
|
特殊値
|
|
|
上記のセクションで示した各種の数値形式では、次の特殊記号を使用します。
|
•
|
無限 (+infinity と -infinity の両方)
|
•
|
未定義 (IEEE/754 NaN ("Not a Number"「数でない」) を表す)
|
|
両方の無限性と少なくとも 1 つの未定義が、それぞれの数値形式で表現されます (前セクションに一覧した当該コンストラクタに関するヘルプページを参照してください)。これらの特殊記号の詳細については、無限 および 未定義 の各ヘルプページを参照してください。
|
|
|
環境変数
|
|
|
数値環境での演算を制御する環境変数は 4 種類あります。環境変数の機能の詳細については、それぞれのヘルプページを参照してください。
|
|
|
演算方式
|
|
|
標準的な演算で、加算、減算、乗算、ゼロ以外の数値の除算、整数の指数計算などを行います。
|
|
複雑な演算は標準の公式に従って実装され、現在の数値環境で表現可能な計算結果の場合、正しく丸められて無限に精密な結果が生成されます。さらに、少なくとも 1 つのオペランドが複素数の場合は、演算処理の結果すべての複素数オペランドが純粋に虚数でない限り、演算結果は実数になります (この場合は Maple の結果は実数です (Complex(1)^2 = Integer(-1)など))。
|
|
注意: 実数の複素共役は、虚数部 0 を持つ複素数ではなく、その実数です。
|
|
少なくとも 1 つのオペランドが 無限、0 または 未定義 で、例外が提示されていない場合、実数のオペランドに対する累乗以外の演算処理におけるデフォルト結果には、次の規則が指定されます (イベント、例外、状態フラグを参照してください)。 この規則は順番にチェックされます。x は先の規則に含まれていない複素数以外の値を表し、sgn(x) は記号 x を意味します。
|
|
1. 任意の基本演算は、いずれかのオペランドが未定義の場合、未定義の結果が返されます (通常、いずれかの入力が未定義の場合)。
|
|
2. ()
|
|
3. ()
|
|
4.
|
|
5. 丸めモードが Round toward -infinity に設定されている場合を除き、結果は丸めモードにかかわらず -0; になります。
|
|
6.
|
|
7.
|
|
8.
|
|
複素数演算の規則は、これに相当する実数演算の規則から継承されます。このような規則に含まれるのは、無限、未定義、0 に対する演算の規則ですが、例外は、ある演算のオペランドが 2 つの引数を取る複素数値で、そのうち確実に 1 つのコンポーネントが 0 の場合です (つまり、+0.0 か -0.0)。このような場合は、0 コンポーネントによって 量的情報ではなく質的情報が提供されると解釈する必要があります。とりわけ、このような 0 コンポーネントを無限小の値と解釈するべきではありません。この場合の演算では、関連するオペランドが演算上等価の純粋な虚数値と置き換えられた場合と質的に同じ結果が生成されます。現実には、通常の演算規則に従って符号情報が取得され、0 コンポーネント、undefined または infinity の積は 0 になります。
|
|
たとえば、 とした場合、次のようになります。
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
となります。これは、それぞれの結果における虚数部によっては z が分岐の場合とそうでない場合があるためです。
|
|
*
|
|
*
|
|
*
|
|
*
|
|
0 に等価の任意の実数または複素数と任意の無限との積の場合、次のように標準の規則が適用されます。
|
|
*
|
|
*
|
|
*
|
|
複素数のいずれかの要素が無限の場合、数値計算の便宜上、この数字は無限とみなされます。
|
|
*
|
|
*
|
|
|
イベント、例外、状態フラグ
|
|
|
Maple は例外イベントを処理するための直接的なサポートを提供します。環境変数 NumericEventHandlers は、有効な数値イベントハンドラプロシージャを保持します。イベントと状態フラグの詳細については、以下の各種ヘルプページを参照してください。
|
|
|
型検証機能
|
|
|
Maple の数値計算環境には型検証機能があります。
|
|
注意: IEEE/754 では 述部 (IsFinite(expr) など) を使用することから演算の失敗が許容されます (符号 Invalid) が Maple では通常 types (type(expr, finite) など) を使用し、true を返すことができないときは false を返す必要があります。
|
|
|
関数と述部
|
|
|
Maple の数値演算環境には、以下の関数と述部が用意されています。これらは IEEE/754 Standard を拡張した関数と述部です。特定の関数または述部の詳細については、当該ヘルプページを参照してください。
|
|
|
入力と出力の書式設定
|
|
|
Maple でサポートする数値形式は、さまざまな種類の書式で設定することができます。数値の入力および出力の書式設定の詳細については、ヘルプページの printf と scanf を参照してください。
|
|
|
参考資料
|
|
|
Maple 数値計算環境の開発に利用されている IEEE 規格および他の参考資料の詳細については、numericrefs のヘルプページを参照してください。
|
|
|
Download Help Document
Was this information helpful?