※当ブログではアフィリエイト・Google Adsense・The Moneytizerによる広告を掲載しています。

収束計算 数値解析

【Direct法(逐次代入法)】を解説:非線型方程式の解法

2021年12月13日

概要

Direct法は非線形方程式を解く手法の1つです。

逐次代入法とも呼ばれており、初期値xから得られたyの値をそのまま次のステップのxの値に代入して計算する手法です。

非線形方程式の解法の中では基本的な計算手法です。Direct法をベースにして修正された計算モデルも存在するので、まずはこの手法を勉強しておきましょう。

原理

方程式f(x)=0の解を求めることを考えます。

Direct法ではf(x)=0を変形して、

$$x=g(x)・・・(1)$$

(1)式のような形で計算します。

初期値x0からg(x0)が求まり、(1)式から次のx1を求めることができます。図で書くと、

上のように繰り返し計算を実施し、最終的にy=g(x)とy=xとの交点Pを求めることでf(x)=0の解を算出することができます。

ただし、Direct法では

$$|g'(x)|>1・・・(2)$$

だと発散することが知られています。y=g(x)とy=xの位置関係が重要で、図で書くと、

上のようになると繰り返し計算をすることで交点Pから離れていくので発散します。このようになる条件が(2)式です。

ちなみに、このような発散を回避できる計算モデルであるWegstein法が後に発表されています。

表計算ソフト計算例

実際にDirect法を使って表計算ソフトで計算してみましょう。

ここでは、

$$f(x)=1+\frac{1}{x}-x=0・・・(3)$$

(3)式についてDirect法で計算してみます。

(3)式に辺々xを足すと、

$$x=1+\frac{1}{x}$$

となります。したがって、

$$g(x)=1+\frac{1}{x}・・・(4)$$

(4)式とy=xとの交点をDirect法の繰り返し計算で求めていくことになります。

上に表計算ソフトでの計算を示しています。

まず適当に初期値を決定し、J2セルに入力します。ここではx0=2としています。

次にK2セルに(4)式を入力します。

次にJ3セルに、

$$J3セル=K2セル$$

と入力し、Direct法でxの値を更新します。

続いてerror値をL3セルに設定します。今回は

$$|J_{n+1}セル-J_{n}セル|<10^{-4}$$

となれば収束したとみなします。

後は収束するまで下にセルをコピーしていくだけです。結果として、x12=1.618のときにerror値<10-4となり収束しました。

 

また、この計算例におけるDirect法の収束計算のイメージを下のグラフに示します。

このように繰り返し計算が進むにつれて、y=g(x)とy=xの交点に近くなり収束していっています。

まとめ

非線形方程式を解く手法の1つであるDirect法について解説しました。

関数g(x)の値を次のステップのxの値として使用する計算手法です。計算する関数次第で収束しないこともあるので注意しましょう。