はさみうち法(regula falsi)で根を求める計算機

はさみうち法(regula falsi)で根を求める計算機

関数f(x)と異符号の端点を入力し、古典的なはさみうち法の割線候補、更新量、残差を反復表で確認します。

入力

変数xと許可済みの実数演算・関数だけを使います。

bと異なる有限値。端点根またはf(a)とf(b)の符号変化が必要です。

aと異なる有限値。a>bの逆向き区間も検証して処理します。

1e-15〜1。更新量と初期残差に対する残差低下を同時に判定します。

1〜100回。未収束のまま上限へ達した場合は結果を成功扱いしません。

使い方

  1. 関数f(x)を安全な式記法で入力し、定義域と求めたい実根の位置を先に確認します。
  2. 異なる端点a、bを指定し、端点根または関数値の符号変化を確認します。
  3. 1e-15〜1の許容値と1〜100回の反復上限を設定して計算します。
  4. 反復表のx、更新量、f(x)を確認し、別条件・別方式・元の式への代入で検算します。

計算式・考え方

x=a+f(a)/(f(a)−f(b))×(b−a)を評価し、fの符号変化を含む側の端点だけを更新します。

注意事項

  • はさみうち法(regula falsi、偽位置法)は、異符号の端点を結ぶ割線とx軸の交点x=a+f(a)/(f(a)−f(b))×(b−a)を次の候補にします。候補の関数値を評価し、符号変化を含む側だけを残すため、二分法と同じく区間条件を保持します。関数がほぼ直線なら中点固定の二分法より少ない反復で進むことがあります。
  • 古典的なはさみうち法では、関数値の大きさが左右で著しく違うと一方の端点が長く固定され、候補が同じ側へ少しずつ寄るだけになることがあります。本ページは方式名を変えず古典式を実装し、Illinois法などの加速変形へ暗黙に置き換えません。反復値がbinary64で端点や直前値と同じになり、残差条件を満たさない場合は停滞として明示的に拒否します。
  • 表の最初のabsolute-stepは比較対象となる前回候補がないため初期区間幅を表示し、2行目以降は候補xの直前行からの絶対変化を表示します。小さいstepだけでは固定端点による停滞を収束とみなさず、初期端点残差を基準にf(x)も十分低下したときだけ成功します。端点に厳密な根があれば反復0の一行で返します。
  • はさみうち法も連続性が前提です。極をまたぐ符号変化、floorの跳躍、tanの極は根の存在条件になりません。また偶数重根は通常符号が変わらないため区間を作れません。進みが遅いときは区間を狭める、二分法で堅実に絞る、Illinois変形やBrent法を備えた検証済みライブラリを別途使う、といった切替を検討してください。
  • この求根計算機が探すのは、実数xについてf(x)=0を満たす数値です。表示した近似値は入力した式、区間または初期値、許容値、反復上限に依存します。同じ式に複数の零点があるとき、別の区間や初期値から同じ零点へ到達する保証はありません。反復表には反復番号、近似値x、直前更新の絶対量、f(x)を並べ、最終値だけでなく収束過程を確認できるようにしています。
  • 収束判定は厳密なf(x)=0を除き、xの更新量と初期残差に対する相対的な残差低下を同時に要求します。小さいf(x)だけで成功とすると、根を持たない微小定数関数を誤って根と扱います。更新量だけで成功とすると、不連続点や極へ近づいただけの列を根と誤認します。二条件は誤判定を減らす安全策ですが、根の存在、一意性、連続性を数学的に証明するものではありません。
  • 関数式は変数x、定数pi・π・e、四則演算、べき乗、丸括弧、abs、sqrt、exp、ln、log、log10、三角関数、逆三角関数、双曲線関数、floor、ceilだけを有界パーサーで処理します。evalやnew Functionを使わず、200文字、128トークン、32段までに制限します。代入、配列、プロパティ参照、セミコロン、未知の名前、スクリプト断片は受理しません。
  • 各関数評価と反復値はIEEE 754 binary64の有限値でなければなりません。xの絶対値は1,000,000以下、許容値は1e-15以上1以下、反復は最大100回・表は最大100行です。0除算、対数や平方根の実数定義域外、指数のオーバーフロー、非有限な更新、範囲外へのジャンプが起きたときは、値を丸めて続行せず失敗理由を表示します。
  • 不連続関数では端点の符号が違っても、その間に零点があるとは限りません。例えば極をまたぐ1/(x-c)は左右で符号が変わりますがf(x)=0を満たしません。floorやtanのような跳躍・極を含む式も同様です。結果を採用する前にグラフ、定義域、連続性を確認し、既知の不連続点で区間を分け、最終xを元の式へ独立に代入してください。
  • 多重根ではf(x)がx軸へ接して符号が変わらないことがあり、区間法は端点が厳密な根でない限り開始できません。Newton法やHalley法は開始できても、導関数が小さくなって理論上の収束次数より遅くなる場合があります。逆に単純根の近くでも導関数、2階導関数、初期値の組み合わせが悪いと、大きな更新、往復cycle、停滞、別の根への収束が起こります。
  • 許容値を小さくするほど正しい桁数が単調に増えるとは限りません。binary64では約16桁の精度しかなく、式の相殺、条件数、導関数の大きさ、関数値のスケールによって有効桁が失われます。表のabsolute-stepとfunction-valueを両方確認し、許容値を変えた再計算、別方式、任意精度ライブラリ、解析解との比較を使って必要な精度を判断してください。
  • 既定例f(x)=x−cos(x)は単純な実根を一つ持ち、近似値は0.7390851332151607です。区間法では−10と10、開放型の方法では初期値1を使います。この値はアルゴリズムの基本検算には便利ですが、任意の入力で同じ反復回数や安定性が得られることを意味しません。式を変更したら定義域、根の個数、導関数、初期条件を改めて確認してください。
  • 計算、関数式の構文解析、最大100回の反復、表描画、TSVコピーはすべて利用者のブラウザ内で完結します。入力した式、区間、初期値、導関数、許容値、結果をサーバーや外部APIへ送信・保存しません。外部CDNや実行時fetchにも依存せず、サーバー側で求根処理を行わないため、サイト側の負荷を抑え、利用者端末の有限なCPUとメモリだけを使います。
  • 反復式、停止条件、区間法と開放型手法の注意点は2026年7月13日にNIST Digital Library of Mathematical Functions §3.8の非線形方程式の記述と、SciPy optimizeの公開API説明を照合しました。実装は高精度mpmathの独立解、端点根、逆向き区間、多重根、微小導関数、非区間、極、cycle、式注入拒否、PythonとJavaScriptの一致で検証します。本ページは教育・一般的な数値試算向けで、証明付き解や安全判断の保証ではありません。
  • binary64の有限反復による近似です。収束表示は根の存在・一意性・正しい桁数を保証しません。

よくある質問

はさみうち法の求根計算で値が出れば根は一意ですか?

いいえ。数値反復が停止条件を満たしたことを示すだけで、根の存在や一意性の証明ではありません。複数根、極、不連続点、入力した導関数の誤りを確認し、別区間・別初期値・別方式でも検算してください。

許容値を1e-15にすれば15桁正しいですか?

保証されません。binary64の丸め、式の条件数、相殺、導関数の大きさが精度を制限します。更新量と残差を両方見て、許容値を変えた再計算や高精度計算との比較で有効桁を評価してください。

計算に失敗したら根が存在しないという意味ですか?

違います。その区間または初期値、導関数、binary64、反復上限では安全に収束を確認できなかったという意味です。定義域を確認し、区間を狭める、初期値を変える、別方式へ切り替える順で原因を分けてください。

関数式、区間、初期値、導関数、許容値、反復表はブラウザ内だけで処理され、サーバーや外部APIへ送信・保存されません。