Learn Python with Talk Python's 270 hours of courses

Symbolic Math with Python using SymPy

Episode #364, published Sat, May 7, 2022, recorded Fri, May 6, 2022

We're all familiar with the data science tools like numpy, pandas, and others. These are numerical tools working with floating point numbers, often to represent real-world systems. But what if you exactly specify the equations, symbolically like many of us did back in Calculus and Differential Equations courses? With SymPy, you can do exactly that. Create equations, integrate, differentiate, and solve them. Then you can convert those solutions into Python (or even C++ and Fortran code). We're here with two of the core maintainer: Ondřej Čertík and Aaron Meurer to learn all about SymPy.

Watch this episode on YouTube
Play on YouTube
Watch the live stream version

Episode Deep Dive

Guests introduction and background

Ondřej Čertík is a computational physicist who started SymPy while studying physics. He spent many years at Los Alamos National Laboratory working with Fortran, C++, and Python, and is currently at GSI Technology as a compiler developer. He built LFortran and is now working on LPython to bring Python code into a compiled, high-performance context.

Aaron Meurer is a core maintainer of SymPy and works at Quansight, focusing on the Python data science ecosystem. He devotes part of his time to SymPy as part of a grant and has also contributed to the Data APIs Consortium, which standardizes array-based APIs (e.g., NumPy, PyTorch, JAX, etc.) to make Python data science more interoperable.

What to Know If You're New to Python

Here are a few items from the episode to help new Python developers get more out of the conversation:

  • Basic symbolic operations: Understand that Python can handle symbolic math, not just numeric math, using specialized libraries such as SymPy.
  • Installing libraries: Familiarize yourself with installing packages via pip install sympy or conda install sympy.
  • Exploring the REPL: Running Python interactively in a REPL (possibly an IPython or Jupyter session) lets you try symbolic expressions quickly.
  • Visualizing results: Tools like Jupyter Notebooks can render math expressions (via LaTeX/MathJax) for more intuitive symbolic exploration.

Key points and takeaways

1. Symbolic Math in Python with SymPy

SymPy allows users to represent mathematical expressions symbolically rather than just numerically, letting you differentiate, integrate, factor, and solve equations exactly. This is different from libraries like NumPy or Pandas, which rely on floating-point approximations. By declaring symbols in SymPy (for example, x = Symbol("x")), you can build an expression tree for manipulation and even convert the results to numeric or code form later.

2. Real-World and Scientific Impact

SymPy helps scientists and engineers automatically handle complex equations. Whether it’s integrating a function in quantum mechanics or finding equations of motion for mechanical systems, SymPy can systematically derive final forms. The library integrates well with other data science and numeric frameworks, bridging symbolic theory with real-world data analysis.

  • Links and tools:
    • PyDy.org for dynamic and mechanical systems
    • Chempy for chemistry calculations

3. Sympy Gamma for Instant Exploration

SymPy Gamma, inspired by Wolfram|Alpha’s approach, offers a web-based interface to quickly try symbolic math. Users can go to a browser, type in a symbolic query (like an integral or a polynomial factorization), and immediately see the symbolic result along with steps (where supported). It’s a fantastic resource for teaching, learning, or just quickly checking math.

4. DMCA Takedown Incident

The project encountered a surprising DMCA takedown request claiming SymPy’s docs infringed someone else’s copyright. Despite the initial friction and SymPy’s documentation being pulled temporarily from GitHub, the matter was resolved positively when HackerRank’s CEO intervened. This experience underscores the complexities of DMCA practices, especially for open-source projects.

5. Code Generation and Performance

SymPy goes beyond “pen-and-paper” math by offering code generation for C, C++, Fortran, and even frameworks like NumPy. This means you can symbolically derive an expression, then convert it into optimized code for high-performance computing or production scenarios. This approach lets you maintain readability while still delivering efficient, numeric execution.

6. Educational and Teaching Potential

SymPy’s step-by-step explanations for some operations (like differentiation) make it a powerful teaching tool. Instructors can use it to demonstrate how a result is derived, not just what the result is. Rather than replacing students’ learning, the software can supplement or check calculations in classrooms and homework.

