プログラミング

【数値解析】二分法をpythonプログラムを使って解説する

どうも!こんにちはのぶ(@tsureblo_nobu)です!

大学三年生になり研究室を決めない時期になってきたのですが、僕は理論物理系の研究室に行くことを選びました。

そこで必要になってくるのがプログラミングでの数値解析

なのでこれから少しずつ僕が今まで学んできた数値解析のプログラムをコード例を利用して解説していこうと思います!

大学の授業で数値解析やプログラミング演習などがある方の参考になれば嬉しいです。

1.今回扱うコード例

とりあえず今回扱うコードを見ていきましょう。

「"""」で囲まれている部分や「#」がついている部分は実際にプログラムには関係のない注意書きです。

一見長く見えますが怖がらずに1つずつ見ていきましょう。

まず、最初の二行に注目

これはx^2-aの計算を小数第20桁まで計算することを表しています。

関数の定義、初期設定に関しては簡単なので割愛します。

最後に注目したいのは繰り返し処理の部分。ここが一番大切!

while文の部分で桁数が10^20を超えるまで以下の動作を繰り返すようになっている。

どこかで計算を切ってあげないと無限ループをしてしまうからLIMITを設けている。

では、次の行のxmidについてはどうだろうか?

xmidは適当に置いたある2つの数xn,xpの間の値をとる。

だからこの解の求め方は二分法と呼ばれています。

それではif文の中身を見ていきましょう!

xmidが0より大きければxpにxmidを代入、0より小さければxnに代入するようになっている。

これがどのような動作をすることになるのかわからない人は下の表を見て欲しい。

これを見れば分かる通りif文の操作をすることで段々と解の位置が限定されてきていることが分かると思う。

ちなみに実行結果は以下の通り

段々と解が限定されていき1.4142......に近づいていっていることが分かると思う。

二分法ではこのようにして方程式の解を求める法則でした。

2.最後に

今回扱った二分法はpythonに存在するモジュールを利用すれば一瞬で解くことができます。

だからといって学ばなくて良いとないがしろにするのは勿体無いと思うので今回概要をまとめてみました。

参考になれば嬉しいです。



スポンサーリンク

-プログラミング
-, ,

Copyright© 高校から大学への橋渡し , 2020 All Rights Reserved Powered by AFFINGER5.