DEV Community

Vidyasagar SC Machupalli
Vidyasagar SC Machupalli

Posted on • Originally published at Medium on

An Introduction to SymPy: A Python Library for Symbolic Mathematics

SymPy is an open-source Python library for symbolic mathematics.


SymPy — Mathematics Python Library

SymPy aims to become a full-featured computer algebra system (CAS) while keeping the code simple, extensible, and free of external dependencies. With SymPy, you can perform algebraic manipulations, calculus operations, linear algebra, equation solving, discrete mathematics, and much more, all symbolically, rather than numerically.

In this article, we will explore the SymPy library, its capabilities, and some practical examples that demonstrate how it can be used effectively for symbolic computation.

What is SymPy?

At its core, SymPy provides functions for performing symbolic calculations, which means it works with mathematical expressions in their exact form, rather than approximating values as floating-point numbers. SymPy leverages Python’s object-oriented nature to represent mathematical objects, such as variables, functions, and matrices, as Python objects.

SymPy is built in pure Python and does not require any external libraries or software packages. This makes it easy to install and use, and it’s suitable for applications in scientific computing, education, engineering, and mathematics.

Key Features of SymPy

  • Symbolic computation : Perform algebraic operations like simplification, expansion, and factorization on symbolic expressions.
  • Calculus : Compute derivatives, integrals, limits, series expansions, and solve differential equations symbolically.
  • Linear algebra : Manipulate matrices, solve linear systems, and compute determinants, eigenvalues, and eigenvectors.
  • Equation solving : Solve algebraic equations (linear, polynomial, non-linear) symbolically.
  • Plotting : Generate plots of functions and equations, both symbolic and numerical.

Installing SymPy

To install SymPy, you can use pip:

pip install sympy
Enter fullscreen mode Exit fullscreen mode

After installation, you can import the library into your Python script:

import sympy as sp
Enter fullscreen mode Exit fullscreen mode

Basic Usage of SymPy

Let’s start by using SymPy to define symbolic variables and perform some basic algebraic manipulations.

Defining Symbolic Variables

You can define symbolic variables using the symbols function. For example:

import sympy as sp

# Define symbols
x, y, z = sp.symbols('x y z')

# Display the symbols
print(x, y, z)
Enter fullscreen mode Exit fullscreen mode

Simple Algebraic Operations

Once you’ve defined symbolic variables, you can perform various algebraic operations such as addition, multiplication, and exponentiation.

# Define an expression
expr = x**2 + 2*x + 1

# Simplify the expression
simplified_expr = sp.simplify(expr)
print("Simplified expression:", simplified_expr)

# Expand a binomial
expanded_expr = sp.expand((x + 1)**2)
print("Expanded expression:", expanded_expr)

# Factor an expression
factored_expr = sp.factor(x**2 + 2*x + 1)
print("Factored expression:", factored_expr)
Enter fullscreen mode Exit fullscreen mode

Simplification and Expansion

SymPy has built-in functions for simplifying and expanding expressions:

# Simplify the expression x**2 - 2*x + 1 - (x - 1)**2
expr_to_simplify = x**2 - 2*x + 1 - (x - 1)**2
simplified = sp.simplify(expr_to_simplify)
print("Simplified expression:", simplified)
Enter fullscreen mode Exit fullscreen mode

Solving Equations

SymPy makes it easy to solve equations symbolically. Here’s how to solve a linear equation:

# Solve x + 3 = 7
solution = sp.solve(x + 3 - 7, x)
print("Solution:", solution)
Enter fullscreen mode Exit fullscreen mode

For solving quadratic equations, SymPy will return all possible roots:

# Solve a quadratic equation
quadratic_solution = sp.solve(x**2 - 5*x + 6, x)
print("Quadratic solution:", quadratic_solution)
Enter fullscreen mode Exit fullscreen mode

Calculus Operations

SymPy excels in symbolic calculus. Let’s look at some common operations, such as differentiation and integration.

Differentiation

To compute the derivative of an expression:

# Derivative of x **3 + 2*x** 2 + x with respect to x
derivative = sp.diff(x **3 + 2*x** 2 + x, x)
print("Derivative:", derivative)
Enter fullscreen mode Exit fullscreen mode

Integration

To compute the integral of an expression:

