Location : Home > Languages > Perl > Package Title :Math::SymbolicX::Error |
![]() |
Math::SymbolicX::Error - 数値誤差の処理
use Math::Symbolic qw/parse_from_string/; use Math::SymbolicX::Error; # Number::WithError のインライン宣言 my $formula = parse_from_string('3 * error(3 +/- 0.2)^2 + error(1 +/- 0.1)'); # '2.80e+01 +/- 3.6e+00' を出力 print $formula->value(); # Math::BigFloat を利用して高精度の計算 my $high_precision = parse_from_string('3 * error_big(3e-12 +/- 0.2e-12'); # '9.00e-12 +/- 6.0e-13' を出力 print $high_precision->value();
本モジュールは Math::Symbolic パーサに対し数値誤差(または不確実性)を追加サポートする。これは Number::WithError オブジェクトとして定数を生成する特別な機能を持った Math::Symbolic モジュール(すなわち $Math::Symbolic::Parser に格納される)のパーサ文法の拡張となっている。with certain special functions that create constants as (Math::Symbolic::Variable オブジェクトはまさに最初からオブジェクトを含むことができる。)
Math::Symbolic::Parser によりパースされた文字列内の全ての定数は、デフォルトでは通常の Perl スカラーにおける定数に関連した値を保持する Math::Symbolic::Constant オブジェクトに変換される。
残念でだがこれは実数の浮動小数点に限られている。
一方、ある誤差を含んで誤差伝播を計算しなければならない場合がある。Math::SymbolicX::Error はこのような問題に対応できる。Math::Symbolic::Constant オブジェクトはいかなるオブジェクトも保持できるので、定数の値を Perl の巣からではなく Math::Complex オブジェクトを用いてツリーを構成することもできる。しかし Math::Symbolic::Parser は Math::Symbolic と比べてはるかに有用であるので、パーサに Number::WithError サポートを導入する簡易な方法として用いるべきであろう。
In order to numeric constants with errors inパーサから得られる Math::Symbolic ツリーにおける誤差を含んだ数値定数を利用するために、本拡張モジュールを呼び出し、誤差を含む定数を処理する以下で挙げる関数をラップする。
前述の関数ろは error() 及び error_big() である。
error() は error() 関数が見つかったパースツリー上の位置において Math::Symbolic ツリーに挿入する Number::WithError オブジェクトへの引数を返す。
同様に error_big() は Math::BigFloat サポート下で Number::WithError オブジェクトを生成する。すなわち任意の精度に対応できる。
Copyright (C) 2006 Steffen Mueller
本ライブラリはフリーソフトウェアであり、Perl 本体等同等の条件で修正/再配布してもよい。
symbolic-module at steffen-mueller dot net で著者にコンタクトをとることができる。
フィードバック・バグ報告・サポート要請は Math::Symbolic サポートメーリングリスト:math-symbolic-support at lists dot sourceforge dot net に。その際には Math::Symbolic をどのように利用しているからを教えてほしい。
本モジュールの開発または機能拡張に興味を持ったのなら開発者メーリングリスト: math-symbolic-develop at lists dot sourceforge dot net にコンタクトを取ってほしい。
本モジュールの最新バージョンは http://steffen-mueller.net または CPAN で入手可能である。
$formula->value() 呼び出しから返されるオブジェクトは Number::WithError オブジェクトであるので、本モジュールを利用する前に Number::WithError に慣れておくべきである。
Math::Symbolic 及び Math::Symbolic::Parser も参照のこと。
実装の詳細についてはMath::SymbolicX::ParserExtensionFactory を参照のこと。
他の大数または複素数を含むパーサ拡張としては以下を見よ。:Math::SymbolicX::BigNum, Math::SymbolicX::Complex
![]() |
Updated : 2006/10/11 |