一次元拡散方程式のアニメーションを作るプログラムを作成しています。
python
1import numpy as np 2import matplotlib.pyplot as plt 3import math 4 5T = 2 6nx = 41 7nt = 201 8dx = math.pi/(nx-1) 9dt = 0.01 10du = 0.3 11alpha = 0.1 12beta = 1.0 13gamma = 10.0 14X = np.linspace(0,math.pi,nx) 15 16#初期条件 17u1 = [] 18u2 = [] 19u3 = [] 20for i in range(nx): 21 x = dx*i 22 u1.append(math.cos(x)+math.cos(7*x)) 23 u2.append(math.cos(x)+math.cos(7*x)) 24 u3.append(math.cos(x)+math.cos(7*x)) 25 26fig = plt.figure() 27ims = [] 28for t in range(0,nt): 29 for i in range(1,nx-1): 30 u1[i] = u1[i]+alpha*dt/(dx*dx)*(u1[i+1]-2*u1[i]+u1[i-1]) 31 u2[i] = u2[i]+beta*dt/(dx*dx)*(u2[i+1]-2*u2[i]+u2[i-1]) 32 u3[i] = u3[i]+gamma*dt/(dx*dx)*(u3[i+1]-2*u3[i]+u3[i-1]) 33 im1 = plt.plot(X,u1,"D=0.1") 34 im2 = plt.plot(X,u2,"D=1.0") 35 im3 = plt.plot(X,u3,"D=10.0") 36 ims.append(im1+im2+im3) 37 38 39plt.grid() 40plt.xlabel("x") 41plt.ylabel("u") 42ims = animation.ArtistAnimation(fig, ims) 43plt.show() 44
現状、このような感じにプログラムを組んでいるのですが、これを実行した場合、「unrecognized character = in format string」というエラーが第33行目に発生してしまいます。どこに問題があるかが分かりません。どなたか見ていただくことはできないでしょうか?
「"D=0.1"」とかは凡例ですか?
凡例なら、「label=」を付けてみてください
https://qiita.com/Mshimon/items/0e7feddc12e7668834b0
こちらは、別のやり方です
(plot()ではなくlegend()に凡例を書く)
https://qiita.com/sci_Haru/items/e551488eddbc84818cc0
の「結果(1) 自由粒子の伝播」
ありがとうございます。おかげでそこは解決したのですが、今度は「singular matrix」というエラーが発生していしまいました…定めた行列に問題点はないように思われるのですが、何が問題なのかがわかりません…
回答1件
あなたの回答
tips
プレビュー