Использование решателей систем обыкновенных дифференциальных уравнений (ОДУ) в графическом виде в MatLAB

Все решатели могут решать системы уравнений явного вида y’ = F(t, y). Решатели ode15s, ode23s, ode23t, ode23tb могут решать уравнения неявного вида My’ = F(t, y).

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

§ F – название ODE-файла, то есть функции от t и y, которая возвращает вектор-столбец;

§ tspan – вектор, определяющий интервал интегрирования [to tfinal]. Для получения решений в конкретные моменты времени to, t1, …, tfinal (расположенные в порядке уменьшения или увеличения), нужно использовать tspan = [t0 t1 … tfinal];

§ y0 –вектор начальных условий;

§ T, Y – матрица решений Y, где каждая строка соответствует времени, возвращенном в векторе-столбце T.

В самом простом виде решатель выглядит так:

[T, Y] = solver(‘F’, tspan, y0) интегрирует систему дифференциальных уравнений вида y’ = F(t, y) на интервале tspan с начальными условиями y0. ‘F’ – строка, содержащая имя ODE-файла. Функция F(t, y) должна возвращать вектор-столбец. Каждая строка в массиве решений Y соответствует времени, возвращаемом в векторе-столбце T.

Решатель систем ОДУ дает возможность получать решения систем из n уравнений. Система ОДУ может быть как однородной, так и неоднородной. Решение сводится к следующему:

1) Создание m-файла. Независимо от вида системы он имеет вид:

function dy = solverDE(t, y)

dy = zeros(n, 1);

dy(1) = f1 (t, y(1), y(2), …, y(n));

dy(2) = f2 (t, y(1), y(2), …, y(n));

……………………………

dy(n) = fn (t, y(1), y(2), …, y(n));

2) Получение решения и сопровождающий его график:

>> [T, Y] = solver(‘solverDE’, [t0 tfinal], [y10 y20 … yn0];

>> plot(T, Y)