簡體   English   中英

如何使用 Python 中的 odeint 將 ODE 的初始條件置於特定時間點?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM