JL Julia  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Дифференциальные уравнения

Практические задания по теме «Дифференциальные уравнения» требуют сопоставить несколько решений, найти источник ошибки и оценить последствия выбранного подхода. Вопросы требуют читать код, находить границу применимости, выбирать проверяемую правку и отличать свойства Julia от поведения конкретного пакета. В тесте 25 вопросов: 15 заданий с кодом и 10 заданий с математической записью. Все формулировки рассчитаны на Julia 1.12.6; для сторонних библиотек используется явно названный API.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 70 минут. После завершения откроются правильные ответы, объяснения и результаты по темам.
Вопрос 1 из 25
Что именно следует из фрагмента с `prob = ODEProblem(decay!, [1.0], (0.0, 5.0), (; k=0.4))`?
\dot u=f(u,p,t)
JuliaJulia · Постановка задачи
using DifferentialEquations
function decay!(du, u, p, t)
    k = p.k
    du[1] = -k * u[1]
end
prob = ODEProblem(decay!, [1.0], (0.0, 5.0), (; k=0.4))
@show prob.u0 prob.tspan
Вопрос 2 из 25
Какой эксперимент отличит настоящий механизм `prob = ODEProblem(decay!, [1.0], (0.0, 5.0), (; k=0.4))` от случайного результата одного запуска?
JuliaJulia · Постановка задачи
using DifferentialEquations
function decay!(du, u, p, t)
    k = p.k
    du[1] = -k * u[1]
end
prob = ODEProblem(decay!, [1.0], (0.0, 5.0), (; k=0.4))
@show prob.u0 prob.tspan
Вопрос 3 из 25
Какое решение устраняет риск вокруг `prob = ODEProblem(decay!, [1.0], (0.0, 5.0), (; k=0.4))`, не меняя поведение на допустимых данных?
JuliaJulia · Постановка задачи
using DifferentialEquations
function decay!(du, u, p, t)
    k = p.k
    du[1] = -k * u[1]
end
prob = ODEProblem(decay!, [1.0], (0.0, 5.0), (; k=0.4))
@show prob.u0 prob.tspan
Вопрос 4 из 25
Две реализации участка с `prob = ODEProblem(decay!, [1.0], (0.0, 5.0), (; k=0.4))` совпадают на обычных данных. Что необходимо проверить перед выпуском?
\dot u=f(u,p,t)
Вопрос 5 из 25
Как сформулировать границу механизма `prob = ODEProblem(decay!, [1.0], (0.0, 5.0), (; k=0.4))` без чрезмерного обещания?
Вопрос 6 из 25
Как нужно интерпретировать `prob = ODEProblem(stiff!, [0.0], (0.0, 1.0))`, не добавляя к коду лишних гарантий?
u_{n+1}=\Phi_h(u_n)
JuliaJulia · Выбор численного решателя
using DifferentialEquations
function stiff!(du, u, p, t)
    du[1] = -1000u[1] + 3000 - 2000exp(-t)
end
prob = ODEProblem(stiff!, [0.0], (0.0, 1.0))
sol = solve(prob, Rodas5())
@show sol.retcode sol.u[end]
Вопрос 7 из 25
Какой тест точнее всего зафиксирует границу поведения `prob = ODEProblem(stiff!, [0.0], (0.0, 1.0))`?
JuliaJulia · Выбор численного решателя
using DifferentialEquations
function stiff!(du, u, p, t)
    du[1] = -1000u[1] + 3000 - 2000exp(-t)
end
prob = ODEProblem(stiff!, [0.0], (0.0, 1.0))
sol = solve(prob, Rodas5())
@show sol.retcode sol.u[end]
Вопрос 8 из 25
Какое решение устраняет риск вокруг `prob = ODEProblem(stiff!, [0.0], (0.0, 1.0))`, не меняя поведение на допустимых данных?
JuliaJulia · Выбор численного решателя
using DifferentialEquations
function stiff!(du, u, p, t)
    du[1] = -1000u[1] + 3000 - 2000exp(-t)
