Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scipy Python odeint,返回初始条件数组的解决方案_Scipy_Odeint - Fatal编程技术网

Scipy Python odeint,返回初始条件数组的解决方案

Scipy Python odeint,返回初始条件数组的解决方案,scipy,odeint,Scipy,Odeint,请参阅下面的代码 当我执行这段代码时,我得到一个初始条件数组 [[310.0] [ 310. 0.] [ 310. 0.] [ 310. 0.] [ 310. 0.] [ 310. 0.] [ 310. 0.] [ 310. 0.] [ 310. 0.] [310.0.] 如果您对此有任何想法,我们将不胜感激 那么问题是什么?(1)从您使用的print语句中,我推断您使用的是Python 2。您可以通过将来自uuu future uuu impor

请参阅下面的代码

当我执行这段代码时,我得到一个初始条件数组

[[310.0] [ 310. 0.] [ 310. 0.] [ 310. 0.] [ 310. 0.] [ 310. 0.] [ 310. 0.] [ 310. 0.] [ 310. 0.] [310.0.]

如果您对此有任何想法,我们将不胜感激


那么问题是什么?(1)从您使用的
print
语句中,我推断您使用的是Python 2。您可以通过将来自uuu future uuu import division的
放在脚本的顶部来避免一些麻烦,这样所有的division都会给出浮点结果。否则,诸如
3/2
之类的表达式将给出
1
,而不是
1.5
。(2) 测试
ode_向量
(例如,查看
ode_向量(初始向量,V[0])
。如果它总是返回[0,0],由
odeint
生成的解决方案将是一个常数,等于初始条件。感谢您的回复。很抱歉,我没有提供完整的描述。我对Python和stackoverflow不熟悉,一定会努力解决我的问题,以便正确地解决这些问题。我能够将错误追溯到错误rA(T,X)方程中的aced括号导致ode_向量方程出现[0,0]数组。我的函数现在工作正常。
    import numpy as np
    from scipy.integrate import odeint

    # Define constants
    U = 1000    
    a = 5    
    Ta0 = (37+273)   
    V_tot = 6 
    FA0 = 14.7   
    CA0 = 9.3  
    deltaCp = 0
    Hrx_T = -6900
    sumTheta_Cp = 159

    #Integration conditions

    V = np.linspace(0,V_tot,10) 
    X0 = 0
    T0 = 310

    #Define reaction rate constant as function of temperature 
    def k(T):
        return 31.1*np.exp(7906*((T-360)/(T*360)))

    def Kc(T):
        return 3.03*np.exp(-830.3*((T-333)/(T*333)))

    #Define rate law as function of temperature, conversion 

    def rA(T,X):
        return -k(T)*CA0*(1-(1+(1/Kc(T))*X))


    #Energy balance equation for tubular reactor

    def ode_vector(diff_var,V):

        T = diff_var[0]
        X = diff_var[1]                          

        dT_dV=(U*a*(Ta0-T)+rA(T,X)*Hrx_T/(FA0*sumTheta_Cp+deltaCp*X))
        dX_dV= -rA(T,X)/FA0

        d_dV = [dT_dV,dX_dV]

        return d_dV

    initial_vector = [T0, X0]

    solution = odeint(ode_vector,initial_vector,V)

print solution