Документация Engee

Решатели SDE

Рекомендуемые методы

С большинством задач Ито с диагональным и скалярным шумом, которые требуют достаточно высокой точности и умеренная жесткость которых может представлять проблему, должен хорошо справляться алгоритм SOSRI. Если в задаче есть аддитивный шум, оптимальным алгоритмом будет SOSRA. При низких погрешностях (<1e-4) более эффективным будет алгоритм SRA3, а более надежным в плане жесткости — SOSRA. В случае коммутативного шума RKMilCommute является надежным методом порядка 1,0, который использует свойство коммутативности для существенного ускорения стохастической итерационной интегральной аппроксимации и имеет возможность выбора между интегралами Ито и Стратоновича. В случае некоммутативного шума для эффективного решения сложных задач обычно требуется адаптивный размер временного шага. На этот случай есть решатели LambaEM и LambaEulerHeun, которые являются адаптивными и хорошо справляются с общими недиагональными задачами (в интерпретации Ито и Стратоновича соответственно). Если адаптивность не требуется, хорошим выбором будут решатели EM и EulerHeun (для интерпретаций Ито и Стратоновича соответственно).

Для жестких задач с аддитивным шумом наиболее предпочтительным вариантом является адаптивный метод высокого порядка SKenCarp, который решает такие задачи с той же эффективностью, что и ODE. Если есть такая возможность, жесткие задачи следует преобразовывать для использования этого решателя с аддитивным шумом. Если шумовая составляющая имеет большую величину или жесткий характер, то чтобы неявные методы были устойчивыми, требуются методы с дробными шагами. Для интерпретации Ито в таком случае используйте ISSEM, а для интерпретации Стратоновича — ISSEulerHeun. Эти два метода могут работать с любой формой шума.

Если шумовая составляющая не очень велика, для жестких задач с диагональным шумом ImplicitRKMil является самым эффективным методом с возможностью выбора между интегралами Ито и Стратоновича. Для каждого из тета-методов можно выбрать параметр theta. Значение по умолчанию — theta=1/2. При этом значении числовые колебания не ослабляются, поэтому метод будет являться симметричным (и почти симплектическим), что приведет к меньшей погрешности при достаточно небольшом шуме. Однако при theta=1/2 метод не является L-устойчивым по составляющей дрейфа, поэтому при theta=1 можно добиться большей устойчивости (L-устойчивости по составляющей дрейфа), хоть и ценой увеличения погрешности при низком уровне шума. Кроме того, параметр symplectic=true превращает эти методы в неявное расширение средней точки, которое является симплектическим по распределению, но за счет точности.

Если требуется лишь оценочная величина значения решения, то есть точная выборка из распределения, которое определяется данным SDE, рекомендуется использовать решатели высокого слабого порядка. В частности, для большого числа винеровских процессов предпочтительнее будет решатель DRI1. Слабые стохастические решатели Рунге — Кутты со слабым вторым порядком вследствие системы Рёсслера являются адаптивными. Все остальные решатели высокого слабого порядка в настоящее время требуют фиксированного размера шага.

Особые формы шума

Некоторые решатели предназначены для особых форм шума. Настройка по умолчанию — диагональный шум. Недиагональный шум указывается путем присваивания параметру noise_rate_prototype матрицы в типе SDEProblem. Особая форма недиагонального шума, коммутативный шум, имеет место, когда шум отвечает следующему условию:

для каждого и . Аддитивный шум имеет место, когда , то есть функция не зависит от u. Мультипликативный шум имеет место при .

Итерируемые интегральные аппроксимации

Сложность интеграторов более высоких сильных порядков проистекает из наличия в таких схемах повторных

стохастических интегралов.

Аппроксимирования этих повторных интегралов можно избежать, если матрица рассеяния отвечает особому условию коммутативности, представленному выше. По этой причине многие методы применимы только к задачам, отвечающим условию коммутативности. Иными словами, многие методы справляются только с определенными видами шума, например диагональным или коммутативным, из-за способа вычисления аппроксимации повторных интегралов.

