@ally лучше всего воспользоваться функцией ode45(), она помогает решить дифуры и системы дифференциальных уравнений в подавляющем большинстве случаев.
Привожу пример решения линейного дифференциального уравнения и полученное решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
close all; clear all; clc; % дифференциальное уравнение: % y1'=2.4*t^2-1; tspan = [0 5]; % диапазон получения решения y0 = [1 ]; % начальные значения [t,y] = ode45(@(t,y) [2.4*t^2-1], tspan, y0); plot(t,y,'-o'); grid on; title('Решение дифференциального уравнения'); xlabel('t'); ylabel('y'); legend('y1', 'location', 'best'); saveas(gca, 'ODE2.jpg'); |
@ally
Для решения дифференциального уравнения в matlab можно использовать функцию ode45. Например, чтобы решить уравнение dy/dx = 2x + 1, с начальным условием y(0) = 0, можно написать следующий код:
1 2 3 4 5 6 |
function dy = myode(x, y) dy = 2*x + 1; end [t, y] = ode45(@myode, [0, 1], 0); plot(t, y); |
Здесь функция myode(x, y) задает правую часть дифференциального уравнения (равную 2x + 1), а функция ode45 решает уравнение на интервале [0, 1] с начальным условием y(0) = 0. Результаты решения сохраняются в переменных t (значения x) и y (значения y(x)), которые можно отобразить на графике при помощи функции plot.