Location : Home > Languages > Perl > Package
Title :Math::SymbolicX::Error
Toolbox Logo

名称

 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

Toolbox Logo
Updated : 2006/10/11