exponenta event banner

Модель дифференциальных алгебраических уравнений

Обзор примера реакции Робертсона

Робертсон [1] создал систему автокаталитических химических реакций для тестирования и сравнения числовых решателей для жестких систем. Реакции, константы скорости (k) и скорости реакции (V) для системы даны следующим образом:

A→k1Bk1=0.04V1=k1[A]B+B→k2C+Bk2=3⋅107V2=k2[B] [B]B+C→k3A+Ck3=1⋅104V3=k3[B] [С]

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

Модель симулятора из уравнений ОДУ

Система обыкновенных дифференциальных уравнений (ОДУ) имеет следующие характеристики:

  • Все уравнения являются обычными дифференциальными уравнениями.

  • Каждое уравнение является производной зависимой переменной относительно одной независимой переменной, обычно времени.

  • Количество уравнений равно количеству зависимых переменных в системе.

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

A′=−0.04A+1⋅104BCB′=0.04A−1⋅104BC−3⋅107B2C′=3⋅107B2

Исходные условия: A = 1, B = 0 и C = 0.

Построение модели

Создание модели или открытие модели ex_hb1ode.

  1. Добавьте в модель три блока Integrator. Маркировка входов A', B', и C'и выходные данные A, B, и C соответственно.

  2. Добавьте блоки Sum, Product и Gain для решения каждой дифференциальной переменной. Например, для моделирования сигнала C',

    1. Добавление блока математической функции и подключение входа к сигналу B. Задайте для параметра Function значение square.

    2. Подключите выход блока математической функции к блоку усиления. Задайте для параметра Gain значение 3e7.

    3. Продолжайте добавлять оставшиеся члены дифференциального уравнения в модель.

  3. Смоделировать исходное состояние A путем установки параметра Initial condition для A Блок интегратора для 1.

  4. Добавление блоков для сохранения сигналов A, B, и C к переменной MATLAB yout.

Моделирование модели

Создание сценария, использующего sim для моделирования модели. Этот сценарий сохраняет результаты моделирования в переменной MATLAB yout. Поскольку моделирование имеет большой интервал времени и B первоначально изменяется очень быстро, печать значений по логарифмической шкале помогает визуально сравнивать результаты. Также, поскольку значение B мал относительно значений A и C, умножить B путем 1⋅104 перед выводом значений на печать.

  1. Введите следующие операторы в сценарий MATLAB ®. При создании собственной модели заменитеex_hblode с именем модели.

    sim('ex_hb1ode')
    yout(:,2) = 1e4*yout(:,2);
    figure;
    semilogx(tout,yout);
    xlabel('Time');
    ylabel('Concentration');
    title('Robertson Reactions Modeled with ODEs')
  2. В редакторе Simulink ® на вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings ).

    - на панели «Решатель» установите для параметра «Время остановки» значение 4e5 и решатель для ode15s (stiff/NDF).

    - На панели Импорт данных установите флажки Время и Вывод.

  3. Запустите сценарий. Обратите внимание, что все A преобразуется в C.

Модель Simulink из уравнений дисковой полки

Система дифференциальных алгебраических уравнений (DAE) имеет следующие характеристики:

  • Он содержит как обычные дифференциальные уравнения, так и алгебраические уравнения. Алгебраические уравнения не имеют никаких производных.

  • Только некоторые из уравнений являются дифференциальными уравнениями, определяющими производные некоторых зависимых переменных. Другие зависимые переменные определяются алгебраическими уравнениями.

  • Количество уравнений равно количеству зависимых переменных в системе.

Некоторые системы содержат ограничения из-за законов о сохранении, такие как сохранение массы и энергии. Если установить начальные концентрации в A = 1, B = 0 и C = 0, общая концентрация трех видов всегда равна 1, так как A + B + C = 1. Можно заменить дифференциальное уравнение для C′with следующего алгебраического уравнения, чтобы создать набор дифференциальных алгебраических уравнений (DAE).

C = 1 A − B

Дифференциальные переменные A и B однозначно определить алгебраическую переменную C.

A′=−0.04A+1⋅104BCB′=0.04A−1⋅104BC−3⋅107B2C=1−A−B

Исходные условия: A = 1 и B = 0.

Построение модели

