MCPで接続 →

計算を入力してください

Choose a and b so that f(a) and f(b) have opposite signs (f(a)·f(b) ≤ 0).

公式

広告

結果

Approximate root x where f(x) ≈ 0
0.7390851332149927
はさみうち法(regula falsi)
解 x 0.7390851332149927
反復回数 10
解での f(x) の値 -0.000000000000281108

はさみうち法とは

はさみうち法(ラテン語で regula falsi、「線形補間法」とも呼ばれます)は、\(f(x) = 0\) の解を求める区間縮小型の数値計算法です。二分法と同じく、関数の符号が変わる初期区間\([a, b]\)が必要で、\(f(a)\cdot f(b) \le 0\) が成り立てば a と b の間に必ず解(根)が存在します。二分法のように区間をいつも半分にするのではなく、両端の2点を直線で結び、その直線が x 軸と交わる点を次の近似値とするため、一般に二分法より速く収束します。

x 軸と交わる曲線 f(x) と、区間の両端を結ぶ割線
挟み撃ち法では両端を直線で結び、その 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 で割らずにエラーを表示します。

最終更新: