Go to the first, previous, next, last section, table of contents.


根の探索(Root Finding)

a R (calc-find-root) [root] コマンドは、 方程式の数値解(または )を求めます。 (このコマンドは、不等式も方程式同様に扱います。 入力がそれ以外の式であれば、X = 0 形式の方程式に解釈されます。)

この a R コマンドは、初期推定値をスタック top に、 2番目に式を要求します。 このコマンドはプロンプトを出して、解くべき変数の指定を求めます。 その変数は式中に登場していなければなりません。 式中に登場するそれ以外の変数群は、すべて値が与えられていなければなりません。 言換えれば、あとは解変数に値を与えさえすれば、 = コマンドで式が数値に評価できる、という状態です。 解変数自体に割付けられた値はこのコマンドに無視され、影響しません。

コマンドが計算を完了すると、 スタック上の初期推定値が2つの数値からなるベクトルに置き換わります。 2つの値のひとつは方程式の数値解であり、もうひとつは方程式の両辺の差分です。 通常、2番目の値はゼロかほとんどゼロに近い値になります。 (注意: Calc は少し高めの計算精度で根を探索します。 それで、2番目の値はユーザー自身が検算した値と若干異なる場合があります。)

v h (calc-head) コマンドは、 結果のベクトルから第1要素を抽出して誤差項を捨てる、便利な方法です。

初期推定値として実数を与えると Calc はその近傍の実数から根を探索し、 複素数を与えると近傍の複素平面から探します。 あるいは区間型式を与えて捜索範囲をその区間内の実数に制限することもできます。

Calc は a d を使って方程式の微分をとることを試みます。 これが成功すると、根の探索にニュートン法を使います。 微分不可能であれば、Calc は二分法を使います。 (ニュートン法が発散するようなら、Calc は二分法への切換えを試み、 それもダメならギブアップします。 この場合、初期推定値を少し変えて再試行するとうまく行く場合があります。) 初期推定値が複素数の場合、関数は微分可能でなければなりません。

式(あるいは方程式両辺の差分)の値が、 指定区間の一方の端で負でもう一方の端で正ならば、 根探索エンジンは必ず根を発見します。 そうでなければ、Calc はさらに区間を細分して、 根の両側で正負になる区間を探します。 初期推定値が区間の場合、Calc はその区間外は見ません。

H a R [wroot] コマンドは a R に似ていますが、 初期推定区間の両端で関数が同じ符号の場合に異なる挙動を示し、 区間を細分化するよりむしろ拡大して根を囲もうとします。 区間内での根の存在が確実でないなら、 このモードを使ってください。

もし関数が微分不可能で、かつ初期推定として区間でなく単に数値を与えるなら、 ハイパボリック・フラグをタイプしなくとも Calc はこの拡張プロセスを使います。 (関数が微分可能な場合、 Calc はニュートン法を使うので境界区間を必要としません。)

スタック上に rootwroot のシンボルが残る場合、 Calc は根が見つけられなかった理由を通常は表示します。 この説明を見逃したら、w (calc-why) を押せば取返せます。


Go to the first, previous, next, last section, table of contents.     利用度数