Skip to content

SymPy 使用指南

一作:GPT-4 二作:Microsoft Copilot 审稿:M.T.Dickens

SymPy 新手教程

1. 安装 SymPy

首先,你需要在你的 Python 环境中安装 SymPy。你可以使用 pip 来安装:

pip install sympy

2. 基础知识

2.1 导入 SymPy 和创建符号

在使用 SymPy 之前,你需要导入它,并创建你需要的符号:

from sympy import symbols, Function

x, y, z = symbols('x y z')
f = Function('f')(x)

2.2 基本运算

SymPy 支持基本的数学运算,如加法、减法、乘法、除法和指数运算:

from sympy import symbols

x, y = symbols('x y')

expr = x + y
print(expr)  # 输出:x + y

expr = x - y
print(expr)  # 输出:x - y

expr = x * y
print(expr)  # 输出:x*y

expr = x / y
print(expr)  # 输出:x/y

expr = x**y
print(expr)  # 输出:x**y

2.3 求导和积分

SymPy 可以进行求导和积分运算:

from sympy import symbols, diff, integrate

x = symbols('x')

# 求导
expr = x**2
derivative = diff(expr, x)
print(derivative)  # 输出:2*x

# 积分
integral = integrate(expr, x)
print(integral)  # 输出:x**3/3

2.4 求解方程

SymPy 可以用于求解方程。例如,我们可以求解一元二次方程 \(x^2 - 3x + 2 = 0\)

from sympy import symbols, Eq, solve

x = symbols('x')

# 创建方程
equation = Eq(x**2 - 3*x + 2, 0)

# 求解方程
solution = solve(equation, x)
print(solution)  # 输出:[1, 2]

3. 高级技巧

3.1 替换

SymPy 的 subs 方法可以用于替换表达式中的符号或函数:

from sympy import symbols

x, y = symbols('x y')

expr = x + y
new_expr = expr.subs(x, 1)
print(new_expr)  # 输出:y + 1

3.2 替换函数但不替换其导数

如果你想替换函数 \(f(x)\) 但不替换其导数 \(\frac{df}{dx}\),你可以使用以下技巧:

from sympy import symbols, Function, diff

x = symbols('x')
f = Function('f')(x)
g = Function('g')(x)
f_prime = diff(f, x)

expr = f + f_prime

new_expr = expr.subs({f: 0, f_prime: g})
final_expr = new_expr.subs(g, f_prime)

print(final_expr)  # 输出:Derivative(f(x), x)

这个代码将会打印出 \(f'(x)\),因为 \(f(x)\) 被替换为 0,但 \(f'(x)\) 没有被替换。

3.3 展开和化简表达式

SymPy 提供了 expandsimplify 函数,可以用于展开和化简表达式:

from sympy import symbols, expand, simplify

x, y = symbols('x y')

# 展开表达式
expr = (x + y)**2
expanded_expr = expand(expr)
print(expanded_expr)  # 输出:x**2 + 2*x*y + y**2

# 化简表达式
simplified_expr = simplify(expanded_expr)
print(simplified_expr)  # 输出:(x + y)**2

以上就是 SymPy 的基础教程,希望对你有所帮助。如果你想了解更多关于 SymPy 的信息,你可以查阅其官方文档。这个教程只是 SymPy 功能的冰山一角,SymPy 还有许多其他强大的功能等待你去探索。祝你学习愉快!