Однако методы для общих SDE, например RKMilGeneral, выполняют прямое аппроксимирование повторных интегралов. У алгоритмов таких методов есть именованный аргумент ii_approx, который позволяет указать метод аппроксимирования. Вот возможные варианты.

  • IICommutative — упрощение интеграла, предполагающее наличие у шума свойства коммутативности. При применении к задачам с некоммутативным шумом сильная сходимость ограничивается значением 0,5.

  • IILevyArea — вычисляет повторные интегралы на основе аппроксимирования области Леви с использованием пакета LevyArea.jl: Kastner, F. и Rößler, A., arXiv:https://arxiv.org/abs/2201.08424[]2201.08424 Kastner, F. and Rößler, A., LevyArea.jl, 10.5281/ZENODO.5883748. Пакет поддерживает следующие схемы: Fourier(), Milstein(), Wiktorsson(), MronRoe(). Оптимальный алгоритм выбирается автоматически с учетом размерности броуновского процесса и размера шага. Передавая определенную схему, например ii_approx=Fourier(), можно выбирать методы вручную. При использовании аппроксимаций области Леви в сочетании с адаптивностью (adaptive=true) следует соблюдать осторожность, потому что при аппроксимировании области Леви выбираются случайные числа без учета случайных чисел, взятых на предыдущем отклоненном шаге. Это приводит к отклонению, которое возрастает при увеличении количества отклоненных шагов.

Пример: RKMilGeneral(;ii_approx=IILevyArea()).

Специальные именованные аргументы

  • save_noise: определяет, сохраняются ли значения W каждый раз при сохранении временного ряда. Значение по умолчанию — true.

  • delta: параметр адаптивности delta для средства оценки естественной погрешности. Определяет баланс между погрешностью дрейфа и рассеяния. Дополнительные сведения см. в этой публикации.

  • seed: задает начальное значение для генератора случайных чисел. Оно переопределяет начальное значение, заданное в SDEProblem.

Полный список методов

StochasticDiffEq.jl

Каждый решатель StochasticDiffEq.jl поддерживает линейную интерполяцию. Порядки указываются в терминах сильного порядка.

