Решение задачи Коши для обыкновенных дифференциальных уравнений первого порядка в 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].
 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ ОРИГИНАЛ   След >