Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Аппроксимация 2012_верстка.doc
Скачиваний:
47
Добавлен:
27.11.2019
Размер:
2.84 Mб
Скачать

Решение систем оду первого порядка

К системам ОДУ первого порядка приходят при описании самых разнообразных задач биологии, физики, химии, химической технологии, экономики и т. д. Для решения систем ОДУ используется метод Рунге-Кутта, последовательно применяемый к каждому дифференциальному уравнению. Однако существуют задачи, которые невозможно решить этим методом, они называются «жесткими». Чаще всего они встречаются при решении задач химической кинетики, в которых скорости отдельных стадий различаются очень значительно, например в миллионы раз. Для их решения используются специальные алгоритмы, так называемые неявные методы. Интересно отметить, что этими методами можно решать и нежесткие, обычные системы ОДУ, однако в жестких методах приходится задавать матрицу частных производных всех функций, что вызывает у некоторых пользователей затруднения и является в некоторых случаях причиной ошибок при формировании матрицы Якоби. Поэтому рекомендуем, сначала попробовать решить задачу простым методом Рунге-Кутта, а в случае неудачи использовать методы решения «жестких» систем.

Решим совместно уравнения (67), описывающие влияние температуры на изменение энтропии и энергии Гиббса в химической реакции. Правые части этой системы являются функцией температуры:

(68)

(69)

Систему дифференциальных уравнений задают в матрице D, куда записывают правые части дифференциальных уравнений (67). В данном случае мы поместили сюда выражения для rS0T из уравнения (68) и выражение для rСр из уравнения (69). Далее в матрицу y0 записываем начальные условия. Решение получаем в виде матрицы U с помощью встроенной функции rkfixed(y0, t0,t1,M,D), где t0 и t1 – начальное и конечное значение аргумента, для нашего случая – температура; М – количество интервалов, на которое разбивается интервал интегрирования, для нашего случая выбрано М=8, что дает вычисление функций при температурах кратных 50 К. Именно для этих температур и можно получить решение.

В программе 32 даны три варианта получения решения. Первый – вывод всей матрицы решения. Видно, что в первом столбце (он считается нулевым) – значения аргумента (у нас – температура), во втором (с номером 1) – значение первой искомой функции (у нас – rG0T), в третьем (с номером 2) – значение второй искомой функции (у нас – rS0T). Для построения графиков используются отдельные столбцы матрицы (программа 33).

П рограмма 33

Решение «жестких» систем оду

Признаками того, что к системе ОДУ следует применить специальные методы решения могут быть следующие – решение обычными методами приводит к неверным результатам – величины значений переменных не имеют физического смысла; за разумное время счета нельзя получить результат с требуемой точностью; промежуточные результаты выходят за допустимые пределы значений переменных и происходит выход из программы с предупреждением о переполнении; в решении наблюдается «разболтка», то есть неестественные колебания решения, как правило, с увеличивающейся амплитудой.

Несмотря на то, что решение прямых задач химической кинетики – получение зависимости концентрации участников реакции от времени – можно решить обычными способами типа Рунге-Кутта, именно при решении таких задач возникают затруднения. Чтобы этого не случилось все чаще и чаще даже простые системы дифференциальных уравнений решают методами, пригодными для решения жестких систем. Так мы поступим и в нашем курсе.

Для решения «жестких» систем дифференциальных уравнений в МаthCad есть два метода со встроенными функции Stiffb и Stiffr c одинаковыми параметрами (y0,t0,t1,M,D,J), где y0,t0,t1,M,D имеют тот же смысл, что и при использовании метода Рунге-Кутта – матрица начальных условий, начальное и конечное значение аргумента, количество интервалов и вектор правых частей дифференциальных уравнений. Последний параметр J – матрица Якоби, составленная из частных производных правых частей уравнений соответственно по аргументу и по каждой функции. В общем виде для системы:

(70)

(71)

Как получить систему дифференциальных уравнений (70) и и сформировать из нее матрицу Якоби, рассмотрим на примере одного частного случая. Кинетику химической реакции превращения вещества A в С, при этом из А медленно образуется неустойчивое промежуточное вещество В, которое может быстро распадаться как на начальное вещество, так и на продукт реакции (константы скорости отдельных стадий приведены над соответствующими стрелками):

0.1 1000

A  B  C (72)

100

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

  • Скорость реакции (изменения концентрации вещества) пропорциональна константе скорости (+, если концентрация увеличивается и если уменьшается) и концентрации начальных веществ;

  • Скорость изменения концентрации вещества складывается (алгебраически) из скоростей реакций, в которых участвует это вещество.

Тогда имеем:

(73)

В соответствии с уравнением (71) для этой системы ОДУ имеем следующую матрицу Якоби:

(74)

Первый столбец в матрице Якоби для решения прямой кинетической задачи всегда состоит из нулей, так как в правой части нет , поэтому частная производная равна нулю.

Обозначив концентрации веществ через [A]=y0, [B]=y1, [C]= y2 нетрудно написать программу для решения этой системы ОДУ и построить графики изменения концентраций участников реакции во времени. Решим эту систему при условии, что в начальный момент времени концентрация вещества А равна 1, а промежуточного и конечного вещества в системе нет.

Программа 34

Из результатов работы программы видно, что концентрация вещества А уменьшается, а С – увеличивается. Концентрация промежуточного вещества очень мала, почти в миллион раз меньше А и С (это как раз и указывает на «жесткость» системы). Концентрация промежуточного вещества сначала увеличивается, а потом падает.