没有给出正确图形结果的bz反应的Odeint图形图

时间:2014-08-13 16:18:34

标签: python graph odeint

我认为问题可能出在' func'但我找不到它。我得到的图只是0处的红线。 为了Belousov-Zhabotinsky的反应,我试图得到z和y浓度随时间的曲线。

 # -*- coding: utf-8 -*-

from __future__ import division
from numpy import linspace
from matplotlib import pyplot as plot
from scipy.integrate import odeint

k0 = 1.0*60.0
kR2 = (10.0**6.0)*60.0
kR3 = 2.0*60.0
kR4 = 2000.0*60.0
kR5 = 10.0*60.0
CH = 0.8 #[0]
CA = 0.04 #[1]
CB = 0.05 #[2]
CX = 0.0 #[3]
CY = 0.0 #[4]
CZ = 3.0*(10.0**4.0) #[5]
CP = 0.0

def func(c,t):
    ([(-(kR3*(CH**2)*c[0]*c[3])-(kR5*CH*c[0]*c[2])+(0.5*kR4*(c[2]**2))),
     (-k0*c[2]*c[4]),
     ((kR3*(CH**2)-(kR2*CH*c[2]*c[3])+(kR5*CH*c[0]*c[2])-(kR4*(c[2]**2)))),
     (-(kR3*(CH**2)-(kR2*CH*c[2]*c[3])+((1/3)*k0*c[1]*c[4]))),
     ((2*kR5*CH*c[0]*c[2])-(k0*c[1]*c[4])),
     ((kR3*(CH**2)+(2*kR2*CH*c[2]*c[3])+(0.5*kR4*(c[2]**2))))])


ti = linspace(0,20,1000)

Ci = odeint(func,[CA,CB,CX,CY,CZ,CP],ti)


plot.plot(ti,Ci[:,3],'r',ti,Ci[:,4],'b')

1 个答案:

答案 0 :(得分:0)

也许问题是你忘记了"返回"在func(c,t)中,暂时它什么都不返回:

def func(c,t):
    return [ bla bla bla]