Halley法(ハーレイ法)で方程式の根を求める計算機

Halley法(ハーレイ法)で方程式の根を求める計算機

f(x)、1階・2階導関数、初期値を入力し、Halley法の高次更新と残差を有限な最大100行の表で確認します。

入力

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

f(x)の1階導関数を同じ安全な式記法で入力します。

f(x)の2階導関数を同じ安全な式記法で入力します。

絶対値1,000,000以下。初期値によって到達する根や成否が変わります。

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

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

使い方

  1. 関数f(x)を安全な式記法で入力し、定義域と求めたい実根の位置を先に確認します。
  2. 初期値x0を指定し、必要な導関数式がf(x)と一致するか確認します。
  3. 1e-15〜1の許容値と1〜100回の反復上限を設定して計算します。
  4. 反復表のx、更新量、f(x)を確認し、別条件・別方式・元の式への代入で検算します。

計算式・考え方

x_next=x−2f(x)f'(x)/(2(f'(x))²−f(x)f''(x))で更新し、小さい分母や非有限項では停止します。

注意事項

  • Halley法はf(x)、f'(x)、f''(x)を使い、x_next=x−2f f'/(2(f')²−f f'')で更新します。単純根の十分近くで各導関数が正しければ三次収束が期待でき、既定のx−cos(x)ではNewton法より少ない反復になる場合があります。ただし一回ごとに三つの式を評価するため、導関数の作成・評価コストと高次収束の利点を合わせて判断してください。
  • 本実装は各反復で分子2f f'、分母2(f')²−f f''をbinary64で構成し、途中項を含めすべて有限か確認します。分母は二つの項の大きさに対して64ε以下なら相殺または零に近いと判断して停止します。分母が小さいと更新が範囲外へ飛びやすく、無理に小さな値へ置換して続けると別のアルゴリズムになるためです。
  • f'とf''は利用者が入力した式をそのまま使い、記号微分による整合性確認はしません。既定例ではf'=1+sin(x)、f''=cos(x)です。2階導関数の符号を誤るだけでも更新式は変わります。最初の数行をNewton法と比較し、各行のxを使って手計算または別実装でHalley式を再構成すると、式入力ミスの発見に役立ちます。
  • 多重根、微小導関数、大きな曲率、複数根の境界では三次収束にならず、Newton法より不安定になる場合があります。本ページは以前のxへ戻るcycle、同一点停滞、非有限更新、|x|上限超過、最大100回未収束を拒否します。失敗したら初期値を根に近づける、二分法で区間を絞る、導関数式を確認する、明示Newton法へ切り替える順で原因を分けてください。
  • この求根計算機が探すのは、実数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の有限反復による近似です。収束表示は根の存在・一意性・正しい桁数を保証しません。

よくある質問

Halley法の求根計算で値が出れば根は一意ですか?

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

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

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

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

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

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