Решите систему нескольких обыкновенных дифференциальных уравнений в нескольких переменных при помощи dsolve
функция, с или без начальных условий. Чтобы решить одно дифференциальное уравнение, смотрите, Решают Дифференциальное уравнение.
Решите эту систему линейных дифференциальных уравнений первого порядка.
Во-первых, представляйте u и v при помощи syms
создать символьные функции u(t)
и v(t)
.
syms u(t) v(t)
Определите уравнения с помощью ==
и представляйте дифференцирование с помощью diff
функция.
ode1 = diff(u) == 3*u + 4*v; ode2 = diff(v) == -4*u + 3*v; odes = [ode1; ode2]
odes(t) = diff(u(t), t) == 3*u(t) + 4*v(t) diff(v(t), t) == 3*v(t) - 4*u(t)
Решите систему с помощью dsolve
функция, которая возвращает решения как элементы структуры.
S = dsolve(odes)
S = struct with fields: v: [1×1 sym] u: [1×1 sym]
Если dsolve
не может решить ваше уравнение, затем попытаться решить уравнение численно. Смотрите Решают Дифференциальное уравнение Второго порядка Численно.
Получить доступ к u(t)
и v(t)
, индексируйте в структуру S
.
uSol(t) = S.u vSol(t) = S.v
uSol(t) = C2*cos(4*t)*exp(3*t) + C1*sin(4*t)*exp(3*t) vSol(t) = C1*cos(4*t)*exp(3*t) - C2*sin(4*t)*exp(3*t)
В качестве альтернативы сохраните u(t)
и v(t)
непосредственно путем обеспечения нескольких выходных аргументов.
[uSol(t), vSol(t)] = dsolve(odes)
uSol(t) = C2*cos(4*t)*exp(3*t) + C1*sin(4*t)*exp(3*t) vSol(t) = C1*cos(4*t)*exp(3*t) - C2*sin(4*t)*exp(3*t)
Константы C1
и C2
появитесь, потому что никакие условия не заданы. Решите систему с начальными условиями u(0) == 0
и v(0) == 0
. dsolve
функция находит значения для констант, которые удовлетворяют этим условиям.
cond1 = u(0) == 0; cond2 = v(0) == 1; conds = [cond1; cond2]; [uSol(t), vSol(t)] = dsolve(odes,conds)
uSol(t) = sin(4*t)*exp(3*t) vSol(t) = cos(4*t)*exp(3*t)
Визуализируйте использование решения fplot
.
fplot(uSol) hold on fplot(vSol) grid on legend('uSol','vSol','Location','best')
Решите дифференциальные уравнения в матричной форме при помощи dsolve
.
Рассмотрите эту систему дифференциальных уравнений.
Матричная форма системы
Пусть
Системой является теперь Y ′ = A Y + B.
Задайте эти матрицы и матричное уравнение.
syms x(t) y(t) A = [1 2; -1 1]; B = [1; t]; Y = [x; y]; odes = diff(Y) == A*Y + B
odes(t) = diff(x(t), t) == x(t) + 2*y(t) + 1 diff(y(t), t) == t - x(t) + y(t)
Решите матричное уравнение с помощью dsolve
. Упростите решение при помощи simplify
функция.
[xSol(t), ySol(t)] = dsolve(odes); xSol(t) = simplify(xSol(t)) ySol(t) = simplify(ySol(t))
xSol(t) = (2*t)/3 + 2^(1/2)*C2*exp(t)*cos(2^(1/2)*t) + 2^(1/2)*C1*exp(t)*sin(2^(1/2)*t) + 1/9 ySol(t) = C1*exp(t)*cos(2^(1/2)*t) - t/3 - C2*exp(t)*sin(2^(1/2)*t) - 2/9
Константы C1
и C2
появитесь, потому что никакие условия не заданы.
Решите систему с начальными условиями u (0) = 2 и v (0) = –1. При определении уравнений в матричной форме необходимо задать начальные условия в матричной форме также. dsolve
находит значения для констант, которые удовлетворяют этим условиям.
C = Y(0) == [2; -1]; [xSol(t), ySol(t)] = dsolve(odes,C)
xSol(t) = (2*t)/3 + (17*exp(t)*cos(2^(1/2)*t))/9 - (7*2^(1/2)*exp(t)*sin(2^(1/2)*t))/9 + 1/9 ySol(t) = - t/3 - (7*exp(t)*cos(2^(1/2)*t))/9 - (17*2^(1/2)*exp(t)*sin(2^(1/2)*t))/18 - 2/9
Визуализируйте использование решения fplot
.
clf fplot(ySol) hold on fplot(xSol) grid on legend('ySol','xSol','Location','best')