0
で1つのデータセットのための2つのプロットを取得しています。例をNumpy配列のメソッドとして書き直しましたが、それをプロットすると、同じ数字に2つのプロットがありますが、それを修正する方法がわかりません。また、Matplotlibでプロットするために私の2次元配列を1次元配列に変換するより良い方法があります。私はマーク・ニューマンの本計算物理学から<em>オイラー法</em>題し例8.1を通じて働いているのpython
ニューマンの例:
from math import sin
from numpy import arange
from pylab import plot,xlabel,ylabel,show
def f(x,t):
return -x**3 + sin(t)
a = 0.0 # Start of the interval
b = 10.0 # End of the interval
N = 1000 # Number of steps
h = (b-a)/N # Size of a single step
x = 0.0 # Initial condition
tpoints = arange(a,b,h)
xpoints = []
for t in tpoints:
xpoints.append(x)
x += h*f(x,t)
plot(tpoints,xpoints)
xlabel("t")
ylabel("x(t)")
show()
マイ修正:
from pylab import plot,show,xlabel,ylabel
from numpy import linspace,exp,sin,zeros,vstack,column_stack
def f(x,t):
return (-x**(3) + sin(t))
def Euler(f,x0,a,b):
N=1000
h = (b-a)/N
t = linspace(a,b,N)
x = zeros(N,float)
y = x0
for i in range(N):
x[i] = y
y += h*f(x[i],t[i])
return column_stack((t,x)) #vstack((t,x)).T
plot(Euler(f,0.0,0.0,10.0))
xlabel("t")
ylabel("x(t)")
show()
私はあなたの最初の問題は何とかプロットスペースをクリアする必要があると思います。私は十分Pyplotを知らないが、matplotlibの中で() ' – Henry
@Henryはちょうどそれを助けながら試してみました' plt.clfあり、メインリニアプロットはまだ1つのデータセットとプロットを二つのグラフ取るように思われるいくつかの理由で現れますそれから。 – FireFistAce
ああ、ごめんなさい。 pyplotの経験はありません!あなたが '' plt'としてmatplotlib.pyplot import'edどうかは別の問題で助けをした私はプロット – Henry