exponenta event banner

Решение системы дифференциальных уравнений

Решите систему из нескольких обыкновенных дифференциальных уравнений в нескольких переменных с помощью dsolve функция, с начальными условиями или без них. Для решения одного дифференциального уравнения см. раздел Решение дифференциального уравнения.

Система решения дифференциальных уравнений

Решите эту систему линейных дифференциальных уравнений первого порядка.

dudt = 3u + 4v, dvdt = − 4u + 3v.

Во-первых, представляем 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')

Figure contains an axes. The axes contains 2 objects of type functionline. These objects represent uSol, vSol.

Решение дифференциальных уравнений в матричной форме

Решение дифференциальных уравнений в матричной форме с помощью dsolve.

Рассмотрим эту систему дифференциальных уравнений.

dxdt = x + 2y + 1, dydt = − x + y + t.

Матричная форма системы:

[x 'y'] = [12 11] [xy] + [1t].

Давайте

Y = [xy], A = [12 11], B = [1t].

Теперь система имеет значение Y ′ = AY + 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')

Figure contains an axes. The axes contains 2 objects of type functionline. These objects represent ySol, xSol.

См. также