2017-03-18 786 views
2

我剛開始使用python進行科學繪圖來繪製微分方程的數值解。我知道如何使用scipy.odeint來求解和繪製單個微分方程,但不知道微分方程的系統。我如何繪製下面的耦合系統?在Python中繪製微分方程的系統

N' = a * N - (C/(1+C)) * b * N 
C' = (C/(1+C)) * N - C + 1 

a = 4 
b = 7 
N(0) = 100 
C(0) = 5 

回答

2

只要定義所有的變量作爲空間矢量,然後應用集成:

import numpy as np 
from scipy.integrate import odeint 
import matplotlib.pyplot as plt 

def f(s,t): 
    a = 4 
    b = 7 
    n = s[0] 
    c = s[1] 
    dndt = a * n - (c/(c+1)) * b * n 
    dcdt = (c/(c+1)) * n - c + 1 
    return [dndt, dcdt] 

t = np.linspace(0,20) 
s0=[20,5] 

s = odeint(f,s0,t) 

plt.plot(t,s[:,0],'r--', linewidth=2.0) 
plt.plot(t,s[:,1],'b-', linewidth=2.0) 
plt.xlabel("t") 
plt.ylabel("S[N,C]") 
plt.legend(["N","C"]) 
plt.show() 

enter image description here