Location : Home > Languages > Perl > Package
Title : Math::Symbolic::Custom::ErrorPropagation
Toolbox Logo

名称

 Math::Symbolic::Custom::ErrorPropagation - ガウス誤差伝播を計算


概要

use Math::Symbolic qw/parse_from_string/;
use Math::Symbolic::Custom::ErrorPropagation;

# 力=質量×加速度
my $force = parse_from_string('m*a');

# 加速度及び質量の計測には統計的な誤差がつきがちである。(ここから分散が発生する)
# 従って力の分散は以下のようになる
my $variance = $force->apply_error_propagation('a', 'm');

print $variance;

# 出力:
# (
#   ((sigma_a ^ 2) * ((partial_derivative(m * a, a)) ^ 2)) +
#   ((sigma_m ^ 2) * ((partial_derivative(m * a, m)) ^ 2))
# ) ^ 0.5

説明

 本モジュールは、それ自身分散を持つ変数の関数の、誤差が伝播した値を計算する機能を提供することで Math::Symbolic の機能を拡張する。
 このモジュールは全ての Math::Symbolic オブジェクトに以下のモジュールを追加する。

$ms_tree->apply_error_propagation( [list of variable names] )

 本メソッドは Math::Symbolic ツリー自身を変更するのではなく、変数名のリスト形式における本メソッドへの引数として渡される変数依存性に従って計算し結果を返す。
 分散は Math::Symbolic ツリー自身として返す。無相関の分散に対しガウス誤差伝播公式(the Gaussian error propagation formula)を用いて計算される。

variance( f(x_1, x_2, ..., x_n ) ) =
  sqrt(
    sum_over_i=1_to_n(
      variance(x_i)^2 * (df/dx_i)^2
    )
  )

 上式では微分は偏微分であり、成分分散 variance(x_i) は結果式における "sigma_x_i" として表現される。("x_i" は変数名で置き換えられる。)
 使用例については概要を参照のこと。


著者

 フィードバック・バグ報告・サポート要請は貢献者のうちの1人または Math::Symbolic メーリングリストに送ってほしい。

貢献者のリスト:
 Steffen Muler, symbolic-module at steffen-mueller dot net


参考資料

 本モジュールの新バージョンは http://steffen-mueller.net または CPAN で入手可能である。

 Math::Symbolic
 Math::Symbolic::Custom
 Math::Symbolic::Custom::Base

Toolbox Logo
Updated : 2006/07/24