前提・実現したいこと
dY/dt = f(t,Y)
Y(0) = a
この1階常微分方程式を、a=1 としてオイラー法を用いてspyderで解き各点を描画しようとしています。
発生している問題
下のようにするとグラフを出力した際に(0,0)に必要のない点が描画されてしまいます。
該当のソースコード
import matplotlib.pyplot as plt import numpy as np fig = plt.figure(figsize=(10,8)) ax = fig.add_subplot(111) T = 10.0 N = 100 a = 1.0 Y = np.zeros(N+1) t = np.zeros(N+1) h = T/N Y[0] = a t[0] = 0 for j in range(0,N-1,1): t[j+1] = (j+1) * h Y[j+1] = Y[j] + h * f(t[j], Y[j]) plt.plot(t, Y, 'o') ax.set_xlabel("t", fontsize=20) ax.set_ylabel("N", fontsize=20) ax.legend(loc="best", fontsize=20)
試したこと
「for j in~」の部分に「plt.plot(t[j], Y[j], 'o')」を入れると(0,0)の点は無くなるのですが、(分かってはいたのですが)点の色が統一されません。
いろいろ試しても全然分からなかったため質問させていただきました。よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
anacondaのspyderで作業しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。