方程式の数値解法 — 二分法とNewton法の保証
根を挟む二分法と接線を使うNewton法を具体計算で比較し、収束条件、停止判定、残差と誤差の違いを学びます。
- 連続性と符号変化から根の存在を確認し、二分法の誤差上界を計算できる
- 接線の式からNewton法を導き、局所的な二次収束の条件を説明できる
- 残差と真の誤差を区別し、導関数の下界から誤差を保証できる
- 初期値や重根による失敗を見分け、保証を意識した停止判定を選べる
📑 目次
1.近似値を出すことと精度を保証すること
実数方程式 f(x)=0 の解を根と呼び、その一つを α とします。式で解けない場合も、反復計算で近似値を求められます。ただし「数字が変わらなくなった」だけでは根に近い保証にはなりません。このレッスンの変数と数値は無次元です。物理量を扱う場合、x の誤差と f(x) の残差は一般に単位も異なります。理論上は正確な実数演算を仮定し、小数表示は明記した桁への近似です。
2.二分法:根を挟む区間を縮める
f が閉区間 [a₀,b₀] で連続で、両端の値が異符号なら、中間値の定理により内部に少なくとも一つ根があります。中点の値が 0 なら終了し、そうでなければ両端が異符号になる側の半区間を残します。この操作で連続性と符号変化が保たれ、区間幅は毎回半分になります。単調性がなければ、最初の区間内の根が一つとは限りません。
ここでは n を「区間を半分に更新した回数」と数えます。c₀ は最初の区間の中点です。無限に反復する場合、入れ子の区間は一つの点 α に縮み、連続性から f(α)=0 となります。上式は各段階の中点とその根の距離の上界です。誤差上界は一次的に減少しますが、実際の誤差が毎回ちょうど半分になるという意味ではありません。
f(x)=x²−2 とし、初期区間を [1,2] とする。3回区間を更新し、その中点と誤差上界を求める。
解答・解説
f(1)=−1、f(2)=2。c₀=1.5 で f(c₀)=0.25 なので [1,1.5]。c₁=1.25 で −0.4375 なので [1.25,1.5]。c₂=1.375 で −0.109375 なので [1.375,1.5]。3回更新後の中点は c₃=1.4375。幅は 0.125 なので誤差は 0.0625 以下。確認用の √2≈1.4142135624 との差は約 0.0232864376 で、上界以内です。
初期区間 [1,2] の二分法で、中点の誤差を 10⁻⁴ 以下と保証するには最低何回の区間更新が必要か。根を途中で厳密に得て終了する場合は除く。
解答・解説
1/2^(n+1) ≤ 10⁻⁴ を満たす最小の非負整数 n を選びます。n=12 では 1/8192≈0.0001220703 で不足し、n=13 では 1/16384≈0.0000610352 なので、13回の更新で保証できます。これは実際の誤差が必ず13回目まで大きいという主張ではなく、区間幅だけを使う最悪時の保証です。
3.Newton法:接線の零点を次の近似にする
🔍 反復式の導出
- 現在の点で接線近似する
微分可能な点の近くでの一次近似です。曲線と接線が全域で一致するわけではありません。
- 接線の高さを0にする
接線の零点を次の候補とします。
- 導関数が0でないときに解く
f′(xₙ)=0 ではこの式を使えません。非常に小さい導関数でも更新幅が過大になり得ます。
f(x)=x²−2、x₀=1 として x₃ まで計算する。
解答・解説
f′(x)=2x なので xₙ₊₁=(xₙ+2/xₙ)/2。x₁=3/2=1.5、x₂=17/12≈1.4166666667、x₃=577/408≈1.4142156863。x₃ の残差は x₃²−2=1/166464≈0.0000060073、真の誤差は約 0.0000021239 です。x₁以降は √2 以上で減少し、下に有界です。その極限を反復式に代入すると正の根 √2 になります。
4.二次収束は局所的な保証
根 α の近傍で f が2回連続微分可能で、f′(α)≠0(単根)とします。初期値が十分近ければNewton法は定義でき、その近傍にとどまり収束します。近傍内で |f′|≥m>0、|f″|≤M と評価できるとき、Taylorの定理から次の誤差評価が得られます。「十分近い」という条件を外して、任意の初期値での収束を結論することはできません。
誤差が小さい領域で、次の誤差が現在の誤差の二乗で抑えられることを二次収束と呼びます。Taylor展開を xₙ から α へ行い、f(α)=0 とNewtonの更新式を使うとこの不等式が導けます。M=0 の一次関数なら通常1回で根に達します。浮動小数点計算では丸め誤差の限界に達すると、理論どおりに桁数が増え続けるわけではありません。
① f(x)=x³−2x+2、x₀=0 の反復を2回求める。② f(x)=(x−1)² についてNewton法の誤差の減り方を求める。
解答・解説
① f(0)=2、f′(0)=−2 なので x₁=1。f(1)=1、f′(1)=1 なので x₂=0。以後 0 と1を往復し、根には収束しません。② xₙ≠1 のとき xₙ₊₁=xₙ−(xₙ−1)/2=(xₙ+1)/2。誤差は eₙ₊₁=eₙ/2 で一次収束です。根1では f′(1)=0 なので単根に対する二次収束の条件が成立しません。根に達したら更新前に終了します。
5.残差と誤差を混同しない
近似値 x̃ に対する残差は f(x̃)、絶対誤差は |x̃−α| です。残差は計算できますが、誤差は未知の根を含みます。微分可能な区間が x̃ と対象の根 α を含み、その区間全体で |f′|≥m>0 が保証されれば、平均値の定理が両者を結びます。
f(x)=10⁻⁶(x−1) とし、近似値 x̃=2 を調べる。
解答・解説
真の根は1、残差は10⁻⁶ですが、絶対誤差は1です。導関数の下界 m=10⁻⁶ で割ると誤差上界は1となり、矛盾しません。同じ根をもつ g(x)=x−1 の残差は1です。関数全体を定数倍するだけで残差は変わるため、残差の数値だけでは精度を比較できません。
例題3では x₃ と √2 がともに [1,2] にあり、この区間で f′(x)=2x≥2 です。したがって誤差は残差の半分、1/332928≈0.0000030037 以下と保証できます。真の根の小数値を知らなくても使える評価です。重根の近傍では導関数の正の下界が得られないため、この評価を機械的に適用できません。
6.計算の停止と方法の選択
- 二分法では、区間半幅が目標の絶対誤差以下になった時点で中点を返す。保証された区間を併記すると意味が明確になる。
- Newton法では残差、更新幅、導関数、反復回数の上限を確認する。更新幅が小さいだけでは停止精度の保証にはならず、残差から誤差を保証するには導関数の下界などが必要。
- 連続性と符号変化を確認した区間を保持し、Newton候補が区間外に出る場合や導関数が小さい場合は二分法へ戻す方法もある。区間の縮小が不十分な場合も二分法を選べば、速さと保証を両立しやすい。
- 実装では非有限値や丸めによる停滞も検知する。厳密な数値保証が必要なら、関数評価の丸め誤差も区間演算などで管理し、計算機上の符号を無条件に真の符号と見なさない。
f(x)=x³−2 を [1,2] で二分法にかける。区間を2回更新した後の中点と誤差上界を求めよ。
解答・解説
c₀=1.5 で f(c₀)=1.375>0 なので [1,1.5]。c₁=1.25 で f(c₁)=−0.046875<0 なので [1.25,1.5]。2回更新後の中点は1.375、誤差上界は区間半幅0.125です。
f(x)=x²−3、x₀=2 のNewton法で x₁、x₂ を分数で求めよ。
解答・解説
更新式は (xₙ+3/xₙ)/2。x₁=7/4、x₂=(7/4+12/7)/2=97/56 です。正の近似値なので各段階の導関数は0ではありません。
f(x)=x²−3 の正の根を α とする。x̃=1.733 と α が [1.7,1.8] 内にあるとき、導関数の下界を使って誤差を評価せよ。
解答・解説
f(1.7)=−0.11、f(1.8)=0.24 で根を挟みます。区間上で f′(x)=2x≥3.4。残差は1.733²−3=0.003289。よって誤差は0.003289/3.4≈0.0009673529以下です(小数は近似表示)。
f(x)=(x−2)³ のNewton法は、xₙ≠2 で誤差を何倍にするか。二次収束か。
解答・解説
xₙ₊₁=xₙ−(xₙ−2)/3 より eₙ₊₁=(2/3)eₙ。誤差は2/3倍で一次収束です。根2は重根で f′(2)=0 なので、単根での二次収束の条件を満たしません。
問1. 二分法で根の存在を保証する条件はどれか。
問2. Newton法について正しいものはどれか。
問3. 近似値と根の間で |f′|≥0.5、残差の絶対値が0.002なら、保証できる絶対誤差上界はどれか。
問4. 幅4の初期区間を二分法で5回更新した後、中点の誤差上界はいくらか。