関数f(x)だけで使うニュートン法の求根計算機
導関数を中央差分で安全に近似し、関数f(x)と初期値からNewton反復の近似根、更新量、残差を表示します。
計算結果
- f(x)だけのNewton法の反復結果
-
計算すると数値表を表示します。
f(x)だけのNewton法の反復結果。反復番号、近似値x、直前更新の絶対量、関数値f(x)を最大100行で表示します。 反復番号 近似値 x 更新量 |Δx| 関数値 f(x)
使い方
- 関数f(x)を安全な式記法で入力し、定義域と求めたい実根の位置を先に確認します。
- 初期値x0を指定し、必要な導関数式がf(x)と一致するか確認します。
- 1e-15〜1の許容値と1〜100回の反復上限を設定して計算します。
- 反復表のx、更新量、f(x)を確認し、別条件・別方式・元の式への代入で検算します。
計算式・考え方
h=ε^(1/3)max(1,|x|)、d≈(f(x+h)−f(x−h))/(2h)、x_next=x−f(x)/dで更新します。
注意事項
- このページはf(x)だけを入力するNewton法です。各反復で導関数を解析式として要求せず、h=ε^(1/3)×max(1,|x|)を使う中央差分[f(x+h)−f(x−h)]/(2h)で傾きを推定し、x_next=x−f(x)/f'(x)を計算します。εはbinary64の機械イプシロンです。差分近似を使うため、厳密な導関数を用いるNewton法と同じ二次収束を自動的に主張しません。
- 中央差分は前進差分より打切り誤差を抑えやすい一方、hが小さすぎると二つの関数値の差が丸めで消え、大きすぎると局所の傾きを表しません。本実装はxのスケールからhを決め、x±hが許可範囲を外れる場合、両関数値が同じになった場合、推定傾きが非有限または小さすぎる場合に停止します。片側差分へ黙って切り替えないため、結果の意味が途中で変わりません。
- 一回のNewton更新には現在点に加えて左右の差分点を評価するため、明示導関数版より関数評価回数が多くなります。高価な関数、雑音を含む測定モデル、floorやabsの折れ点、非常に細かい振動では差分傾きが不安定です。導関数が用意できるなら明示導関数版と比較し、区間が分かるなら二分法で根の近くまで絞ってから初期値を選んでください。
- Newton法は区間を保持しないため、初期値から1,000,000を超える更新、非有限値、以前の反復値へのcycle、同一点への停滞、100回以内の未収束をエラーにします。エラーは根が存在しない証明ではなく、その初期値と差分条件から安全に続行できなかったという意味です。初期値を変えると別の根へ収束したり、発散が収束へ変わったりします。
- この求根計算機が探すのは、実数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の有限反復による近似です。収束表示は根の存在・一意性・正しい桁数を保証しません。
よくある質問
f(x)だけのNewton法で値が出れば根は一意ですか?
いいえ。数値反復が停止条件を満たしたことを示すだけで、根の存在や一意性の証明ではありません。複数根、極、不連続点、入力した導関数の誤りを確認し、別区間・別初期値・別方式でも検算してください。
許容値を1e-15にすれば15桁正しいですか?
保証されません。binary64の丸め、式の条件数、相殺、導関数の大きさが精度を制限します。更新量と残差を両方見て、許容値を変えた再計算や高精度計算との比較で有効桁を評価してください。
計算に失敗したら根が存在しないという意味ですか?
違います。その区間または初期値、導関数、binary64、反復上限では安全に収束を確認できなかったという意味です。定義域を確認し、区間を狭める、初期値を変える、別方式へ切り替える順で原因を分けてください。
関数式、区間、初期値、導関数、許容値、反復表はブラウザ内だけで処理され、サーバーや外部APIへ送信・保存されません。