Решение задачи Коши для обыкновенных дифференциальных уравнений первого порядка в Matlab
Для решения задачи Коши в Matlab существует семь функций: ode45, ode23, odell3, odelSs, ode23s, ode23t, ode23tb. Методика их использования одинакова. В общем случае вызов функции для решения задачи Коши производится следующим образом (здесь под solver понимается одна из перечисленных выше функций):
[Т, У] = solver( odefun, interval, Y0, options), где
- • odefun - функция для вычисления правой части системы уравнений;
- • interval - вектор значений аргумента, при которых ищется решение;
- • Y0 - заданный вектор начальных значений искомой функции;
- • options - структура для управления параметрами и ходом вычислительного процесса.
Возвращаются массив Т с координатами узлов сетки, в которых найдено решение, и матрица решений Y, каждый столбец которой является значением элемента вектор-функции решения в узлах сетки.
Например, для решения задачи Коши в системе Matlab можно использовать функцию ode45 следующего синтаксиса:
[х,у] = ode45('fname', [a:h:b],yO).
Параметры:
- • х - вектор значений аргумента, при которых ищется решение;
- • у - вектор искомых значений решения;
- • fname - имя М-файла, в котором определена одноименная функция - правая часть уравнения;
- • [а, Ь] - отрезок, на котором ищется решение;
- • h - шаг изменения (приращения) аргумента х;
- • хО, у0 - начальное условие (очевидно, а = хО).
Пример. Решить задачу Коши:
ху = у +—, у(х0)= 2
X
на отрезке [11.6; 12.2] с шагом h = 0.2.
Вначале приведем заданное дифференциальное уравнение к
'У 8 о каноническому виду: у = —. Затем откроем новое окно
X X
редактора системы Matlab и наберем в нем следующие строки:
function f = equ(x, у)
% определение левой части дифференциального.
уравнения
f = у! х + 8/хл2;
Сохранив набранный М-файл под именем equ.m, перейдем в командное окно системы и наберем в нем строку:
»[х, у] = ode45('equ', [11.6:0.2:12.2], 2)
После нажатия клавиши Enter в командном окне увидим:
х =
11.6000 11.8000 12.0000 12.2000
У =
2.0000 2.0463 2.0924 2.1382
Теперь рассмотрим пример решения задачи Коши для системы ОДУ 1-го порядка.
Пример. Решить задачу Коши:
У = cos(yz), Z = sin(y + xz y(l)=l, 41) = 2
на отрезке [1,6] с шагом h = 0.5.
Создадим файл-функцию следующего вида:
function д = syst(x, w)
% правая часть системы
д = [cos(w(1)*w(2)); s/n(w(1) + и<2)*х)];
Сохраним М-файл под именем syst.m. Откроем новое окно редактора системы Matlab и наберем в нем следующие строки:
и/0 = [1; 2]; х = [1:0.5:6] % значения аргумента
[х, w] = ode113(@syst, x,w0) % искомые значения решения % графики интегральных кривых plot(x, и/, -*); grid on, legend^, 'z', 2)
Результат числового решения: х =
- 1.00 1.500 2.00 2.50 3.00 3.50 4.00 4.50 5.00 5.50 6.00 и/ =
- 1.00 0.88 0.90 1.04 1.25 1.53 1.87 2.26 2.71 3.19 3.69 2.00 1.88 1.55 1.17 0.84 0.59 0.4 0.25 0.13 0.03 -0.06 Здесь w = [w( 1), w(2)] = [у, z].