Location : Home > Languages > Perl > Package Title : Math::Calculus::Differentiate - Algebraic Differentiation Engine |
![]() |
Math::Calculus::Differentiate - 代数微分エンジン
use Math::Calculus::Differentiate; # オブジェクトの生成 my $exp = Math::Calculus::Differentiate->new; # 変数と式の設定 $exp->addVariable('x'); $exp->setExpression('x^2 + 5*x') or die $exp->getError; # 微分と簡素化 $exp->differentiate or die $exp->getError;; $exp->simplify or die $exp->getError;; # 結果の出力 print $exp->getExpression; # 2*x + 5 を出力
本モジュールは代数式を引数としてとり、ツリー構造にパースし、微分された関数の表現のツリーを与え、ツリーを簡素化し出力として式表現で返す。
+, -, *, / , ^ (べき)演算子及び括弧を含む式の微分をサポートし、ln, exp, sin, cos, tan, sec, cosec, cot, sinh, cosh, tanh, sech, cosech, coth, asin, acos, atan, asinh, acosh, atanh への優先順を保ちながら微分を行う。
デフォルトではなし
new
$exp = Math::Calculus::Differentiate->new;
個々の式を保持する微分エンジンの新規インスタンスを生成する。
addVariable
$exp->addVariable('x');
式中のある文字を微分対象の変数として設定する。これはアルファベット文字でなければならない。
setExpression
$exp->setExpression('x^2 + 5*x);
人間に可読な式を引数としてとり、内部的にはツリー構造として格納し、プロセス内で理解可能な妥当な形式であることを確認する。エンジンは構文に関して厳密であることに留意せよ。例えば 5*x と書くべきで 5x とだけ書いてはならない。式内の空白は許容され、以降の処理に影響を与えない。
優先順位を制御したければ括弧を用いるとよい。括弧内の処理は最初に評価される。モジュールは BODMAS 優先順位に従う。失敗時には undef を返し、成功時には true を返す。
getExpression
$expr = $exp->getExpression;
格納している式の textaul、人間に可読な表現を返す。
differentiate
$exp->differentiate('x');
パラメータとして渡された変数に関して setExpression で格納された式を微分する。失敗時には undef を返し、成功時には true を返す。
simplify
$exp->simplify;
内部格納されている式を簡素化する。最もコンパクトな形式にできるので微分後に呼び出すのはよいアイデアであり、このことで getExpression からの出力の可読性を高め、高次の微分をさらに行う際にパフォーマンスの向上にも貢献する。失敗時には undef を返し、成功時には true を返す。
getTraceback
$exp->getTraceback;
setExpression 及び differentiate が呼び出されたとき、traceback はこれらの関数が何を行ったかを記述する。エラーが発生した場合にはこの traceback はエラーの原因を特定するために極めて有用である。
getError
$exp->getError;
getTraceback 以外のメソッドが呼び出された場合格納されているエラーメッセージがクリアされ、メソッド実行中のエラーが記録される。エラー発生時には本メソッドを呼び出し、エラーの人間に可読な表現を取得する。
本モジュールの著者はウェブサイト http://www.jwcs.net/~jonathan/ を持っており、ここではモジュールに関する最新ニュースとウェブベースでモジュールの稼動を確かめるフロントエンドがある。
Jonathan Worthington, <jonathan@jwcs.net>
Copyright (C) 2004 by Jonathan Worthington
本ライブラリはフリーソフトウェアであり、 Perl 本体と同等の条件で修正/再配布することができる。Perl は バージョン 5.8.1 またはユーザの選択でPerl 5 のそれ以降のバージョンで利用可能である。
![]() |
Updated : 2007/03/06 |