exponenta event banner

Изучение решателей переменных шагов с использованием жесткой модели

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

Маятник Фуко является примером жесткой проблемы. Маятник совершает колебание за несколько секунд (быстро меняющаяся составляющая), в то время как Земля совершает вращение вокруг своей оси за день (медленно меняющаяся составляющая). Плоскость колебаний маятника медленно вращается из-за осевого вращения Земли. Подробнее о физике маятника Фуко читайте в разделе Моделирование маятника Фуко.

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

Маятниковая модель Фуко

Маятник Фуко описывается системой связанных дифференциальных уравнений, приведенных ниже. Трение и сопротивление воздуха не учитываются (это значительно упрощает уравнения). Полное выведение этих уравнений приведено в примере маятника Фуко.

$$
\ddot{x} = 2\Omega \sin{\lambda} \dot{y} - \frac{g}{L} x
$$

$$
\ddot{y} = - 2\Omega\sin{\lambda} \dot{x} - \frac{g}{L} y
$$

$$\Omega = \mbox{ Earth's angular velocity of rotation around its axis}$$

$$\lambda = \mbox{ geographic latitude}$$

$$g = \mbox{ acceleration of gravity}$$

$$x \mbox{ and } y = \mbox{ coordinates of the pendulum bob}$$

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

Рис. 1: Маятниковая модель Фуко использует решатель для оценки производительности

Решатели переменных шагов

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

Рис. 2: Список решателей с переменным шагом, доступных в Simulink

Оценка производительности решателя

Существуют различные способы оценки производительности решателя. Если задача имеет закрытое решение формы, можно сравнить результаты решателя с ожидаемым теоретическим результатом. Можно также отслеживать время, необходимое для моделирования модели с помощью определенного решателя.

К сожалению, нет точного теоретического решения проблемы маятника Фуко. Существует приблизительное решение закрытой формы, однако его нельзя использовать для оценки производительности решателя (см. пример маятника Фуко).

Общее энергосбережение

В этом примере оценивается производительность решателя путем проверки закона энергосбережения. В условиях отсутствия трения общая энергия маятника должна оставаться постоянной. Расчетная энергия маятника, однако, не останется постоянной в результате ограниченной числовой точности.

В этом примере вычисляется нормированная общая энергия маятника на каждом шаге времени. Относительная ошибка в энергии равна изменению общей энергии в ходе моделирования. В идеале относительная ошибка в энергии должна быть равна нулю, потому что энергия сохраняется. Общая энергия - это сумма потенциальной и кинетической энергии. Блок «» Нормализационная энергия «» вычисляет нормализованную энергию маятника с помощью приведенных ниже выражений.

$$ E = \frac{v_x^2 + v_y^2}{2} + g( L - \sqrt{L^2 - x^2 - y^2} ) $$

$$E_{normalized}(t) = \frac{E(t)}{E(0)}$$

$$E(0) = \mbox{ initial total energy}$$

Рис. 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. Это ограничение числового решателя, зависящее от конкретной модели. Уменьшение относительного допуска решателя не обязательно повышает точность. Необходимо оценить минимальную точность, необходимую для решения проблемы, и соответственно выбрать решатель, чтобы минимизировать затраты на моделирование. Например, вы можете узнать положение маятника Фуко в пределах нескольких сантиметров. Нет необходимости вычислять положение маятника в пределах нескольких микрон, потому что вы не можете точно измерить положение.

Заключения

Числовые результаты моделирования могут вести себя по-разному в зависимости от настроек решателя. Это имеет решающее значение в случае жестких проблем. При работе с жесткими моделями выбирайте решатель, который даст точный результат по минимальной цене. Относительный допуск (решатели с переменным шагом) или размер шага (решатели с фиксированным шагом) должен быть достаточно малым, чтобы результат был численно стабильным. Хотя некоторые решатели более эффективны, чем другие, жесткие решатели лучше подходят для решения жестких задач. Решатели с переменным шагом являются более надежными, чем решатели с фиксированным шагом.