我尝试使用Julia文档中的this示例。我的尝试是将细胞分裂成两个部分,每个部分的蛋白质含量为一半,因此我将Theta设置为0.5。但是,该图看起来像这样:
很明显,由于细胞数量相等,因此每次同时达到目标蛋白质量时,细胞数量就会增加一倍。我该如何绘制?我也不明白为什么在以下情况下单元格的数量会停在3个位置。
绘制每个细胞中的蛋白质量,并考虑您创建的模型。第一次除法后,两个单元格具有相同的值。因此,在同一时间,您将触发事件。 “最大值”(无论哪个索引较低,所以为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
将是一种方法,当然还有很多其他方法。