8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 108 109 110 111 112 113 114 ... 365

grid on

legend Су {2});

subplot(3, 1, 3); plottt, y(:, 3)); grid on

legend (y {3> , 4); end

После выполнения файл-функции из листинга 6.24 получаются результаты, представленные на рис 6.15.

Рис. 6.15. Решение задачи химической кинетики (6.7)

Подробные сведения о настройках солверов для решения задач с матрицей масс приведены в справочной системе MATLAB. Управляющая структура позволяет задать кроме матрицы масс еще ряд опций, в частности: степень зависимости матрицы масс от неизвестных, расположение ее ненулевых элементов для задач большой размерности и информацию о вырожденности матрицы. В разд. Mathematics: Differential Equations: Initial Value Problems for


ODEs and DAEs: Examples: Applying the ODE Initial Value Problem Solvers

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

Обратимся теперь к решению задачи Коши для дифференциальных уравнений вида F(t, Y, Y)=0, не разрешенных относительно старшей производной, при помощи солвера odeisi. Обращение к нему несколько отличается от случая рассмотренных выше солверов, поскольку во входных его аргументах должно быть задано значение YpO производной решения в начальный момент времени г" v/0):

[Т, Y] = odel5i(odefun, interval, yo, YpO, options)

Смысл остальных его аргументов тот же самый: odefun — функция для вычисления вектор-функции F; interval — отрезок, по которому производится интегрирование, или упорядоченный вектор значений независимой переменной, для которых следует найти решение; yo — вектор начальных значений Y{t)\ options— управляющая структура. Моменты времени и

найденное решение в них записываются в вектор-столбец т и матрицу y. Возможен вывод результата и в структуру с полями х и у, которая в дальнейшем используется для вычисления решения в произвольной точке из отрезка интегрирования (см. разд. "Решение задачи Коши"этой главы).

Возникает вопрос, откуда взять начальное значение для производной, которое не может быть произвольным, поскольку в начальный момент времени /(, требуется выполнение условия совместности F(t0,Y(t0), Y{t0)) = 0. Для приближенного удовлетворения этому условию служит функция decic. В достаточно общем случае обращение к ней выглядит следующим образом

[YO.YpO] = decicfodefun, tO, YOInit, YOFlag, YpOInit, YpOFlag)

и подразумевает, что заданы начальные приближения к к(г0) и Y{t0) соответственно в векторах YOinit и YpOInit. Каждому из них сопутствует свой флаг — векторы YOFlag и YpOFlag той же длины, они указывают компоненты векторов YOinit и YpOInit, которые могут изменяться при удовлетворении условия согласования. Для запрета изменения некоторой компоненты решения пли производной следует установить элемент вектора флага с номером компоненты в 1, а для разрешения в 0. Действительно, не всегда допустимо произвольное изменение начальных значений. В задаче Коши вектор Y(t0) задан и требуется найти подходящее Y(rQ). Для этого следует

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


\ Примечание я

По умолчанию условия совместности удовлетворяются с относительной точностью КН. Для изменения точности следует обратиться к функции decic с седьмым входным аргументом — управляющей структурой options, предварительно сформировав ее при помощи odeset (поле RelTol отвечает за относительную погрешность). Для контроля выполнения условий совместности полезно вызвать функцию decic с третьим входным аргументом, в который заносится невязка, т. е. значение

F(t0, ¥{г0), К(/п)) для приближенно найденных (чз), (о)-

Продемонстрируем использование солвера odeisi на примере уравнения Клеро:

у = y-t + Л(у).

Известно, что у = Q + /?(C) есть общее решение этого уравнения, с ним мы и будем сравнивать получаемое приближенное решение. Рассмотрим задачу Коши для уравнения Клеро при h(s) = es:

y = yt + ey y(0) = e, t& [0,5] с точным решением у = х + е.

Поскольку это дифференциальное уравнение первого порядка, то неизвестной является всего одна функция, и при обращении к decic в качестве флагов используются числа YOFlag = 1 и YpOFlag = о (листинг 6.25). После выполнения функции decic полученные начальные значения для функции и ее производной выводятся в командное окно. Обратите внимание, что начальное значение функции не изменилось из-за того, что соответствующий флаг равен единице, а начальное значение производной найдено достаточно хорошо (точное значение равно единице) так, что невязка при удовлетворении условиям совместности имеет порядок Ю-9. Вычисленные величины yo и YpO мы передаем в качестве входных аргументов солвера odeisi и сравниваем приближенное решение с точным (рис. 6.16).

I Листинг 6.25. Использование солвера odelSx для решения уравнения Клеро

function klero

tO = 0; ft начальная точка отрезка интегрирования [0, 5] YOinit = ехр(1); % заданное начальное условие

YOFlag = 1; % начальное значение искомой функции не должно измениться ft при удовлетворении условиям совместности



0 ... 108 109 110 111 112 113 114 ... 365