前提
Pythonで1次元熱拡散方程式の数値計算を中心差分法で行い、グラフを書くプログラムを作っています。
エラーと正しい数値が出ない原因がわかりません。
初期条件はT(0,l)=0(0≦l<L)
1(l=L)
境界条件はT(t,0)=0, T(t,L)=1
実現したいこと
発生したエラーの解消とグラフを1本(t)ごとに色が変わるようにしたいです。
初期条件、境界条件が正しく出るようにしたいです。
発生している問題・エラーメッセージ
Traceback (most recent call last):
File "C:\Users\kucoo\Downloads\3班_配布物\1214.py", line 18, in <module>
T[i][N]=1.0
IndexError: index 11 is out of bounds for axis 0 with size 11
該当のソースコード
Python
1ソースコード 2import pandas as pd 3import numpy as np 4import matplotlib.pyplot as plt 5M=41 6N=11 7tend=20.0 8L=1.0 9k=0.01 10dt=0.5 11dl=0.1 12T=np.zeros((M,N)) 13a=k*dt/(dl*dl) 14for j in range(N-1): 15 T[0][j]=0.0 16T[0][N-1]=1.0 17for i in range(M): 18 T[i][0]=0.0 19 T[i][N]=1.0 20for i in range(M-1): 21 for j in range(N-1): 22 T[i+1][j]=T[i][j]+a*(T[i][j+1]-2*T[i][j]+T[i][j-1]) 23 print(i*dt,j*dl,T[i][j]) 24fig = plt.figure() 25ax1 = fig.add_subplot(111) 26ax1.set_xlabel("x") 27ax1.set_ylabel("T:Temperature ") 28ax1.set_title(r'Temperature') 29ax1.set_xlim(0, 1) 30ax1.glid() 31x = np.arange(0, L+dl, dl) 32for t in range(tend): 33 y = T[:, int(L/dl)] 34 ax1.plot(x, y, label="t: {}".format(f"{x}")) 35plt.legend() 36plt.savefig("temperature.png") 37 38### 試したこと 39 40ここに問題に対して試したことを記載してください。 41 42### 補足情報(FW/ツールのバージョンなど) 43 44ここにより詳細な情報を記載してください。

回答2件
あなたの回答
tips
プレビュー