我认为问题可能出在' 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')
答案 0 :(得分:0)
也许问题是你忘记了"返回"在func(c,t)中,暂时它什么都不返回:
def func(c,t):
return [ bla bla bla]