В этом примере показано поведение решателей с переменным шагом в модели маятника Фуко. Решатели Simulink ®ode45, ode15s, ode23, и ode23t используются в качестве тестовых примеров. Для решения этой задачи используются жесткие дифференциальные уравнения. Точное определение жесткости для уравнений отсутствует. Некоторые численные методы нестабильны, когда используются для решения жестких уравнений, и для получения численно стабильного решения жесткой задачи требуются очень малые ступенчатые размеры. Жесткая проблема может иметь быстро меняющийся компонент и медленно меняющийся компонент.
Маятник Фуко является примером жесткой проблемы. Маятник совершает колебание за несколько секунд (быстро меняющаяся составляющая), в то время как Земля совершает вращение вокруг своей оси за день (медленно меняющаяся составляющая). Плоскость колебаний маятника медленно вращается из-за осевого вращения Земли. Подробнее о физике маятника Фуко читайте в разделе Моделирование маятника Фуко.
При моделировании вычисляется положение маятника боб в плоскости x-y, если смотреть наблюдателем на поверхность Земли. Затем вычисляется общая энергия маятника и используется для оценки производительности различных решателей Simulink.
Маятник Фуко описывается системой связанных дифференциальных уравнений, приведенных ниже. Трение и сопротивление воздуха не учитываются (это значительно упрощает уравнения). Полное выведение этих уравнений приведено в примере маятника Фуко.






Модель, показанная на фиг.1, используется для решения дифференциальных уравнений, описывающих маятник Фуко. Напечатать sldemo_solvers в окне команд MATLAB ® для открытия модели. В примере имитируется маятник Фуко в течение 86400 секунд. Константы и начальные условия сохраняются в рабочей области модели.

Рис. 1: Маятниковая модель Фуко использует решатель для оценки производительности
В этом примере исследуется производительность ode45, ode15s, ode23, и ode23t решатели с переменным шагом. Для получения дополнительной информации об определенном решателе, например, ode45, тип help ode45 в окне команд MATLAB.

Рис. 2: Список решателей с переменным шагом, доступных в Simulink
Существуют различные способы оценки производительности решателя. Если задача имеет закрытое решение формы, можно сравнить результаты решателя с ожидаемым теоретическим результатом. Можно также отслеживать время, необходимое для моделирования модели с помощью определенного решателя.
К сожалению, нет точного теоретического решения проблемы маятника Фуко. Существует приблизительное решение закрытой формы, однако его нельзя использовать для оценки производительности решателя (см. пример маятника Фуко).
В этом примере оценивается производительность решателя путем проверки закона энергосбережения. В условиях отсутствия трения общая энергия маятника должна оставаться постоянной. Расчетная энергия маятника, однако, не останется постоянной в результате ограниченной числовой точности.
В этом примере вычисляется нормированная общая энергия маятника на каждом шаге времени. Относительная ошибка в энергии равна изменению общей энергии в ходе моделирования. В идеале относительная ошибка в энергии должна быть равна нулю, потому что энергия сохраняется. Общая энергия - это сумма потенциальной и кинетической энергии. Блок «» Нормализационная энергия «» вычисляет нормализованную энергию маятника с помощью приведенных ниже выражений.




Рис. 3: Нормализованная энергия в зависимости от времени
На фиг.3 показан график зависимости нормированной энергии от времени, рассчитанный с использованием ode23 и ode23t. Понятно, что именно в этой проблеме ode23t гораздо точнее, чем ode23. В использованном моделировании ode23нормализованная маятниковая энергия снизилась более чем на 60%. Маятник с меньшей энергией имеет меньшую амплитуду колебаний. Этот эффект можно увидеть на рис. 4, где амплитуда маятника рассчитывается ode23 уменьшается при вращении плоскости колебаний.

Рис. 4: Положение маятника, рассчитанное с использованием ode23 и ode23t
Фиг.4 иллюстрирует разницу между жестким и нерезким решателем. На каждом графике показано положение маятника боб в течение дня (каждая 15-я точка данных нанесена как синяя точка). Черная точка обозначает начальное положение маятника, а черная линия - начальную плоскость колебаний маятника. Красная линия обозначает плоскость колебаний через сутки. Желтая линия показывает плоскость колебаний в какой-то промежуточный момент времени. Заметим, что плоскость колебаний маятника не завершает полного вращения в течение суток. Скорость вращения плоскости колебаний зависит от географической широты (см. подробности в примере маятника Фуко). Обратите внимание, что амплитуда маятника на левом графике уменьшается, тогда как амплитуда на правом графике остается постоянной. Для того же относительного допуска, RelTol=1e-5, жесткий решатель дает более точный результат, но требует больше времени выполнения.
На рис. 5 показано более подробное исследование рабочих характеристик решателей Simulink. Четыре решателя были выбраны для иллюстрации того, как относительная ошибка и время выполнения моделирования изменяются как функция относительного допуска. Вы можете использовать sldemo_solvers_mcode.m скрипт для более широких тестов решателя. Этот сценарий генерирует код C из модели для ускорения моделирования. Обратите внимание, что выполнение сценария может занять несколько минут.
Building RSim executable for model.. Time taken: 16.718875 seconds. Running generated RSim executable.. Time taken: 377.240099 seconds.

Рис. 5: Относительная ошибка и время выполнения для различных настроек решателя. AbsTol = '1e-7' для всех моделей.
Обратите внимание, что в этом примере относительная ошибка не очень значительно уменьшается для относительных допусков ниже 1e-6. Это ограничение числового решателя, зависящее от конкретной модели. Уменьшение относительного допуска решателя не обязательно повышает точность. Необходимо оценить минимальную точность, необходимую для решения проблемы, и соответственно выбрать решатель, чтобы минимизировать затраты на моделирование. Например, вы можете узнать положение маятника Фуко в пределах нескольких сантиметров. Нет необходимости вычислять положение маятника в пределах нескольких микрон, потому что вы не можете точно измерить положение.
Числовые результаты моделирования могут вести себя по-разному в зависимости от настроек решателя. Это имеет решающее значение в случае жестких проблем. При работе с жесткими моделями выбирайте решатель, который даст точный результат по минимальной цене. Относительный допуск (решатели с переменным шагом) или размер шага (решатели с фиксированным шагом) должен быть достаточно малым, чтобы результат был численно стабильным. Хотя некоторые решатели более эффективны, чем другие, жесткие решатели лучше подходят для решения жестких задач. Решатели с переменным шагом являются более надежными, чем решатели с фиксированным шагом.