Нежесткие методы

  • EM — метод Эйлера-Маруямы. Сильный порядок 0,5 в интерпретации Ито. Имеет необязательный аргумент split=true для управления разделением шагов. Если разделение включено, устойчивость при больших собственных значениях рассеяния повышается. Может обрабатывать все виды шума, включая недиагональный, скалярный и окрашенный. Только фиксированный временной шаг †.

  • LambaEM — модифицированный метод Эйлера-Маруямы с адаптивным размером временного шага и средством оценки погрешности по Ламба и Ракаукасу. Имеет необязательный аргумент split=true для управления разделением шагов. Если разделение включено, устойчивость при больших собственных значениях рассеяния повышается. Сильный порядок 0,5 в интерпретации Ито. Может обрабатывать все виды шума, включая недиагональный, скалярный и окрашенный †.

  • EulerHeun — метод Эйлера — Гойна. Сильный порядок 0,5 в интерпретации Стратоновича. Может обрабатывать все виды шума, включая недиагональный, скалярный и окрашенный. Только фиксированный временной шаг †.

  • LambaEulerHeun — модифицированный метод Эйлера — Гойна с адаптивным размером временного шага и средством оценки погрешности по Ламба и Ракаукасу. Сильный порядок 0,5 в интерпретации Стратоновича. Может обрабатывать все виды шума, включая недиагональный, скалярный и окрашенный †.

  • RKMil — явная дискретизация Рунге — Кутты метода Мильштейна сильного порядка 1,0. По умолчанию решает задачу Ито, но RKMil(interpretation=:Stratonovich) заставляет решать задачу Стратоновича. Обрабатывает только скалярный и диагональный шум †.

  • RKMilCommute — явная дискретизация Рунге — Кутты метода Мильштейна сильного порядка 1,0 для задач с коммутативным шумом. По умолчанию решает задачу Ито, но RKMilCommute(interpretation=:Stratonovich) заставляет решать задачу Стратоновича. Использует оценку погрешности 1,5/2,0 для адаптивной дискретизации по времени †.

  • RKMilGeneral(;interpretation=:Ito, ii_approx=IILevyArea() — явная дискретизация Рунге — Кутты метода Мильштейна сильного порядка 1,0 для общих задач с некоммутативным шумом. Допускает выбор интерпретации :Ito или :Stratonovich. Допускает выбор аппроксимации повторного интеграла.

  • WangLi3SMil_A — явные трехэтапные методы Мильштейна с фиксированным размером шага для задач Ито сильного и слабого порядка 1,0

  • WangLi3SMil_B — явные трехэтапные методы Мильштейна с фиксированным размером шага для задач Ито сильного и слабого порядка 1,0

  • WangLi3SMil_C — явные трехэтапные методы Мильштейна с фиксированным размером шага для задач Ито сильного и слабого порядка 1,0

  • WangLi3SMil_D — явные трехэтапные методы Мильштейна с фиксированным размером шага для задач Ито сильного и слабого порядка 1,0

  • WangLi3SMil_E — явные трехэтапные методы Мильштейна с фиксированным размером шага для задач Ито сильного и слабого порядка 1,0

  • WangLi3SMil_F — явные трехэтапные методы Мильштейна с фиксированным размером шага для задач Ито сильного и слабого порядка 1,0

  • SRA — адаптивные методы сильного порядка 1,5 для аддитивных SDE Ито и Стратоновича. По умолчанию применяется таблица для метода SRA1. Может обрабатывать диагональный, недиагональный и скалярный аддитивный шум.

  • SRI — адаптивные методы сильного порядка 1,5 для диагональных и скалярных SDE Ито. По умолчанию применяется таблица для метода SRIW1.

  • SRIW1 — адаптивные методы сильного порядка 1,5 и слабого порядка 2,0 для диагональных и скалярных SDE Ито †.

  • SRIW2 — адаптивные методы сильного порядка 1,5 и слабого порядка 3,0 для диагональных и скалярных SDE Ито †.

  • SOSRI — адаптивные методы сильного порядка 1,5 и слабого порядка 2,0 с оптимизированной устойчивостью для диагональных и скалярных SDE Ито. Устойчивы при высоких погрешностях и надежны в плане жесткости †.

  • SOSRI2 — адаптивные методы сильного порядка 1,5 и слабого порядка 2,0 с оптимизированной устойчивостью для диагональных и скалярных SDE Ито. Устойчивы при высоких погрешностях и надежны в плане жесткости †.

  • SRA1 — адаптивный метод сильного порядка 1,5 для аддитивных SDE Ито и Стратоновича со слабым порядком 2. Может обрабатывать диагональный, недиагональный и скалярный аддитивный шум †.

  • SRA2 — адаптивный метод сильного порядка 1,5 для аддитивных SDE Ито и Стратоновича со слабым порядком 2. Может обрабатывать диагональный, недиагональный и скалярный аддитивный шум †.

  • SRA3 — адаптивный метод сильного порядка 1,5 для аддитивных SDE Ито и Стратоновича со слабым порядком 3. Может обрабатывать недиагональный и скалярный аддитивный шум †.

  • SOSRA — адаптивный метод SRA с оптимизированной устойчивостью. Имеет сильный порядок 1,5 для аддитивных SDE Ито и Стратоновича со слабым порядком 2. Может обрабатывать диагональный, недиагональный и скалярный аддитивный шум. Устойчивы при высоких погрешностях и надежны в плане жесткости †.

  • SOSRA2 — адаптивный метод SRA с оптимизированной устойчивостью. Имеет сильный порядок 1,5 для аддитивных SDE Ито и Стратоновича со слабым порядком 2. Может обрабатывать диагональный, недиагональный и скалярный аддитивный шум. Устойчивы при высоких погрешностях и надежны в плане жесткости †.

Пример использования:

sol = solve(prob, SRIW1())

Трехэтапные методы Мильштейна WangLi3SMil_A, WangLi3SMil_B, WangLi3SMil_D, WangLi3SMil_E и WangLi3SMil_F в настоящее время реализованы только для одномерного и диагонального шума.

Табличные элементы управления

Для SRA и SRI доступен следующий параметр.

  • tableau: таблица для алгоритма :SRA или :SRI. По умолчанию используется таблица для SRIW1 или SRA1.

Методы S-ROCK

  • SROCK1 — стабилизированный явный метод с фиксированным размером шага для жестких задач. По умолчанию решает задачу Ито, но SROCK1(interpretation=:Stratonovich) заставляет решать задачу Стратоновича. Имеет сильный порядок сходимости 0,5 и слабый порядок 1, но оптимизирован для порядка 1 в случае скалярного или диагонального шума.

  • SROCKEM — метод Эйлера-Маруямы с фиксированным шагом и стабилизацией ROCK первого порядка, что позволяет решать жесткие задачи. Предназначен только для задач Ито. По умолчанию имеет сильный и слабый порядок 1,0, но допускает решение со слабым порядком 0,5 при вызове SROCKEM(strong_order_1=false). Этот метод может обрабатывать одномерный, диагональный и недиагональный шум.

  • SROCK2 — стабилизированный метод слабого второго и сильного первого порядка с фиксированным шагом для жестких задач Ито. Этот метод может обрабатывать одномерный, диагональный и недиагональный шум.

  • SKSROCK — стабилизированный явный метод с фиксированным шагом для жестких задач Ито. Имеет сильный порядок 0,5 и слабый порядок 1. Область устойчивости у этого метода лучше, чем у SROCK1. Кроме того, он поддерживает специальные приемы последующей обработки в случае с эргодическими динамическими системами в контексте эргодической броуновской динамики для обеспечения точности второго порядка. При вызове SKSROCK(;post_processing=true) применяется последующая обработка. По умолчанию последующая обработка не используется. Последующая обработка является необязательной и находится на стадии разработки. В остальном этот метод полностью функционален и может обрабатывать одномерный, диагональный и недиагональный шум.

  • TangXiaoSROCK2 — стабилизированный явный метод с фиксированным размером шага для жестких задач. Предназначен только для задач Ито. Имеет слабый порядок 2 и сильный порядок 1. Имеет пять вариантов с разными областями устойчивости, которые можно использовать посредством вызовов TangXiaoSROCK2(version_num=i), где i — это значение от 1 до 5. В разработке.

Жесткие методы

  • ImplicitEM — дрейфовый неявный метод Ито порядка 0,5. Это тета-метод, который по умолчанию имеет значение theta=1, или трапецеидальный метод для члена дрейфа. Этот метод по умолчанию имеет значение symplectic=false, но если задано значение true и theta=1/2, то это неявный метод средней точки для члена дрейфа, и он является симплектическим по распределению. Может обрабатывать все виды шума, включая недиагональный, скалярный и окрашенный. Использует эвристику 1,0/1,5 для адаптивной дискретизации по времени.

  • STrapezoid — псевдоним для ImplicitEM с theta=1/2

  • SImplicitMidpoint — псевдоним для ImplicitEM с theta=1/2 и symplectic=true

  • ImplicitEulerHeun — дрейфовый неявный метод Стратоновича порядка 0,5. Это тета-метод, который по умолчанию имеет значение theta=1/2, или трапецеидальный метод для члена дрейфа. Этот метод по умолчанию имеет значение symplectic=false, но если задано значение true и theta=1, то это неявный метод средней точки для члена дрейфа, и он является симплектическим по распределению. Может обрабатывать все виды шума, включая недиагональный, скалярный и окрашенный. Использует эвристику 1,0/1,5 для адаптивной дискретизации по времени.

  • ImplicitRKMil — дрейфовый неявный метод порядка 1,0. Это тета-метод, который по умолчанию имеет значение theta=1, или трапецеидальный метод для члена дрейфа. По умолчанию решает задачу Ито, но ImplicitRKMil(interpretation=:Stratonovich) заставляет решать задачу Стратоновича. Этот метод по умолчанию имеет значение symplectic=false, но если задано значение true и theta=1/2, то это неявный метод средней точки для члена дрейфа, и он является симплектическим по распределению. Обрабатывает диагональный и скалярный шум. Использует эвристику 1,5/2,0 для адаптивной дискретизации по времени.

  • ISSEM — неявный метод Ито дробных шагов порядка 0,5. Он является полностью неявным, то есть может работать с жесткостью в члене шума. Это тета-метод, который по умолчанию имеет значение theta=1, или трапецеидальный метод для члена дрейфа. Этот метод по умолчанию имеет значение symplectic=false, но если задано значение true и theta=1/2, то это неявный метод средней точки для члена дрейфа, и он является симплектическим по распределению. Может обрабатывать все виды шума, включая недиагональный, скалярный и окрашенный. Использует эвристику 1,0/1,5 для адаптивной дискретизации по времени.

  • ISSEulerHeun — дрейфовый неявный метод Стратоновича порядка 0,5. Он является полностью неявным, то есть может работать с жесткостью в члене шума. Это тета-метод, который по умолчанию имеет значение theta=1, или трапецеидальный метод для члена дрейфа. Этот метод по умолчанию имеет значение symplectic=false, но если задано значение true и theta=1/2, то это неявный метод средней точки для члена дрейфа, и он является симплектическим по распределению. Может обрабатывать все виды шума, включая недиагональный, скалярный и окрашенный. Использует эвристику 1,0/1,5 для адаптивной дискретизации по времени.

  • SKenCarp — адаптивный L-устойчивый дрейфовый неявный метод сильного порядка 1,5 для аддитивных уравнений SDE Ито и Стратоновича со слабым порядком 2. Может обрабатывать диагональный, недиагональный и скалярный аддитивный шум *†.

Методы на основе производных

Следующие методы требуют аналитических производных составляющей рассеяния.

  • PCEuler — предсказывающе-исправляющий метод Эйлера. Сильный порядок 0,5 в интерпретации Ито. Требует функции ggprime, которая определяется следующим образом.

    Это также можно понять более интуитивно в векторной/матричной форме так:

    где  — вектор шума для j-го шумового канала, а  — якобиан j-го вектора шума.

    Настройки по умолчанию для неявности дрейфа — theta=0.5, а для неявности диффузии — eta=0.5.

Методы высокого слабого порядка

Обратите внимание, что ни один из следующих методов не является адаптивным.

  • SimplifiedEM — упрощенный метод Эйлера-Маруямы слабого порядка 1,0 с фиксированным размером шага. Может обрабатывать все виды шума, включая недиагональный, скалярный и окрашенный †.

  • DRI1 — метод слабого порядка 2,0 с адаптивным шагом для SDE Ито с минимизированными постоянными погрешностями (детерминированный порядок 3). Может обрабатывать диагональный, недиагональный, некоммутативный и скалярный аддитивный шум †.

  • DRI1NM — метод слабого порядка 2,0 с адаптивным шагом для SDE Ито с минимизированными постоянными погрешностями (детерминированный порядок 3). Может обрабатывать несмешанный диагональный (то есть du[k] = f(u[k])) и скалярный аддитивный шум †.

  • RI1 — метод слабого порядка 2,0 с адаптивным шагом для SDE Ито (детерминированный порядок 3). Может обрабатывать диагональный, недиагональный, некоммутативный и скалярный аддитивный шум †.

  • RI3 — метод слабого порядка 2,0 с адаптивным шагом для SDE Ито (детерминированный порядок 3). Может обрабатывать диагональный, недиагональный, некоммутативный и скалярный аддитивный шум †.

  • RI5 — метод слабого порядка 2,0 с адаптивным шагом для SDE Ито (детерминированный порядок 3). Может обрабатывать диагональный, недиагональный, некоммутативный и скалярный аддитивный шум †.

  • RI6 — метод слабого порядка 2,0 с адаптивным шагом для SDE Ито (детерминированный порядок 2). Может обрабатывать диагональный, недиагональный, некоммутативный и скалярный аддитивный шум †.

  • RDI1WM — метод слабого порядка 1,0 с фиксированным шагом для SDE Ито (детерминированный порядок 2). Может обрабатывать диагональный, недиагональный, некоммутативный и скалярный аддитивный шум †.

  • RDI2WM — метод слабого порядка 2,0 с адаптивным шагом для SDE Ито (детерминированный порядок 2). Может обрабатывать диагональный, недиагональный, некоммутативный и скалярный аддитивный шум †.

  • RDI3WM — метод слабого порядка 2,0 с адаптивным шагом для SDE Ито (детерминированный порядок 3). Может обрабатывать диагональный, недиагональный, некоммутативный и скалярный аддитивный шум †.

  • RDI4WM — метод слабого порядка 2,0 с адаптивным шагом для SDE Ито (детерминированный порядок 3). Может обрабатывать диагональный, недиагональный, некоммутативный и скалярный аддитивный шум †.

  • RS1 — метод слабого порядка 2,0 с фиксированным шагом для SDE Стратоновича (детерминированный порядок 2). Может обрабатывать диагональный, недиагональный, некоммутативный и скалярный аддитивный шум †.

  • RS2 — метод слабого порядка 2,0 с фиксированным шагом для SDE Стратоновича (детерминированный порядок 3). Может обрабатывать диагональный, недиагональный, некоммутативный и скалярный аддитивный шум †.

  • PL1WM — метод слабого порядка 2,0 с фиксированным шагом для SDE Ито (детерминированный порядок 2). Может обрабатывать диагональный, недиагональный, некоммутативный и скалярный аддитивный шум †.

  • PL1WMA — метод слабого порядка 2,0 с фиксированным шагом для SDE Ито (детерминированный порядок 2). Может обрабатывать аддитивный шум †.

  • NON — метод слабого порядка 2,0 с фиксированным шагом для SDE Стратоновича (детерминированный порядок 4). Может обрабатывать диагональный, недиагональный, некоммутативный и скалярный аддитивный шум †.

  • SIEA — метод слабого порядка 2,0 с фиксированным шагом для SDE Ито (детерминированный порядок 2). Может обрабатывать диагональный и скалярный аддитивный шум †. Стохастическое обобщение улучшенного метода Эйлера.

  • SIEB — метод слабого порядка 2,0 с фиксированным шагом для SDE Ито (детерминированный порядок 2). Может обрабатывать диагональный и скалярный аддитивный шум †. Стохастическое обобщение улучшенного метода Эйлера.

  • SMEA — метод слабого порядка 2,0 с фиксированным шагом для SDE Ито (детерминированный порядок 2). Может обрабатывать диагональный и скалярный аддитивный шум †. Стохастическое обобщение модифицированного метода Эйлера.

  • SMEB — метод слабого порядка 2,0 с фиксированным шагом для SDE Ито (детерминированный порядок 2). Может обрабатывать диагональный и скалярный аддитивный шум †. Стохастическое обобщение модифицированного метода Эйлера.

StochasticCompositeAlgorithm

Одной из уникальных возможностей StochasticDiffEq.jl является алгоритм StochasticCompositeAlgorithm, который позволяет с минимальными накладными расходами разработать множественный метод с переключением между выбранными алгоритмами по мере необходимости. Синтаксис имеет вид StochasticCompositeAlgorithm(algtup,choice_function), где algtup — это кортеж алгоритмов StochasticDiffEq.jl, а choice_function — функция, объявляющая метод, который должен использоваться на следующем шаге. Например, можно разработать множественный метод, который использует EM(), но переключается на RKMil() при слишком малом dt:

choice_function(integrator) = (Int(integrator.dt < 0.001) + 1)
alg_switch = StochasticCompositeAlgorithm((EM(), RKMil()), choice_function)

Функция choice_function принимает integrator, поэтому в ней можно использовать все возможности, предлагаемые интерфейсом интегратора.

SimpleDiffEq.jl

Эта конфигурация предоставляет доступ к упрощенным версиям ряда решателей SDE. Они предназначены в первую очередь для проведения экспериментов и ускоряют компиляцию. По сравнению с StochasticDiffEq.jl у них есть ограничения.

  • SimpleEM — метод решения с фиксированным временным шагом для методов Эйлера-Маруямы. Работает только с неокрашенным гауссовым шумом.

Обратите внимание, что эта настройка автоматически не включена в DifferentialEquations.jl. Для использования следующих алгоритмов необходимо установить и использовать SimpleDiffEq.jl:

using Pkg
Pkg.add("SimpleDiffEq")
using SimpleDiffEq

BridgeDiffEq.jl

Bridge.jl — это набор алгоритмов с фиксированным временным шагом, написанных на Julia. Эти методы разработаны и оптимизированы для выполняемых не на месте функций, работающих с неизменяемыми типами (статическими векторами). Обратите внимание, что эта настройка автоматически не включена в DifferentialEquations.jl. Для использования следующих алгоритмов необходимо установить и использовать BridgeDiffEq.jl:

Pkg.clone("https://github.com/SciML/BridgeDiffEq.jl")
using BridgeDiffEq
  • BridgeEuler — метод Эйлера-Маруямы сильного порядка 0,5 для уравнений Ито †.

  • BridgeHeun — метод Эйлера — Гойна сильного порядка 0,5 для уравнений Стратоновича †.

  • BridgeSRK — стохастический метод Рунге — Кутты сильного порядка 1,0 без вычисления производных для скалярных (<:Number) уравнений Ито †.

Примечания

†: не выполняет шаг до конечной точки интервала. Это может привести к проблемам с обнаружением разрывов, а дискретные переменные должны быть обновлены соответствующим образом.

*: Следует отметить, что хотя в SKenCarp используется та же таблица, что и в KenCarp3, решение задачи ODE с помощью SKenCarp с заданием g(du,u,p,t) = du .= 0 займет гораздо больше шагов, чем в KenCarp3, поскольку в SKenCarp используется другое средство оценки ошибок (из-за составляющих шума), а значение по умолчанию qmax (максимально допустимое соотношение ослабления и ужесточения dt для адаптивных шагов) меньше для алгоритмов StochasticDiffEq.