はさみうち法とは
はさみうち法(ラテン語で regula falsi、「線形補間法」とも呼ばれます)は、\(f(x) = 0\) の解を求める区間縮小型の数値計算法です。二分法と同じく、関数の符号が変わる初期区間\([a, b]\)が必要で、\(f(a)\cdot f(b) \le 0\) が成り立てば a と b の間に必ず解(根)が存在します。二分法のように区間をいつも半分にするのではなく、両端の2点を直線で結び、その直線が x 軸と交わる点を次の近似値とするため、一般に二分法より速く収束します。
この計算機の使い方
関数 \(f(x)\) は標準的な記法で入力します。演算子は + - * / ^、括弧のほか、sin, cos, tan, exp, log, ln, sqrt, abs, cbrt などの関数が使えます。\(f(a)\) と \(f(b)\) の符号が逆になるように、下限 a と上限 b を設定してください。さらに最大反復回数と表示する有効桁数を指定します。計算結果には、近似解 \(x\)、実行された反復回数、そして 0 にきわめて近い値になるはずの残差 \(f(x)\) が表示されます。
計算式の解説
各ステップでは、区間の両端点を通る割線(直線)と x 軸との交点を次の近似値とします。
$$x_n = \frac{a_n\cdot f(b_n) - b_n\cdot f(a_n)}{f(b_n) - f(a_n)}$$
\(f(x_n)\) が \(f(a_n)\) と同符号なら a を \(x_n\) に置き換え、そうでなければ b を置き換えます。こうして符号の変化、つまり区間に挟み込んだ解を保ち続けます。反復は \(|f(x_n)|\) が許容誤差(およそ 1e-12)を下回るか、反復回数の上限に達した時点で停止します。
計算例
\(f(x) = x - \cos(x)\) を区間 \([-10, 10]\) で考えます。\(f(-10) \approx -10.839\)(負)、\(f(10) \approx 10.839\)(正)なので、この区間は解を挟み込んでいます。はさみうち法を適用すると \(x \approx 0.7390851332\) に収束し、ここで \(f(x) \approx 0\) となります。この値は余弦関数のよく知られた不動点です。
よくある質問
なぜ \(f(a)\cdot f(b) \le 0\) でなければならないの? 符号が変化していれば、連続関数は区間内のどこかで必ず 0 を横切ります。これが成り立たないと、そもそも求めるべき解が区間内にない可能性があり、ツールは警告を表示します。
収束が遅くなることがあるのはなぜ? 曲率の大きい関数では、片方の端点が動かないまま固定されてしまい、収束が遅い線形収束になることがあります。これははさみうち法の典型的な挙動であり、反復回数に上限を設けているのもそのためです。
分母が 0 になったらどうなるの? \(f(b)\) と \(f(a)\) が等しい場合、割線は水平になり、x 軸との交点が一意に定まりません。このとき計算機は 0 で割らずにエラーを表示します。