Moneytizerによる広告を掲載しています。概要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)$$だと発散することが知られています。上のようになると繰り返し計算をすることで交点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の値として使用する計算手法です。計算する関数次第で収束しないこともあるので注意しましょう。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。date*日本語が含まれない投稿は無視されますのでご注意ください。本記事ではPythonでの化学工学計算例を紹介しています。今回はNewton-Raphson法を使用して、対数平均温度差を含む熱収支を計算します。わかりやすく解説:表計算ソフトでのアレニウスプロット最小二乗法はあるデータとモデルによる計算値との差の二乗和が最小になるようモデルのパラメータを決定する手法です。本記事では化学工学でよく線形プロットされることが多いアレニウスプロットを例に線形最小二乗法を解説しています。Python【Python】Gauss-Newton法の解説:Antoine式の定数決定Gauss-Newton法は非線形最小二乗法の解法の1つです。Newton法で計算が重いとされるヘッセ行列をヤコビ行列で近似することで計算を軽くしていることが特徴です。Python【Python】Levenberg-Marquardt法を解説:Antoine式の定数決定Levenberg-Marquardt法は非線形最小二乗法の解法の1つです。最急降下法とGauss-Newton法の良いところを組み合わせることで収束性が向上しています。本記事ではPythonでの化学工学計算例を紹介しています。今回はRunge-Kutta法を使用して、回分式反応器の一次反応による原料濃度変化を計算します。Python【Python】Gaussの消去法(掃き出し法)を解説:連立方程式の計算手法Gaussの消去法は連立一次方程式の解法の1つです。連立方程式を行列式として解く手法の中でも最も基本的なものです。ここでは化学反応式の係数決定問題を例に、PythonでGaussの消去法を計算してみます。【Wegstein法】をわかりやすく解説:非線型方程式の解法プロフィールこのブログを運営しているルートです。化学メーカーで働くケミカルエンジニアです。