Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/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
Julia 如何让Rosenbrock23在ParameterizedFunctions.jl DSL中使用ODE?_Julia_Dsl_Ode_Differential Equations_Differentialequations.jl - Fatal编程技术网

Julia 如何让Rosenbrock23在ParameterizedFunctions.jl DSL中使用ODE?

Julia 如何让Rosenbrock23在ParameterizedFunctions.jl DSL中使用ODE?,julia,dsl,ode,differential-equations,differentialequations.jl,Julia,Dsl,Ode,Differential Equations,Differentialequations.jl,此外,我在parameteriedfunctions.jlDSL中实现了相同的模型。以下MWE工程: using DifferentialEquations using Plots # Modeling a consecutive / parallel reaction in a CSTR # A --> 2B --> C, C --> 2B, B --> D # PETERSEN-Matrix # No. A B C D

此外,我在
parameteriedfunctions.jl
DSL中实现了相同的模型。以下MWE工程:

using DifferentialEquations
using Plots

# Modeling a consecutive / parallel reaction in a CSTR
# A --> 2B --> C, C --> 2B, B --> D
# PETERSEN-Matrix
#   No.     A       B       C       D       Rate
#   1      -1       2                       k1*A
#   2              -2       1               k2*B*B
#   3               2      -1               k3*C
#   4              -1               1       k4*B

fpr! = @ode_def ConsecutiveParallelReaction begin
    dA = -k_1*A + q_in/V_liq*(A_in - A)
    dB = 2*k_1*A - 2*k_2*B*B + 2*k_3*C - k_4*B + q_in/V_liq*(B_in - B)
    dC = k_2*B*B - k_3*C + q_in/V_liq*(C_in - C)
    dD = k_4*B + q_in/V_liq*(D_in - D)
end k_1 k_2 k_3 k_4 q_in V_liq A_in B_in C_in D_in

u0 = [1.5, 0.1, 0, 0]
params = [1.0, 1.5, 0.75, 0.15, 3, 15, 0.5, 0, 0, 0]
tspan = (0.0, 15.0)
prob = ODEProblem(fpr!, u0, tspan, params)
sol = solve(prob)
plot(sol)
但是,如果使用
sol=solve(prob,Rosenbrock23())
(即使使用
autodiff=false
),也会发生以下错误:

ERROR: LoadError: MethodError: Cannot `convert` an object of type Array{Float64,1} to an object of type Float64

我想这是一个类似于上面提到的问题,但是由于我没有在这里明确定义任何
Float64
向量,并且
autodiff=false
没有消除错误,我不知道如何解决这个问题。有什么建议吗?

从评论来看,这似乎确实有效。

我无法复制这个问题。你确定你在新的Julia会话中运行了这个吗?如果这是一个新的Julia会话,请确保您的软件包已更新,并且您正在运行v1.0+。愚蠢的我,它现在按预期工作;当我今天尝试运行它(Linux上的Julia 1.1.1)时,我得到:
ERROR:LoadError:type ConcertiveParallelReaction没有字段Wfact Stacktrace:[1]getproperty(::Any,::Symbol)at./sysimg.jl:18
中是否有任何导致此代码失败的更改?