Исследование решателей Переменного Шага Используя жесткую модель

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

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

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

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

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

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

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

Переменные решатели шага

Этот пример исследует производительность ode45, ode15s, ode23 и решателей переменного шага ode23t. Читать больше о конкретном решателе, например ode45, help ode45 типа в Окне Команды MATLAB.

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

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

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

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

Сохранение полной энергии

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

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

Рисунок 3: Нормализованная энергия по сравнению со временем

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

Рисунок 4: положение Маятника, как вычислено использование ode23 и ode23t

Рисунок 4 иллюстрирует различие между жестким и нежестким решателем. Каждый график показывает положение боба маятника в течение дня (каждая 15-я точка данных построена график как синяя точка). Черная точка отмечает исходное положение боба маятника, и черное пятно отмечает начальную плоскость колебания маятника. Красная линия указывает на плоскость колебания после дня. Желтая строка показывает плоскость колебания в некотором промежуточном моменте времени. Обратите внимание на то, что плоскость колебания маятника не завершает полное вращение в течение дня. То, как быстро плоскость колебания вращает, зависит от географической широты (см. детали в примере маятника Фуко). Заметьте, что амплитуда маятника в левом графике уменьшается, тогда как амплитуда в правильном графике остается постоянной. Для того же относительного допуска, RelTol=1e-5, жесткий решатель дает более точный результат, но требует большего количества времени выполнения.

Рисунок 5 показывает более подробное исследование качества работы решателей Simulink. Четыре решателя были выбраны, чтобы проиллюстрировать, как относительная погрешность и время выполнения моделирования отличается как функция относительного допуска. Можно использовать скрипт sldemo_solvers_mcode.m для более обширных тестов решателя. Этот скрипт генерирует код С от модели, чтобы ускорить моделирования. Обратите внимание на то, что скрипт может занять несколько минут, чтобы выполниться.

Рисунок 5: Относительная погрешность и время выполнения для различных настроек решателя. AbsTol = '1e-7' для всех моделирований.

Заметьте, что в этой относительной погрешности в качестве примера не уменьшается очень значительно для относительных допусков ниже 1e-6. Это - числовое ограничение решателя, которое зависит от конкретной модели. Сокращение допуска родственника решателя не обязательно улучшает точность. Необходимо оценить минимальную точность, которая требуется для проблемы, и выберите решатель соответственно, чтобы минимизировать затраты на моделирование. Например, можно хотеть знать положение боба маятника Фуко в нескольких сантиметрах. Является ненужным вычислить положение маятника в нескольких микронах, потому что вы не можете измерить положение настолько точно.

Заключения

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

Была ли эта тема полезной?