Есть ли способ контролировать, насколько точно Matlab вычисляет событие
место
Краткий ответ: «Нет, но в любом случае это точность машины». Matlab ode45
(а остальные, как ode15s
, ode23
и т. Д.) Вызывает функцию с именем odezero
, которая выполняет работу по вычислению нулевых событий интеграторов ODE. Вот соответствующие строки в odezero
, где установлен допуск:
tol = 128*max(eps(t),eps(tnew));
tol = min(tol, abs(tnew - t));
Из этого вы можете видеть две вещи: (1) нет никакой зависимости от каких-либо пользовательских параметров и (2) даже если у вас есть контроль, вы не можете установить его меньше, поскольку допуск составляет 128 * eps.
Есть ли способ указать, как мало я хочу, чтобы значение было, когда
интеграция заканчивается?
Детекторы событий Matlab ODE не ищут value
, стремящегося к нулю или приближающегося к нулю, он ищет его , пересекающий ноль. Если вы хотите найти конкретное значение ODE, пересекающее определенное значение, то функция событий возвращает разницу между решением и желаемым порогом.