高校物理、大学受験、大学物理、プログラミングの記事を書きます。

Pythonで1次元熱伝導方程式のグラフのアニメーションが簡単にできた

2019/09/17
 
この記事を書いている人 - WRITER -

こんにちは(@t_kun_kamakiri)(‘◇’)ゞ

前回の記事で1次元熱伝導方程式をFortranで解いて、1次元のグラフのアニメーションをgnuplotで作成するというのをしました。

前回の記事はこちら

↑この記事でのアニメーション結果はこちら。

アニメーションはこんな感じ

 

Fortranは可視化ツールがないので仕方なくgnuplotのスクリプトを書いてグラフのアニメーションを作りました。

カマキリ
めんどうだった・・・

 

本記事の内容はこちら
今回は、1次元熱伝導方程式をPythonで解いてグラフのアニメーションまで作成したいと思います。
Pythonの初学者のための記事です。
 

※Pythonの動作にはJupyter Notebookを使用しています。

スポンサーリンク

Pythonの使用環境

 

Pythonの使用環境は色々あると思います。

以下に代表的なものを紹介しておきます。

①Pythonの本家をインストール

②AnacondaをインストールしてJupyter notebookを使用

③PycharmをインストールしてPythonを使用

④visual studioをインストールしてPythonを使用

 

カマキリ
僕はAnacondaをインストールしてJupyter notebookを使用したいと思います。

 

1次元熱伝導方程式を離散化して解く

 

解きたい方程式は、下記の記事でも詳しく解説しています。

前回の記事はこちら

 

Pythonで解きたい方程式は↓こちらです。

1次元熱伝導方程式
 
\begin{align*}\frac{\partial T}{\partial t}=\kappa\frac{\partial^2T}{\partial^2 x}\tag{1}\end{align*}
 
熱伝導方程式は、初期状態を与えれば(1)式に従って時間発展をする方程式です。
今回は初期状態を以下のようにしておきます。
 
 
(1)式を離散化しないと数値的に解けないので、離散化します。
 
 
ある地点\(x_{i}\)での時間微分の項
\begin{align*}\frac{\partial T}{\partial t}\simeq \frac{T^{n+1}(x_{i})-T^{n}(x_{i})}{\Delta t}\tag{2}\end{align*}
 
微分を差分に置き換えただけです。
数値計算では時間をステップ数で数えるため、時間変数の代わりにステップ\(n\)として文字の頭に添えています。
 
 
ある時間\(t\)での空間微分の項
 
\begin{align*}\kappa\frac{\partial^2T}{\partial^2 x}\simeq \kappa\frac{T^{n}(x_{i}+\Delta x)-2T^{n}(x_{i})-T^{n}(x_{i}-\Delta x)}{\Delta x^2}\tag{3}\end{align*}
 
これは空間に対して2次の精度となります。
 
 
 
\begin{align*}
T^{n+1}(x_{i})=T^{n}(x_{i})+\kappa dt\frac{T^{n}(x_{i}+\Delta x)-2T^{n}(x_{i})-T^{n}(x_{i}-\Delta x)}{\Delta x^2}
\tag{4}\end{align*}
 
では、これをPythonで解いて1次元のアニメーションを作成しましょう(^^)/
 
 

Pythonで解いて1次元のアニメーション

 

Pythonのコードを載せておきましょう。

プログラムの簡単な解説をしておきます。

 

【参考リンク】

 

Pythonのアニメーションの結果

 

上のPythonをJupyter notebookで動かすとこんな感じ。

 

カマキリ
Fortranとgnuplotで頑張るより簡単でした

計算はすぐ終わるので、これくらいの軽い計算なら言語の違いは出なさそうです。

 

 

この記事を書いている人 - WRITER -

コメントを残す

Copyright© 宇宙に入ったカマキリ , 2019 All Rights Reserved.