Внесение этих изменений в модель или модель ex_hb1odeили откройте модель ex_hb1dae.

  1. Удаление блока интегратора для вычисления C.

  2. Добавьте блок Sum и установите для параметра List of signes значение + - -.

  3. Подключите сигналы A и B к минусовым входам блока Sum.

  4. Смоделировать начальную концентрацию A с блоком Константа, подключенным к плюсовому входу блока Сумма. Задайте для параметра Constant value значение 1.

  5. Подключите выход блока Sum к разветвленной линии, соединенной с блоками Product и Out.

Моделирование модели

Создание сценария, использующего sim для моделирования модели.

  1. Введите следующие операторы в сценарий MATLAB. При создании собственной модели замените ex_hbldae с именем модели.

    sim('ex_hb1dae')
    yout(:,2) = 1e4*yout(:,2);
    figure;
    semilogx(tout,yout);
    xlabel('Time');
    ylabel('Concentration');
    title('Robertson Reactions Modeled with DAEs')
  2. В редакторе Simulink на вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings).

    - на панели «Решатель» установите для параметра «Время остановки» значение 4e5 и решатель для ode15s (stiff/NDF).

    - На панели Импорт данных установите флажки Время и Вывод.

  3. Запустите сценарий. Результаты моделирования при использовании алгебраического уравнения аналогичны результатам моделирования модели с использованием только дифференциальных уравнений.

Модель симулятора из уравнений дисковой полки с использованием блока алгебраических ограничений

Некоторые системы содержат ограничения из-за законов о сохранении, такие как сохранение массы и энергии. Если установить начальные концентрации в A = 1, B = 0 и C = 0, общая концентрация трех видов всегда равна 1, так как A + B + C = 1.

Можно заменить дифференциальное уравнение для C′with алгебраического уравнения, смоделированного с помощью блока алгебраического ограничения и блока суммы. Блок алгебраического ограничения ограничивает свой входной сигнал F (z) нулем и выводит алгебраическое состояние z. Другими словами, блочный выход является значением, необходимым для получения нуля на входе. Для ввода в блок используйте следующее алгебраическое уравнение.

0 = A + B + C − 1

Дифференциальные переменные A и B однозначно определить алгебраическую переменную C.

A′=−0.04A+1⋅104BCB′=0.04A−1⋅104BC−3⋅107B2C=1−A−B

Исходные условия: A = 1, B = 0 и C=1⋅10−3.

Построение модели

Внесение этих изменений в модель или модель ex_hb1odeили откройте модель ex_hb1dae_acb.

  1. Удаление блока интегратора для вычисления C.

  2. Добавьте блок «Алгебраическая зависимость». Задайте для параметра Начальное приближение значение 1e-3.

  3. Добавьте блок «Сумма». Установите для параметра List of signes значение - + + +.

  4. Подключите сигналы A и B к плюс входам блока Sum.

  5. Смоделировать начальную концентрацию A с блоком Константа, подключенным к минусовому входу блока Сумма. Задайте для параметра Constant value значение 1.

  6. Подключите выход блока алгебраических ограничений к разветвленной линии, подключенной к входам блоков «Изделие» и «Выход».

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

Моделирование модели

Создание сценария, использующего sim для моделирования модели.

  1. Введите следующие операторы в сценарий MATLAB. При создании собственной модели замените ex_hbl_acb с именем модели.

    sim('ex_hb1dae_acb')
    yout(:,2) = 1e4*yout(:,2);
    figure;
    semilogx(tout,yout);
    xlabel('Time');
    ylabel('Concentration');
    title('Robertson Reactions Modeled with DAEs and Algebraic Constraint Block')
  2. В редакторе Simulink на вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings).

    - на панели «Решатель» установите для параметра «Время остановки» значение 4e5 и решатель для ode15s (stiff/NDF).

    - На панели Импорт данных установите флажки Время и Вывод.

  3. Запустите сценарий. Результаты моделирования при использовании блока алгебраической зависимости совпадают с результатами моделирования модели с использованием только дифференциальных уравнений.

Использование блока алгебраического ограничения создает алгебраический цикл в модели. Если для параметра алгебраического цикла задано значение warning (на вкладке Моделирование (Modeling) щелкните Настройки модели (Model Settings), а затем выберите Диагностика (Diagnostics)), во время моделирования в средстве просмотра диагностики отображается следующее сообщение.

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

Ссылки

[1] Робертсон, H. H. «Решение ряда уравнений темпа реакции». Численный анализ: введение (J. Walsh ed.). Лондон, Англия: Academic Press, 1966, стр. 178-182.

Связанные примеры

Подробнее