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

0 ... 101 102 103 104 105 106 107 ... 365

В нашем примере решение задачи Коши для системы дифференциальных уравнений, соответствующей исходной задаче для дифференциального уравнения второго порядка, было получено при помощи солвера odeii3, который основан на методе Адамса—Бэшфорта—Милтона. Кроме солвера odell3, MATLAB имеет еще ряд солверов для задачи Коши: ode45, ode23, □dei5s, Dde2 3s, ode23t, ode23tb, интерфейс которых не отличается от odell3.

J Примечание

Вызов солвера с одним и двумя выходными аргументами приводит к одинаковому выбору узлов на заданном отрезке. Единственный солвер ode45 добавляет промежуточные точки и сам осуществляет интерполяцию в случае обращения к нему с двумя выходными аргументами.

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

Решение уравнений Лотки—Вольтерры

В качестве объекта исследования возьмем модель Лотки—Вольтерры борьбы за существование. Обозначим: >i (г) — число жертв, Уг() — число хищников. Число хищников и жертв в течение времени / изменяется по закону

где Р— увеличение числа жертв в отсутствие хищников, R— уменьшение числа хищников в отсутствие жертв. Вероятность поедания хищником жертвы пропорциональна их числу У\У2> при этом слагаемое ~РУ\У2 соответствует вымиранию жертв, а г-УУг — появлению хищников. Возьмите для примера P-O.S, R — l, р — г = 0.001, считайте, что в начальный момент времени было 1000 жертв и 1100 хищников. При помощи солвера odeli3 решите эту систему дифференциальных уравнений для f<100, а затем используйте ode23s (задание его аргументов производится аналогично odeil3). Выведите полученные при помощи odeli3 и ode23s решения на разные графики, и сравните их. Листинг 6.16 содержит текст необходимых функций.

(6.5)


Как известно, точным решением задачи Лотки—Вольтерры на плоскости уу2 является замкнутая кривая. Графики приближенных решений, приведенные на рис. 6.9, сильно отличаются друг от друга, хотя вычисления по умолчанию в odell3 и ode23s происходят с одинаковой точностью. Приближенное решение, полученное солвером ode23s, намного точнее, чем в случае odeil3. Дело в том, что уравнения Лотки—Вольтерры являются примером так называемых жестких систем, для решения которых в пакете MATLAB имеются специальные солверы. Один из них — ode23s. В справочной системе MATLAB приведен другой пример жесткой задачи — уравнение Ван-дер-Поля с большим значением параметра, для исследования которой следует применять специальный солвер odeiSs (см. разд. Mathematics: Examples: Differential Equations - Initial Value Problems, подразделы The van der Pol Equation, u. = 1000 (Stiff) и Stiff Problem (van der Pol Equation) справочной системы MATLAB).

Рис. 6.9. Сравнение солверов odell3 и ode23s

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


Листинг 6.16. Файл-функция для сравнения ode45 и ode23s

............................................................................................................

function comparesolvers

% формирование вектора начальных условий

Y0 = [1000; 1100J;

% вызов солвера odell3

[Т, Y] = odell3(@LotVol, [0 100], Y0) ;

% вывод графика решения исходного дифференциального уравнения

% в виде параметрической кривой

subplotfl, 2, 1)

plot(Y(:, 1), Y(:, 2))

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

title(Решение уравнений Лотки—Вольтерры (odell3)) xlabel(жертвы) ylabel(хищники) %вызов солвера ode23s

[Т, Y] = ode23s(@LotVol, [0 100], Y0);

% вывод графика решения исходного дифференциального уравнения

% в виде параметрической кривой

subplot(1, 2, 2)

plot[Y(:, 1), Y(:, 2))

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

title(Решение уравнений Лотки-Вольтерры (ode23s)) xlabel(жертвы) ylabel(хищники)

% подфункция вычисления правых частей уравнений function F = LotVoKt, у)

F = [0.8*у<1> - 0.001*у(1)*у(2); -1.0*у<2) + 0.001*у(1)*у(2)];

Выбор солвера для решения задачи Коши

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



0 ... 101 102 103 104 105 106 107 ... 365