@sym: sol = dsolve (ode) ¶@sym: sol = dsolve (ode, IC) ¶@sym: sol = dsolve (ODEs, IC1, IC2, …) ¶@sym: sol = dsolve (ODEs, ICs) ¶@sym: [sol, classify] = dsolve (…) ¶Solve ordinary differential equations (ODEs) symbolically.
Basic example:
syms y(x)
DE = diff(y, x) - 4*y == 0
⇒ DE = (sym)
d
-4⋅y(x) + ──(y(x)) = 0
dx
sol = dsolve (DE)
⇒ sol = (sym)
4⋅x
C₁⋅ℯ
You can specify initial conditions:
sol = dsolve (DE, y(0) == 1)
⇒ sol = (sym)
4⋅x
ℯ
In some cases, SymPy can return a classification of the differential equation:
DE = diff(y) == y^2
⇒ DE = (sym)
d 2
──(y(x)) = y (x)
dx
[sol, classify] = dsolve (DE, y(0) == 1)
⇒ sol = (sym)
-1
─────
x - 1
⇒ classify = ... separable ...
Many types of ODEs can be solved, including initial-value problems and boundary-value problem:
DE = diff(y, 2) == -9*y
⇒ DE = (sym)
2
d
───(y(x)) = -9⋅y(x)
2
dx
dsolve (DE, y(0) == 1, diff(y)(0) == 12)
⇒ (sym) 4⋅sin(3⋅x) + cos(3⋅x)
dsolve (DE, y(0) == 1, y(sym(pi)/2) == 2)
⇒ (sym) -2⋅sin(3⋅x) + cos(3⋅x)
Some systems can be solved, including initial-value problems involving linear systems of first order ODEs with constant coefficients:
syms x(t) y(t)
ode_sys = [diff(x(t),t) == 2*y(t); diff(y(t),t) == 2*x(t)]
⇒ ode_sys = (sym 2×1 matrix)
⎡d ⎤
⎢──(x(t)) = 2⋅y(t)⎥
⎢dt ⎥
⎢ ⎥
⎢d ⎥
⎢──(y(t)) = 2⋅x(t)⎥
⎣dt ⎦
soln = dsolve (ode_sys)
⇒ soln = scalar structure containing ...
x = ...
y = ...
soln.x
⇒ ans =
(sym)
-2⋅t 2⋅t
- C₁⋅ℯ + C₂⋅ℯ
soln.y
⇒ ans =
(sym)
-2⋅t 2⋅t
C₁⋅ℯ + C₂⋅ℯ
Note: The Symbolic Math Toolbox used to support strings like ’Dy + y = 0’; we are unlikely to support this so you will need to assemble a symbolic equation instead.
See also: @@sym/diff, @@sym/int, @@sym/solve.
Package: symbolic