Редкая, казалось бы, случайная ошибка сегментации и ошибка памяти только для чтения: почему?Как мне исправить? - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь решить систему 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, чтобы показать проблему, но частота ошибок в игрушке ниже, чем в реальном коде (хотя это все еще происходит),

Спасибо за любую помощь!

...