Дифференциальные уравнения и системы уравнений
Для решения дифференциальных уравнений и систем в MATLAB предусмотрены следующие функции ode45(f, interval, X0 [, options]), ode23(f, interval, X0 [, options]), ode113(f, interval, X0 [, options]), odel5s(f, interval, X0 [, options]), ode23s(f, interval, X0 [, options]), ode23t (f, interval, X0 [,options]) и ode23tb(f, interval, X0 [, options]).
Входными параметрами этих функций являются:
- f - вектор-функция для вычисления правой части уравнения системы уравнений
- interval - массив из двух чисел, определяющий интервал интегрирования дифференциального уравнения или системы;
- Х0 - вектор начальных условий системы дифференциальных систем
- options - параметры управления ходом решения дифференциального уравнения или системы.
Все функции возвращают:
- массив Т - координаты узлов сетки, в которых ищется решение;
- матрицу X, i-й столбец которой является значением вектор-функции решения в узле Тi
В функции ode45 реализован метод Рунге-Кутта 4-5 порядка точности, в функции ode23 также реализован метод Рунге-Кутта, но 2-3 порядка, а функция ode113 реализует метод Адамса.
Пример:
В М-файле с именем pr7.m пишем:
function f=pr7(x,y)
f=cos(x+y)+(3/2)*(x-y);
end
Потом в командном окне вызываем функцию ode113:
ode113(@pr7,[0 20],0) %Метод Адамса: @pr7 – ссылка на М-функцию, [0 20]- интервалы интегрирования,0 - условие: y(0)=0
Результатом будет график:
Пример:
Необходимо реализовать метод Рунге-Кутта 4 порядка и решить задачу Коши для предложенной системы дифференциальных уравнений:
y1(0) = 0.1; y2(0) = 0.5
В М-файле с именем pr8.m пишем:
function dy=pr8(x,y)
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=((y(1)/x)-y(2))*(1/x)-y(1);
end
Потом в командном окне вызываем функцию ode45:
[x,y]=ode45(@pr8,[1 10], [0.1 0.5]);
plot(x,y,'-k')
grid;
Результатом будет график:
Примеры:
pr7.m
pr8.m