В этом примере показано, как преобразовать дифференциальное уравнение второго порядка в систему дифференциальных уравнений, которые можно решить с помощью числового решателя. ode45 MATLAB ®.
Типичным подходом к решению обыкновенных дифференциальных уравнений высшего порядка является преобразование их в системы дифференциальных уравнений первого порядка, а затем решение этих систем. В примере используется символьная математическая Toolbox™ для преобразования ОДУ второго порядка в систему ОДУ первого порядка. Затем используется решатель MATLAB ode45 для решения системы.
Использовать odeToVectorField переписать это дифференциальное уравнение второго порядка
dydt-y
с использованием изменения переменных. Пусть = Y2 так, что дифференцируя оба уравнения получаем систему дифференциальных уравнений первого порядка.
Y2-Y1
syms y(t)
[V] = odeToVectorField(diff(y, 2) == (1 - y^2)*diff(y) - y)V =
Решатели ODE MATLAB не принимают символьные выражения в качестве входных данных. Поэтому перед использованием решателя MATLAB ODE для решения системы необходимо преобразовать эту систему в функцию MATLAB. Создайте функцию MATLAB из этой системы дифференциальных уравнений первого порядка с помощью matlabFunction с V в качестве входа.
M = matlabFunction(V,'vars', {'t','Y'})
M = function_handle with value:
@(t,Y)[Y(2);-(Y(1).^2-1.0).*Y(2)-Y(1)]
Для решения этой проблемы вызовите MATLAB. ode45 числовой решатель с использованием сгенерированной функции MATLAB в качестве входных данных.
sol = ode45(M,[0 20],[2 0]);
Постройте график решения с помощью linspace для генерации 100 точек в интервале [0,20] и deval для оценки решения для каждой точки.
fplot(@(x)deval(sol,x,1), [0, 20])
