专栏名称: 新语数据故事汇
《新语数据故事汇,数说新语》科普数据科学、讲述数据故事,深层次挖掘数据价值。
目录
相关文章推荐
51好读  ›  专栏  ›  新语数据故事汇

一文带您了解SymPy:使用python进行符号数学运算

新语数据故事汇  · 公众号  ·  · 2024-07-31 14:57

正文

SymPy 是一个 Python 库,专注于符号计算,提供了处理数学表达式、方程和公式的工具。与数值计算库不同,SymPy 能够进行符号微分、积分、极限等运算,适用于代数运算、微积分和方程求解等。与传统的数值计算库(如 NumPy)不同,SymPy 主要用于处理数学表达式、方程和公式的符号计算,而不是进行数值计算。

它支持多项式运算、矩阵操作、特征值计算等线性代数功能,并能处理数论和组合数学中的问题。SymPy 还具备简化数学表达式的功能,并能绘制数学函数和图形。作为一个完全用 Python 实现的开源库,SymPy 易于集成到 Python 环境中,广泛应用于学术研究、教育以及需要符号计算的领域。

什么是 SymPy?

它是计算机代数系统(computer alegebra systems,CAS)的一部分:一个允许我们进行代数和数学计算的库。

主要功能:

  • 简化、重排、因式分解和展开代数表达式和方程。

  • 求解各种类型的方程,包括线性方程、多项式方程和微分方程。

  • 执行微积分运算,包括微分和积分。

  • 绘制图形。

  • 生成原始 LaTeX 输出。

  • 生成渲染的 LaTeX 输出。

安装SymPy

pip install sympy

简化和展开

首先,导入 SymPy。然后定义 SymPy 变量,才能使用它们。通过创建 SymPy 的 symbols 来实现这一点。这些符号代表了数学变量:

import sympyfrom sympy import latex
a, b, x, y = sympy.symbols("a b x y")
display(a,b,x,y)

然后,我们可以构建表达式和方程:

from IPython.display import Markdown, display
a = (x + 1)**2b = x**2 + 2*x + 1 display(a)print(latex(a)) display(b)
# Expand a...expanded = sympy.expand(a)display(Markdown(f"$a = {latex(expanded)}$"))
# Show a-b without simplifying...a_minus_b = a-bdisplay(Markdown(f"$a-b = {latex(a_minus_b)}$"))
# Simplify...display(Markdown(f"$a-b$ $= {latex(sympy.simplify(a_minus_b))}$"))

等式判断

我们可以测试两个表达式是否相同,方法如下:

变量赋值和评估

在定义了一个 SymPy 符号并将其分配给 Python 变量后,不能简单地给 Python 变量赋值。如果这样做,变量将不再是一个符号。相反,你需要使用 subs() 方法将值与 SymPy 符号关联起来:

x, y = sympy.symbols("x y")expr = x+yresult = expr.subs({x: 2, y: 5})print(f"{expr=}, {result=}")

微分和积分

在 SymPy 中,积分和微分非常简单:

x = sympy.symbols("x")expr = x**2display(expr)
deriv = sympy.diff(expr)display(deriv)
integral = sympy.integrate(deriv)display(integral)

求解二次方程

求解二次方程很简单,只需提供二次方程的系数,然后运行 SymPy 的 solve() 函数即可:







请到「今天看啥」查看全文