Python 数値計算における数値解の可視化研究
熊本県立技術短期大学校
情報システム技術科
R4年度卒研生 上田一稀,春日聖也
指導教員 趙 華安
熊本県立技術短期大学校
情報システム技術科
R4年度卒研生 上田一稀,春日聖也
指導教員 趙 華安
Python は近年非常に人気の高いフリープログラミング言語であり,目的に合わせて多種多様なライブラリが多く提供され,さまざまなシステムの開発に利用されている。本研究の目的は,Python による基本的な数値計算を行い,その数値解を可視化することである。本研究では,まず基本的な数値計算法(方程式の解法,データの補間と近似法,数値積分法,常微分方程式の解法)を学習し,それぞれの Python での計算方法と数値解の可視化を研究した上で,数値計算可視化ツールを実装した。この計算ツールは,無償にて公開し,Pythonプログラムはテキストファイルの形式で,ダウンロードして,ご自由に使ってください。ただし,再配布をご遠慮ください。
データの補間法と近似法
XY 平面において n+1 個のデータ(xi,yi),i=0, 1, ...,n が得られている場合,これらのデータを全て通る n 次多項式関数を利用して,データ間の値を求める方法をラグランジュ補間法という。また,全てのデータを通るのではなく,各点に最も近い m 次(1≦m<n)多項式関数を利用して,データ間の値を求める方法を最小二乗法による近似法という。本研究では,ラグランジュ補間法と最小二乗法による近似法およびそれらの可視化をPythonによって実装した。
5つのデータを入力し,そのデータがグラフに表示され,求めたい補間値の x 座標(x=7.7)としたら,ラグランジュ多項式の係数と,補間値 y=3.120081 が求まる。
数値積分法
数値積分法は,定積分∫ f(x)dx の計算において,原始関数を求めることが困難な場合,近似的に積分計算する方法である.本研究では,台形公式法,シンプソン法およびガウス・ルジャンドル法を Python で実装した。
左図の被積分関数はx^3-3x+2で,積分区間は[-1,1]。シンプソン法でその積分の解を4.0と求め,可視化にされている。
常微分方程式の数値解法は,1階常微分方程式 y’=f(x, y) を対象にし,初期条件(x0, y0)から指定された区間[x0, xn]の特殊解の近似曲線の座標を求めることである。高階常微分方程式は,連立1階微分方程式に変換して解く。本研究では,よく利用されているルンゲ・クッタ法をPython で実装した。ルンゲ・クッタ法は,常微分方程式の標準的解法として幅広く利用されている。右図は微分方程式 y' = 2xy,初期値(0,1),区間[0, 2],分割数 n=100 とした特殊解のグラフである。