# Integral of x**2 with respect to x
integral = sp.integrate(x**2, x)
print("Integral:", integral)
Enter fullscreen mode Exit fullscreen mode

Limits

You can also compute limits of expressions:

# Limit of (sin(x)/x) as x approaches 0
limit = sp.limit(sp.sin(x)/x, x, 0)
print("Limit:", limit)
Enter fullscreen mode Exit fullscreen mode

Series Expansion

SymPy allows you to expand an expression as a series around a given point:

# Series expansion of exp(x) around x = 0
series_expansion = sp.series(sp.exp(x), x, 0, 5)
print("Series expansion:", series_expansion)
Enter fullscreen mode Exit fullscreen mode

Solving Differential Equations

SymPy also provides tools for solving ordinary differential equations (ODEs) symbolically.

# Solve the differential equation y'' - 2*y' + y = 0
y = sp.Function('y')
ode_solution = sp.dsolve(y(x).diff(x, x) - 2*y(x).diff(x) + y(x), y(x))
print("Differential equation solution:", ode_solution)
Enter fullscreen mode Exit fullscreen mode

Linear Algebra with SymPy

SymPy has robust support for linear algebra operations. Let’s see how to perform matrix operations and solve linear systems.

Matrix Operations

# Define matrices
A = sp.Matrix([[1, 2], [3, 4]])
B = sp.Matrix([[5, 6], [7, 8]])

# Matrix addition
C = A + B
print("Matrix addition:\n", C)

# Matrix multiplication
D = A * B
print("Matrix multiplication:\n", D)

# Determinant of a matrix
det_A = A.det()
print("Determinant of A:", det_A)

# Eigenvalues and eigenvectors
eigen = A.eigenvals(), A.eigenvects()
print("Eigenvalues and eigenvectors:", eigen)
Enter fullscreen mode Exit fullscreen mode

Solving a Linear System

You can solve systems of linear equations symbolically using the linsolve function.

# Solve the system of equations: x + y = 2, x - y = 0
system = [x + y - 2, x - y]
solution = sp.linsolve(system, x, y)
print("Solution to the system:", solution)
Enter fullscreen mode Exit fullscreen mode

Plotting with SymPy

SymPy includes basic plotting capabilities for visualizing symbolic expressions. You can use the plot function for this purpose:

from sympy.plotting import plot

# Plot the function sin(x)
plot(sp.sin(x))
Enter fullscreen mode Exit fullscreen mode

Advanced Features of SymPy

SymPy has many more advanced features such as:

  1. Mathematical functions : Special functions like gamma, Bessel, and error functions.
  2. Solving Diophantine equations : SymPy can handle integer solutions for certain equations.
  3. SymPy physics module : For symbolic calculations in physics, including mechanics, optics, and quantum mechanics.
  4. Symbolic Fourier transforms : Useful for signal processing and other applications.
  5. Code generation : Generate Python, C, Fortran, or other language code for symbolic expressions.

Applications in Various Fields

SymPy finds applications in numerous domains:

  1. Physics : Quantum mechanics calculations and equation derivations
  2. Engineering : Solving complex mathematical models
  3. Computer Science : Algorithm analysis and optimization
  4. Finance : Option pricing and risk analysis

Code Generation

One of SymPy’s powerful features is its ability to generate code in various programming languages:

from sympy.utilities.codegen import codegen 
expr = x**2 + sin(x) [(c_name, c_code), (h_name, c_header)] = codegen(('f', expr), 'C', 'file', header=False, empty=False) 
print(c_code)
Enter fullscreen mode Exit fullscreen mode

This feature allows users to convert symbolic expressions into efficient, executable code for numerical computation.

The Jupyter Notebook with the outputs is available on the GitHub repository. You can run the Jupyter Notebook on Colab following the instructions on the GitHub repository.

Conclusion

SymPy is a powerful tool for symbolic mathematics in Python. It can simplify complex expressions, solve equations, perform calculus operations, and handle linear algebra tasks symbolically. Whether you are a researcher, educator, engineer, or student, SymPy provides an easy-to-use yet powerful framework for performing a wide variety of symbolic computations.

With its simple installation process, ease of use, and extensive capabilities, SymPy has become a popular choice in the Python ecosystem for symbolic mathematics. By using the examples in this article as a starting point, you can begin to explore the full range of features SymPy has to offer.

Originally published at https://vmacwrites.substack.com.


Top comments (0)