【问题标题】:Julia Langauge Differential Equations exampleJulia 语言微分方程示例
【发布时间】:2020-07-03 12:37:53
【问题描述】:

我尝试使用 Julia 文档中的 this 示例。我的尝试是将细胞分成两部分,每部分的蛋白质含量是一半,所以我设置了 Theta=0.5。然而,情节是这样的:

很明显,每次达到目标蛋白质量时,细胞数量都会增加一倍,因为它们是相等的。我怎么能策划这个?我也不明白为什么在下面的情况下单元格的数量停止在 3。

【问题讨论】:

    标签: plot julia modeling ode ijulia-notebook


    【解决方案1】:

    绘制每个细胞中的蛋白质含量并考虑您创建的模型。第一次分裂后,两个单元格的值相同。所以在同一时间,你有一个事件触发。 “最大值”(无论哪个索引较低,所以 1)将分裂,而 2 将继续增长到 1 以上。但是现在u[2] > 1,寻根条件1-maximum(u) 将永远不会再次达到零,因此不会再发生分裂.这意味着您总共会有两个拆分,即 3 个单元格。

    请记住,程序会完全按照您的指示行事。我假设您的意思是,根据您的效果,拆分大于或等于 1 的 any 单元格。如果那是您想要的 affect!,那么您必须编写它:

    function affect!(integrator)
      u = integrator.u
      idxs = findall(x->x>=1-eps(eltype(u)),u)
      resize!(integrator,length(u)+length(idxs))
      u[idxs] ./ 2
      u[end-idxs:end] = 0.5
      nothing
    end
    

    这是一种方法,当然还有很多其他方法。

    【讨论】:

    • 谢谢,我明白我在代码中做错了什么。但是,我用你的版本尝试过,它抛出了以下错误:“MethodError:没有方法匹配 -(::Int64, ::Array{Int64,1})”。当我对数组进行简单的操作并且我弄乱了大小时,我曾经遇到过这个错误......但是这里有什么问题?此外,拆分任何大于 1 的单元格还不够吗?因为一旦达到1,它就会分裂,它没有机会增长更多,对吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 2016-09-18
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多