Редкая, казалось бы, случайная ошибка сегментации и ошибка памяти только для чтения: почему? Как мне исправить?
Я пытаюсь решить систему DAE в Юлии, используя sundials.jl. Исходный код работает нормально, но симуляция Монте-Карло для количественного определения неопределенности иногда вызывает ошибку сегментации.
`struct s_base
s1::Float64
s2::Float64
end
#DAE Tests
using DifferentialEquations
using Sundials
function f(out,du,u,p,t)
out[1] = - p.s1*u[1] + p.s2*u[2]*u[3] - du[1]
out[2] = + p.s1*u[1] - 3e7*u[2]^2 - p.s2*u[2]*u[3] - du[2]
out[3] = u[1] + u[2] + u[3] - 1.0
end
u₀ = [1.0, 0, 0]
du₀ = [-0.04, 0.04, 0.0]
tspan = (0.0,100000.0)
differential_vars = [true,true,false]
for n=1:1000000
s=s_base(.04,1e4)
prob = DAEProblem(f,du₀,u₀,tspan,s,differential_vars=differential_vars)
sol = solve(prob,IDA())
end
`
Я создал приведенный выше пример игрушки, изменив пример dae в документации julia, чтобы показать проблему, но вероятность ошибки в игрушке ниже, чем в реальном коде (хотя она все еще возникает).
Спасибо за любую помощь, кто может иметь!