Итак, я пытаюсь смоделировать гидродинамическую систему, которая вызывает внезапный «скачок» значения функции в определенное время. Система решается методом Рунге-Кутты четвертого порядка.
У меня есть гидродинамическая система, в которой фазовый переход моделируется внезапным увеличением давления, которое я моделирую с помощью функции тяжелой стороны. Проблема в том, что эта ступенчатая функция вносит большую жесткость.
Другими словами, после того, как температура станет меньше T, давление уменьшится с
где является дополнительным фактором, который внезапно повышает давление.
Мне было интересно, можно ли «аппроксимировать» ступенчатую функцию как линейную функцию в непрерывную функцию, чтобы уменьшить жесткость. Я думал умножить A на линейную функцию, которая линейно возрастает со временем, пока линейная функция не достигнет 1.
Не делай так.
У вас есть то, что называется «точкой изменения».
Запустите его до того момента, когда должно произойти изменение. Затем остановите решатель. Выполните мгновенное изменение состояния. Затем перезапустите решатель.
Так много глупостей происходит, когда люди пытаются запускать решатели ОДУ с разрывами.
4-й порядок RK - хороший численный подход, но он точен только до членов четвертого порядка в разложении Тейлора вашего ряда. Пока производные функции пятого (и выше) порядка малы, все в порядке. Но когда вы вводите ступенчатую функцию или даже кусочно-линейную аппроксимацию, это предположение нарушается.
Я бы рекомендовал, как предложил Кайл Канос в своем комментарии, найти подходящую плавную функцию (гиперболический тангенс хорошо работает при правильном масштабировании), чтобы превратить ваш внезапный переход в плавный. Если это не приводит к стабильному решению, вы делаете что-то не так (трудно догадаться, что, но оно должно быть стабильным при уменьшении размера шага).
Кроме того, даже фазовые переходы, как правило, происходят не «все сразу», а несколько постепенно, поэтому плавно меняющаяся функция не так уж плоха для использования в вашей симуляции.
Кайл Канос
математический манекен
математический манекен
CuriousOne