Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Labs Matlab / Lab5 / index3

.htm
Скачиваний:
49
Добавлен:
01.06.2015
Размер:
37.72 Кб
Скачать

3 2. Численное решение обыкновенных дифференциальных уравненийИнтерфейс MATLAB

 

2.1. Численное решение задачи Коши для обыкновенного дифференциального уравнения 1-го порядка

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

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

Постановка задачи:

Требуется найти функцию у = у(х), удовлетворяющую уравнению

                                                       (1)

и принимающую при х = х0 заданное значение у0:

.                                                         (2)

При этом решение необходимо получить в интервале х0 £ х £ хк. Из теории дифференциальных уравнений известно, что решение у(х) задачи Коши (1), (2) существует, единственно и является гладкой функцией, если правая часть F(x, y) удовлетворяет некоторым условиям гладкости.

Численное решение задачи Коши методом Рунге-Кутта 4-го порядка заключается в следующем. На заданном интервале [х0, хк] выбираются узловые точки. Значение решения в нулевой точке известно у(х0) = у0. В следующей точке у(х1) определяется по формуле

,                                         (3)

здесь

    (4)

 

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

Пример 1. Решить задачу Коши

.                           (5)

Точное решение имеет вид

.

Выполним решение данной задачи с помощью программы ode45. Вначале в М-файл записываем правую часть уравнения (5), сам М-файл оформляется как файл – функция, даем ему имя F и сохраняем (рис.1):

Рис.1 Окно редактора-отладчика с скрипт-файлом функции

 

Для численного решения задачи Коши в другом окне редактора-отладчика скрипт-файлов набираются следующие операторы (рис.2):

Рис.2 Окно редактора-отладчика с скрипт-файлом программы

 

Результаты решения. График решения задачи Коши (5) показан на рис. 3. Численное решение представлено в таблице 1, где приведены только отдельные узловые точки. В программе ode45 по умолчанию интервал разбивается на 40 точек с шагом h = 1/40 = 0.025.

Рис. 3  График решения задачи Коши (5)

 

Таблица 1

хi

Метод Рунге-Кутта

Точное решение

0.0

1.0

1.0

0.1

1.2221

1.2221

0.2

1.4977

1.4977

0.3

1.8432

1.8432

0.4

2.2783

2.2783

0.5

2.8274

2.8274

0.6

3.5202

3.5202

0.7

4.3928

4.3928

0.8

5.4895

5.4895

0.9

6.8645

6.8645

1.0

8.5836

8.5836

 

Как следует из таблицы1 численное решение программой ode45 дает близкое к точному (по крайней мере первые 5 значащих цифр совпадают ).

 

 

2.2. Численное решение задачи Коши для системы обыкновенных дифференциальных уравнений В системе MatLab предусмотрены специальные средства решения задачи Коши для систем обыкновенных дифференциальных уравнений, заданных в форме где F - вектор правых частей ситемы, x - вектор нетзвестных функций.

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

[T, X]=solver('F', [DT], X0, ...),

где DT - диапазон интегрирования, X0 - вектор начальных значений, F - имя функции вычисления правых частей системы (и соответственно имя m-файла), solver - имя используемой функции (решателя). Например:

·        ode45 - метод Рунге-Кутта 4 и 5-го порядков,

·        ode23 - тот же метод 2 и 3-го поряд-ков,

·        ode113 - метод Адамса - для нежестких систем,

·        ode23s, ode15s - для жестких систем.

 

Версии решателя различаются используемыми методами (по умолчанию относительная погрешность 10-3 и абсолютная 10-6) и соответственно временем и успешностью решения. Под жесткостью здесь понимается повышенное требование к точности - использование минимального шага во всей области интегрирования. При отсутствии информации о жесткости рекомендуется попытаться получить решение посредством ode45 и затем ode15s.

Если диапазон DT задан начальным и конечным значением [to, tn], то количество элементов в массиве Т (и в массиве решений Х) определяется необходимым для обеспечения точности шагом; при задании DT в виде [to, t1, t2,..., tn] или [to:Δt:tn] - указанными значениями.

 

 

Пример 2. Для иллюстрации решения системы и ряда нестандартных возможностей рассмотрим задачу выравнивания цен по уровню актива в следующей постановке.

Предположим, что изменение уровня актива у пропорционально разности между предложением s и спросом d, т.е. y'=k(s-d), k>0, и что изменение цены z пропорционально отклонению актива у от некоторого уровня y0, т.е. z'=-m(y-y0), m>0. Естественно, что предложение и спрос зависят от цены, например, s(z)=az+s0, d(z)= d0 - cz. Соответственно возникает система дифференциальных уравнений

y' = k (s(z)-d(z))

z' = - m (y-y0) .

Вычисление правых частей оформляем функцией:

Если выполнить решение при y0= 19, z0=2

будет выведена таблица значений искомых функций:

ans =

    0        19.0000    2.0000

    0.3000   20.7758    1.9732

    0.6000   22.4102    1.8949

    0.9000   23.7687    1.7715

    1.2000   24.7427    1.6126

    1.5000   25.2570    1.4313

    1.8000   25.2663    1.2422

    2.1000   24.7702    1.0605

    2.4000   23.8116    0.9005

    2.7000   22.4655    0.7755

    3.0000   20.8396    0.6955

    3.3000   19.0658    0.6666

    3.6000   17.2877    0.6915

    3.9000   15.6473    0.7681

    4.2000   14.2751    0.8901

    4.5000   13.2847    1.0477

    4.8000   12.7551    1.2284

    5.1000   12.7257    1.4176

    5.4000   13.2023    1.5998

    5.7000   14.1467    1.7606

    6.0000   15.4802    1.8873

    6.3000   17.0969    1.9691

    6.6000   18.8674    1.9997

    6.9000   20.6490    1.9770

    7.2000   22.2967    1.9023

    7.5000   23.6788    1.7817

    7.8000   24.6864    1.6252

    8.1000   25.2349    1.4452

    8.4000   25.2805    1.2561

    8.7000   24.8222    1.0733

    9.0000   23.8953    0.9115

 

и их графики (рис. 4).

 

Эта система уравнений относится к числу т.н. автономных, ибо независимая переменная в нее явно не входит; соответственно может быть установлена связь между найденными решениями: в параметрическом задании линия y=y(t), z=z(t) определяет фазовую кривую (траекторию) системы - гладкую кривую без самопересечений, замкнутую кривую или точку, которая позволяет судить об устойчивости системы.

Так, установив опции (opt) к построению двумерного фазового портрета (функция odephas2) и номера переменных состояния :

 

>> opt=odeset('OutputSel',[1 2], 'OutputFcn','odephas2');

>> [T,Y]=ode45('odu2', [0:0.3:9],[19 2],opt);

 

получаем фазовый портрет системы, свидетельствующий о ее устойчивости - гармонии между активом и ценами (рис.5).

Рис.4

Рис.5

 

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

Эта модель Вольтерра-Лотка с логистической поправкой описывается системой уравнений

 

с условиями заданной численности «жертв» и «хищников» в начальный момент t=0.

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

 

 

 

Рис.6 (α =0)

Рис.7 (α =0.1)

 

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

 

выступает в виде:

 

Рис.8.

Рис.9.

 

 

Соседние файлы в папке Lab5