7. Numerical vs. Symbolic Workflows

The guests distinguished between numeric libraries (NumPy, Pandas) and symbolic systems (SymPy, SageMath). In numeric mode, you get approximate solutions (e.g., 0.707 for √2); in symbolic mode, you get the exact mathematical form (e.g., √2). Often, developers do a symbolic derivation in SymPy and then hand it off to numeric libraries for final computations.

8. Integration Algorithms under the Hood

The transcript highlighted the complexity of symbolic integration and the advanced algorithms (like the Risch algorithm) that handle these calculations. While implementing such algorithms is challenging, SymPy includes enough rule-based and algorithmic approaches to solve many real-world integrals. This complexity illustrates why so much effort and community support goes into the project.

9. The Role of Open-Source in Scientific Computing

Both guests emphasized the value of open-source communities in expanding SymPy’s functionality. Contributions come from students (Google Summer of Code), professional developers, and scientists worldwide. This open model fosters reliability, reproducibility, and adoption by engineering and data-science teams.

10. Bridging Classroom Math and Production Code

SymPy is not only for academia—it’s for production systems too. Engineers can design symbolic models or formulas and then generate code that plugs into real systems (e.g., simulations, embedded devices, AI pipelines). This “theoretical-to-practical” pipeline highlights SymPy’s broad appeal.

11. Future Directions for Speed and Scale

Using compiled implementations (like SymEngine or LFortran) shows that performance and scaling are key focuses for SymPy’s community. While SymPy is currently pure Python, offloading heavy lifting to C++ or Fortran can speed up demanding scenarios. This approach preserves the high-level usability while addressing computational bottlenecks.

(Feel free to explore more topics, but these are the major highlights.)

Interesting quotes and stories

  • On the power of Python’s ecosystem: “Python’s so easy to just write a program... but you can keep going. You don’t have to stop once you need advanced ideas.” (Aaron M.)
  • On building SymPy: “I sat there in physics class and thought, ‘I wish I could do all these derivations in Python, interactively.’” (Ondřej Čertík)
  • DMCA Takedown: “I felt like the little guy crushed by a huge corporation... They basically took down the entire documentation site for about 12 hours.” (Aaron M.)

Key definitions and terms

  • Symbolic Math: Mathematical operations on expressions as abstract symbols, allowing for exact forms like √2 or (x+1)² rather than numeric approximations.
  • Risch Algorithm: A decision procedure for integrating elementary functions in symbolic math.
  • Code Generation: Automatically transforming symbolic expressions into source code (C, Fortran, Python) for fast execution.
  • SymEngine: A separate C++ library that can perform many of SymPy’s operations more quickly than pure Python.

Learning resources

If you’re new to Python or want a deeper dive:

Overall takeaway

SymPy demonstrates how Python has evolved well beyond basic scripting, thriving as a platform for deep computational tasks. Its community-driven development offers robust symbolic capabilities, bridging academic theory, open-source collaboration, and industrial-scale execution. By letting you seamlessly switch from symbolic derivations to high-performance code, SymPy and its ecosystem affirm Python’s position as a foundational tool for scientists, engineers, educators, and data professionals alike.

Links from the show

Ondrej Certik: @OndrejCertik
Aaron Meurer: @asmeurer
SymPy: sympy.org
SymPy Docs: docs.sympy.org/dev
Tutorials: docs.sympy.org
The SymPy/HackerRank DMCA Incident: asmeurer.com
SymEngine: github.com
SymPy Gamma: gamma.sympy.org
Sovled derivative problem - wait for derivative steps to appear: gamma.sympy.org
Github Takedown Repo: github.com
e: The Story of a Number book: amazon.com
Watch this episode on YouTube: youtube.com
Episode transcripts: talkpython.fm

--- Stay in touch with us ---
Subscribe to Talk Python on YouTube: youtube.com
Talk Python on Bluesky: @talkpython.fm at bsky.app
Talk Python on Mastodon: talkpython
Michael on Bluesky: @mkennedy.codes at bsky.app
Michael on Mastodon: mkennedy

Talk Python's Mastodon Michael Kennedy's Mastodon