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

0 ... 111 112 113 114 115 116 117 ... 365

Отслеживание событий и обработка получаемых в процессе решения значений, в том числе и визуализация приближенного решения, требуют привлечения свойств Events, OutputFcn и OutputSel. Для вывода суммарной информации о вычислительном процессе следует воспользоваться свойством

Stats.

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

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

уравнений с запаздывающим аргументом и их обсуждение приведены в справочной системе MATLAB в пунктах разд. Mathematics: Differential Equations: Initial Value Problems for DDEs.

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

Этот процесс описывается системой дифференциальных уравнений с запаздывающим аргументом

Возьмите т — 0.1, а значения коэффициентов те же, что и для рассмотренных выше уравнений Лотки—Вольтерры (6.5): / = 0.8, R — \t р = г = 0.001. Будем считать предысторию постоянной— 1000 жертв и 1100 хищников. Запрограммируйте функции: LotVolDel—для вычисления правой части системы и LotVolHis — для предыстории решения, причем предусмотрите возможность указания значений параметров при вызове солвера после входного аргумента options. Решите систему дифференциальных уравнений с запаздыванием на временном отрезке [0. 50] и сравните полученный ре-

л()=/,7,()-/7(Ь();

Уг () = -R- Уг () + • М - Т)Л (<"

(6.10)


зультат с решением аналогичной системы без запаздывания. При решении систем установите одинаковую относительную точность, к примеру 10 5. Тексты функций приведены в листинге 6.29, а получающийся после выполнения файл-функции график — на рис. 6.18. При вызове dde23 постоянную предысторию можно было бы задать вектором вместо указателя на функцию LotVolHis. Мы использовали функцию для того, чтобы подчеркнуть необходимость дополнительных входных аргументов в случае, когда правая часть системы дифференциальных уравнений зависит от параметров. Разумеется, этот же пример можно выполнить и с помощью вложенных или анонимных функций.

I Листинг 6.29. Файл-функция для сравнения двух моделей

function LotVol2(P, р, R, г)

с; п-»гп: системы — :Jducku: triri. vpaE : ;шй -. rano-г ,n rw ;л

options = ddeset(RelTol, 1.0e-05); % установка относительной точности

% вызов солвера с указанием коэффициентов системы

sol = dde23(@LotVolDel, 0.1, SLotVolHis, [0 50], options, P, p, R, r); plot(sol.у(1, :), sol.у(2, :), :) % вывод графика приближенного решения

% решение системы дифференциальных уравнений без запаздывания

options = odeset(RelTol, 1.0е-05) % установка относительной точности

i вызов солвера с указанием коэффициентов системы

[Т, Y] = ode23s(@LotVolPar, [0 50], [1000 1100], options, Р, р, R, г); hold on

plot(Y(:, 1),Y{:, 2)) % вывод графика приближенного решения

% вывод пояснений на график

title(Модели системы "хищник-жертва")

xlabel(жертвы)

ylabel(хищники)

legend(c запаздыванием, без запаздывания)

% подфункция LotVolDel для вычисления правой части системы (6.10)

function F = LotVolDel(t, у, Z, Р, р, R, г)

F = [F*y<D - р*у(1)*у(2); -R*y(2) + r*Z(l)*Z(2)J;

% подфункция LotVolKis для вычисления предыстории решения

function Н = LotVolHis(t, Р, р, R, г)

H = [1000; 1100];


3000

2500 •

20Ш

. 1500

1000

500

Модели системы "хищник-жертва"

—с запаздыванием

—без запаздывания

0500 1000 1500 2000 2500 3000 3500

жертвы

Рис. 6.18. Решение уравнения Лотки—Вольтерры (6.10) с запаздывающим аргументом

Решение граничных задач

В данном разделе на простых примерах иллюстрируются возможности решения граничных задач для обыкновенных дифференциальных уравнений и систем дифференциальных уравнений первого порядка в MATLAB при помощи солвера bvp<3c. Описаны возможности солвера для решения задач с особенностями и нахождения неизвестных параметров дифференциальных уравнений.

Схема решения

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

удовлетворяющую на отрезке [a, b] дифференциальному уравнению

/ = /(*. У. у)

и граничным условиям

а-у(а) + $у(а) = А, у-у(Ь) + 8-у{Ь) = В.



0 ... 111 112 113 114 115 116 117 ... 365