Documentation Center

  • Trial Software
  • Product Updates

Solve a System of Differential Equations

dsolve can handle several ordinary differential equations in several variables, with or without initial conditions. For example, solve these linear first-order equations. First, create the symbolic functions f(t) and g(t):

syms f(t) g(t)

Now use dsolve to solve the system. The toolbox returns the computed solutions as elements of the structure S:

S = dsolve(diff(f) == 3*f + 4*g, diff(g) == -4*f + 3*g)
S = 
    g: [1x1 sym]
    f: [1x1 sym]

To return the values of f(t) and g(t), enter these commands:

f(t) = S.f
g(t) = S.g
f(t) =
C2*cos(4*t)*exp(3*t) + C1*sin(4*t)*exp(3*t)
 
g(t) =
C1*cos(4*t)*exp(3*t) - C2*sin(4*t)*exp(3*t)

If you prefer to recover f(t) and g(t) directly, as well as include initial conditions, enter these commands:

syms f(t) g(t)
[f(t), g(t)] = dsolve(diff(f) == 3*f + 4*g,...
diff(g) == -4*f + 3*g, f(0) == 0, g(0) == 1)
f(t) =
sin(4*t)*exp(3*t)
 
g(t) =
cos(4*t)*exp(3*t)

Suppose you want to solve a system of differential equations in a matrix form. For example, solve the system Y′ = AY + B, where A, B, and Y represent the following matrices:

syms x(t) y(t)
A = [1 2; -1 1];
B = [1; t];
Y = [x; y];

Solve the system using dsolve:

S = dsolve(diff(Y) == A*Y + B);
x = S.x
y = S.y
x =
2^(1/2)*exp(t)*cos(2^(1/2)*t)*(C2 + (exp(-t)*(4*sin(2^(1/2)*t) +...
2^(1/2)*cos(2^(1/2)*t) + 6*t*sin(2^(1/2)*t) +...
6*2^(1/2)*t*cos(2^(1/2)*t)))/18) +...
2^(1/2)*exp(t)*sin(2^(1/2)*t)*(C1 - (exp(-t)*(4*cos(2^(1/2)*t) -...
2^(1/2)*sin(2^(1/2)*t) +...
6*t*cos(2^(1/2)*t) - 6*2^(1/2)*t*sin(2^(1/2)*t)))/18)
 
y =
exp(t)*cos(2^(1/2)*t)*(C1 - (exp(-t)*(4*cos(2^(1/2)*t) -...
2^(1/2)*sin(2^(1/2)*t) + 6*t*cos(2^(1/2)*t) -...
6*2^(1/2)*t*sin(2^(1/2)*t)))/18) - exp(t)*sin(2^(1/2)*t)*(C2 +...
(exp(-t)*(4*sin(2^(1/2)*t) + 2^(1/2)*cos(2^(1/2)*t) +...
6*t*sin(2^(1/2)*t) + 6*2^(1/2)*t*cos(2^(1/2)*t)))/18)
Was this topic helpful?