📜  python sympy 符号 - Python (1)

📅  最后修改于: 2023-12-03 14:46:04.850000             🧑  作者: Mango

Python SymPy 符号库介绍

SymPy是Python的符号计算库,它允许程序员进行基于符号的数学计算,包括代数运算、微积分、方程求解、离散数学和几何等等。它可以方便地进行符号计算,也可以和NumPy、SciPy和Matplotlib等Python科学计算库配合使用,帮助程序员更快地解决各种计算问题。

SymPy基本用法

SymPy主要的数据类型包括Symbol符号、Expr表达式、Function函数等等。程序员可以通过下面的代码片段来快速了解SymPy的符号计算:

from sympy import *

x = Symbol('x')
y = Symbol('y')

expr = (x+y)**2
print(expand(expr))

diff_expr = diff(expr, x)
print(diff_expr)

integrate_expr = integrate(expr, x)
print(integrate_expr)

solve_expr = solve(x**2 - 4, x)
print(solve_expr)

上述代码将展示SymPy的基本符号计算的功能:

  • 展开表达式(x+y)**2
  • 对表达式expr关于x求导;
  • 对表达式expr关于x积分;
  • 求解方程x**2-4=0
SymPy高级用法

除了基本的符号计算,SymPy还有很多高级的符号运算功能,比如:

  • SymPy可以帮助程序员进行线性代数运算,如求矩阵的行列式、特征值、特征向量等等;
  • SymPy支持解决ODE(常微分方程)和PDE(偏微分方程);
  • SymPy还支持通过LaTeX语法输出美观的符号公式。

下面的代码片段展示了SymPy进行线性代数运算的功能:

from sympy import *

a, b, c, d = symbols('a b c d')
A = Matrix([[a, b], [c, d]])
B = Matrix([[1, 2], [3, 4]])

print(A.det())   # 行列式
print(A.eigenvals())  # 特征值
print(A.eigenvects()) # 特征向量

print(A*B) # 矩阵乘法
print(A.inv())  # 矩阵求逆

上述代码将展示SymPy进行矩阵的行列式、特征值、特征向量的运算,以及矩阵乘法和求逆的操作。

SymPy与其他Python库的配合使用

SymPy经常和其他科学计算库一起使用,如NumPy、SciPy、Matplotlib等等。下面的代码片段展示了如何将SymPy的符号计算结果转换为NumPy的数组,并且用Matplotlib来绘制曲线。

import numpy as np
import matplotlib.pyplot as plt
from sympy import *

x = Symbol('x')
y = Function('y')(x)
eq = Eq(y.diff(x) + y - x, 0)
sol = dsolve(eq)
print(sol.rhs)  # 解析解

y_func = lambdify(x, sol.rhs, 'numpy')  # 将SymPy的解析解转换为NumPy的函数

x_vals = np.linspace(0, 10, 100)
y_vals = y_func(x_vals)

plt.plot(x_vals, y_vals)
plt.xlabel('x')
plt.ylabel('y(x)')
plt.show()

上述代码将展示如何使用SymPy来求解微分方程的解析解,将解析解转换为可供NumPy使用的函数,进而绘制出曲线。

结论

SymPy是Python中非常好用的符号计算库,它支持的计算功能非常丰富,并且可以方便地与其他Python库集成。当程序员需要进行各种符号计算时,SymPy将是个不错的选择。