Solving a Differential Equation in Python

To solve differential equations of any order in Python, the SymPy module for symbolic computation is incredibly useful.

Let's begin by importing the necessary functions from the library:

from sympy import symbols, Function, Eq, dsolve

Next, we define the function and the variables involved in the differential equation using the Function() and symbols() functions.

For example, if we're working with time \( t \) and a function \( y(t) \), we write:

t = symbols('t')
y = Function('y')(t)

These commands assign a symbol to the variable t and the function y. This way, Python will interpret these variables as symbols rather than numerical values.

Now, let's write the differential equation we want to solve.

Consider a third-order differential equation as an example:

\[ \frac{d^3y}{dt^3} - 3\frac{d^2y}{dt^2} + 3\frac{dy}{dt} - y = 0 \]

In SymPy, we represent it like this:

ode = Eq(y.diff(t, 3) - 3*y.diff(t, 2) + 3*y.diff(t) - y, 0)

Here, diff(t,n) represents the nth-order derivative with respect to the variable t.

  • y.diff(t,3) is the third derivative of the function y with respect to t
  • y.diff(t,2) is the second derivative of the function y with respect to t
  • y.diff(t) is the first derivative of the function y with respect to t
  • y is the original function

Next, we use dsolve() to solve the equation.

The dsolve() function takes the equation and the function to solve for as arguments:

solution = dsolve(ode, y)

Finally, we display the solution:

print(solution)

Eq(y(t), (C1 + t*(C2 + C3*t))*exp(t))

This means the solution to the differential equation is:

$$ y(t) = C_1 + t \cdot (C_2 + C_3 \cdot t) \cdot e^t $$

Here's the complete script:

from sympy import symbols, Function, Eq, dsolve

# Define variables
t = symbols('t')
y = Function('y')(t)

# Define the third-order differential equation

ode = Eq(y.diff(t, 3) - 3*y.diff(t, 2) + 3*y.diff(t) - y, 0)

# Solve the differential equation
solution = dsolve(ode, y)

# Print the solution
print(solution)

With this, we have solved a third-order differential equation using SymPy.

The process is similar for different problems, such as higher-order equations or systems of differential equations: define the variables and functions as symbols, write the equations, and use dsolve() to find the solution.

And that's it!

 
 

Please feel free to point out any errors or typos, or share suggestions to improve these notes. English isn't my first language, so if you notice any mistakes, let me know, and I'll be sure to fix them.

FacebookTwitterLinkedinLinkedin
knowledge base

Sympy