Symbolic Mathematics with SymPy

Authors

Louis Moresi

Andrew Valentine

NoteSummary

SymPy brings symbolic mathematics to Python - allowing you to manipulate equations, simplify expressions, differentiate and integrate symbolically, and solve equations analytically. It’s like having Mathematica or Maple built into Python!

What is Symbolic Math?

Most Python computations are numerical - we work with specific numbers. Symbolic computation works with variables and expressions themselves, without assigning numeric values.

Creating Symbols

Symbols are the building blocks of symbolic expressions:

Shorthand for multiple symbols:

Symbolic Expressions

You can build expressions using standard mathematical operations:

WarningUse SymPy Functions, Not NumPy!

NumPy functions expect numbers. SymPy functions work with symbols:

Simplification

SymPy can simplify expressions symbolically:

Expansion and Factoring

Simplify and manipulate these expressions:

  1. (x² + 2xy + y²) - Expand and factor
  2. sin²(x) + cos²(x) - Simplify
  3. (x³ - 1)/(x - 1) - Simplify
TipSolution
import sympy

x, y = sympy.symbols('x y')

# 1.
expr1 = (x + y)**2
expanded = expr1.expand()
factored = expanded.factor()
print("Expanded:", expanded)
print("Factored:", factored)

# 2.
expr2 = sympy.sin(x)**2 + sympy.cos(x)**2
simplified = expr2.simplify()
print("\nTrig identity:", simplified)

# 3.
expr3 = (x**3 - 1)/(x - 1)
simplified3 = expr3.simplify()
print("\nRational:", simplified3)

Substitution

Evaluate expressions by substituting values:

SymPy can handle complex numbers:

Differentiation

SymPy can compute derivatives symbolically:

Partial Derivatives

The 1D heat equation is:

∂T/∂t = α ∂²T/∂x²

where α is thermal diffusivity.

Given T(x,t) = A×e^(-αk²t)×sin(kx), verify it satisfies the heat equation:

TipSolution
import sympy

x, t, alpha, k, A = sympy.symbols('x t alpha k A', real=True, positive=True)

T = A * sympy.exp(-alpha * k**2 * t) * sympy.sin(k * x)

dT_dt = sympy.diff(T, t)
d2T_dx2 = sympy.diff(T, x, 2)

LHS = dT_dt
RHS = alpha * d2T_dx2

print("∂T/∂t =", LHS)
print("α∂²T/∂x² =", RHS)
print("\nDifference:", (LHS - RHS).simplify())

Integration

Symbolic integration (both indefinite and definite):

Multiple Integration

Solving Equations

Solve equations symbolically:

Systems of Equations

Radioactive decay chain: Parent P decays to daughter D with decay constant λ.

The equation is: dD/dt = λP₀e^(-λt) - μD

where μ is daughter’s decay constant.

Solve for D(t) assuming D(0) = 0:

Pretty Printing

SymPy can display equations beautifully:

Practical Example: Wave Equation

Summary

SymPy provides symbolic mathematics in Python:

  • Symbols and expressions - Work with variables algebraically
  • Simplification - Simplify, expand, factor expressions
  • Calculus - Differentiate and integrate symbolically
  • Equation solving - Solve equations and systems analytically
  • Pretty printing - Display equations beautifully

SymPy is perfect for: - Deriving equations - Checking analytical solutions - Teaching mathematics - Code generation (convert symbolic → numeric code)

WarningCoding scratch space