[英]How to put initial condition of ODE at a specific time point using odeint in Python?
如何使用 Python 中的 odeint 將 ODE 的初始條件置於特定時間點?
所以我有 y(0) = 5 作為初始條件,以下代碼有效::
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
# function that returns dy/dt
def model(y,t):
k = 0.3
dydt = -k * y
return dydt
# initial condition
y0 = 5
# time points
t = np.linspace(0,20)
# solve ODE
y = odeint(model,y0,t)
# plot results
plt.plot(t,y)
plt.xlabel('time')
plt.ylabel('y(t)')
plt.show()
我想在消極和積極的時間線上看到圖表。
所以我將t = np.linspace(0,20)
更改為t = np.linspace(-5,20)
,但初始條件為 y(-5) = 5。
如何解決這個問題?
根據文檔,我認為您不能
但是您可以分別求解正負t
,然后將它們拼接在一起。 將相關行替換為
tp = np.linspace(0,20)
tm = np.linspace(0,-5)
# solve ODE
yp = odeint(model,y0,tp)
ym = odeint(model,y0,tm)
# stich together; note we flip the time direction with [::-1] construct
t = np.concatenate([tm[::-1],tp])
y = np.concatenate([ym[::-1],yp])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.