end
prob = ODEProblem(stiff!, [0.0], (0.0, 1.0))
sol = solve(prob, Rodas5())
@show sol.retcode sol.u[end]
Вопрос 9 из 25
Какой результат приёмочного теста подтвердит корректность участка с `prob = ODEProblem(stiff!, [0.0], (0.0, 1.0))`?
u_{n+1}=\Phi_h(u_n)
Вопрос 10 из 25
Что следует сообщить пользователю библиотеки о поведении `prob = ODEProblem(stiff!, [0.0], (0.0, 1.0))`?
Вопрос 11 из 25
Какое объяснение для `cb = ContinuousCallback(condition, affect!)` выдержит проверку на другом допустимом входе?
g(u,t)=0
JuliaJulia · События
using DifferentialEquations
condition(u, t, integrator) = u[1] - 0.2
affect!(integrator) = terminate!(integrator)
cb = ContinuousCallback(condition, affect!)
prob = ODEProblem((du,u,p,t)->(du[1]=-u[1]), [1.0], (0.0, 10.0))
sol = solve(prob, Tsit5(); callback=cb)
@show sol.t[end] sol.u[end]
Вопрос 12 из 25
Какую проверку стоит добавить для участка с `cb = ContinuousCallback(condition, affect!)`?
JuliaJulia · События
using DifferentialEquations
condition(u, t, integrator) = u[1] - 0.2
affect!(integrator) = terminate!(integrator)
cb = ContinuousCallback(condition, affect!)
prob = ODEProblem((du,u,p,t)->(du[1]=-u[1]), [1.0], (0.0, 10.0))
sol = solve(prob, Tsit5(); callback=cb)
@show sol.t[end] sol.u[end]
Вопрос 13 из 25
Что должно остаться истинным после рефакторинга участка с `cb = ContinuousCallback(condition, affect!)`?
JuliaJulia · События
using DifferentialEquations
condition(u, t, integrator) = u[1] - 0.2
affect!(integrator) = terminate!(integrator)
cb = ContinuousCallback(condition, affect!)
prob = ODEProblem((du,u,p,t)->(du[1]=-u[1]), [1.0], (0.0, 10.0))
sol = solve(prob, Tsit5(); callback=cb)
@show sol.t[end] sol.u[end]
Вопрос 14 из 25
При переносе кода с `cb = ContinuousCallback(condition, affect!)` в библиотеку какой критерий нельзя заменять впечатлением «пример работает»?
g(u,t)=0
Вопрос 15 из 25
Какое утверждение о `cb = ContinuousCallback(condition, affect!)` является переносимым правилом, а не особенностью одного запуска?
Вопрос 16 из 25
Что именно следует из фрагмента с `loose = solve(prob, Tsit5(); abstol=1e-5, reltol=1e-5)`?
\mathrm{err}\le atol+rtol\,|u|
JuliaJulia · Контроль ошибки
using DifferentialEquations
prob = ODEProblem((du,u,p,t)->(du[1]=-p*u[1]), [1.0], (0.0, 5.0), 0.4)
loose = solve(prob, Tsit5(); abstol=1e-5, reltol=1e-5)
tight = solve(prob, Tsit5(); abstol=1e-10, reltol=1e-10)
@show length(loose.t) length(tight.t)
Вопрос 17 из 25
Какой эксперимент отличит настоящий механизм `loose = solve(prob, Tsit5(); abstol=1e-5, reltol=1e-5)` от случайного результата одного запуска?
JuliaJulia · Контроль ошибки
using DifferentialEquations
prob = ODEProblem((du,u,p,t)->(du[1]=-p*u[1]), [1.0], (0.0, 5.0), 0.4)
loose = solve(prob, Tsit5(); abstol=1e-5, reltol=1e-5)
tight = solve(prob, Tsit5(); abstol=1e-10, reltol=1e-10)
@show length(loose.t) length(tight.t)
Вопрос 18 из 25
Какое решение устраняет риск вокруг `loose = solve(prob, Tsit5(); abstol=1e-5, reltol=1e-5)`, не меняя поведение на допустимых данных?
JuliaJulia · Контроль ошибки
using DifferentialEquations
prob = ODEProblem((du,u,p,t)->(du[1]=-p*u[1]), [1.0], (0.0, 5.0), 0.4)
loose = solve(prob, Tsit5(); abstol=1e-5, reltol=1e-5)
tight = solve(prob, Tsit5(); abstol=1e-10, reltol=1e-10)
@show length(loose.t) length(tight.t)
Вопрос 19 из 25
Две реализации участка с `loose = solve(prob, Tsit5(); abstol=1e-5, reltol=1e-5)` совпадают на обычных данных. Что необходимо проверить перед выпуском?
\mathrm{err}\le atol+rtol\,|u|
Вопрос 20 из 25
Какой тезис о `loose = solve(prob, Tsit5(); abstol=1e-5, reltol=1e-5)` можно честно закрепить в справке?
Вопрос 21 из 25
Что именно следует из фрагмента с `prob = ODEProblem((du,u,p,t)->(du[1]=-u[1]), [1.0], (0.0, 1.0))`?
u(t;v_{alg},v_{pkg})
JuliaJulia · Совместимость версий
using DifferentialEquations, Pkg
prob = ODEProblem((du,u,p,t)->(du[1]=-u[1]), [1.0], (0.0, 1.0))
sol = solve(prob, Tsit5(); saveat=0.1)
report = (; julia=VERSION, project=Base.active_project(), alg=string(sol.alg), values=Array(sol))
@show report.julia report.alg size(report.values)
Вопрос 22 из 25
Какой эксперимент отличит настоящий механизм `prob = ODEProblem((du,u,p,t)->(du[1]=-u[1]), [1.0], (0.0, 1.0))` от случайного результата одного запуска?
JuliaJulia · Совместимость версий
using DifferentialEquations, Pkg
prob = ODEProblem((du,u,p,t)->(du[1]=-u[1]), [1.0], (0.0, 1.0))
sol = solve(prob, Tsit5(); saveat=0.1)
report = (; julia=VERSION, project=Base.active_project(), alg=string(sol.alg), values=Array(sol))
@show report.julia report.alg size(report.values)
Вопрос 23 из 25
Какой контракт следует закрепить при переработке строки `prob = ODEProblem((du,u,p,t)->(du[1]=-u[1]), [1.0], (0.0, 1.0))`?
JuliaJulia · Совместимость версий
using DifferentialEquations, Pkg
prob = ODEProblem((du,u,p,t)->(du[1]=-u[1]), [1.0], (0.0, 1.0))
sol = solve(prob, Tsit5(); saveat=0.1)
report = (; julia=VERSION, project=Base.active_project(), alg=string(sol.alg), values=Array(sol))
@show report.julia report.alg size(report.values)
Вопрос 24 из 25
Как проверить, что новая реализация `prob = ODEProblem((du,u,p,t)->(du[1]=-u[1]), [1.0], (0.0, 1.0))` не изменила обещанное пользователю поведение?
u(t;v_{alg},v_{pkg})
Вопрос 25 из 25
Какое ограничение стоит прямо указать в документации к участку с `prob = ODEProblem((du,u,p,t)->(du[1]=-u[1]), [1.0], (0.0, 1.0))`?

Ответьте на все 25 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу