You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SymPy中如何对等式对象执行双边操作?

在SymPy中对等式两侧执行操作的优化方案

SymPy的Eq对象支持更简洁的方式对等式两边同时执行操作,无需手动通过lhs和rhs重新构造等式,以下是具体方案:

1. 使用官方提供的applyfunc方法

这是最直接的标准方案,applyfunc可以接收一个函数,并将其同时应用到等式的左右两侧:

import sympy as sym
x = sym.symbols('x')
# 构造初始等式
eq1 = sym.Eq(x + 1, 3)

# 等式两侧同时乘以2
eq_scaled = eq1.applyfunc(lambda expr: expr * 2)
# 输出:Eq(2*x + 2, 6)

# 也可以执行其他操作,比如两侧同时平方
eq_squared = eq1.applyfunc(lambda expr: expr**2)
# 输出:Eq((x + 1)**2, 9)

2. 自定义封装函数(贴近直觉写法)

如果觉得applyfunc的lambda写法不够直观,可以自己封装简单的函数来模拟运算符行为,比如实现乘法、加法:

def eq_mul(eq, value):
    return sym.Eq(eq.lhs * value, eq.rhs * value)

def eq_add(eq, value):
    return sym.Eq(eq.lhs + value, eq.rhs + value)

# 使用示例
eq2 = eq_mul(eq1, 2)
eq3 = eq_add(eq1, 5)

补充说明

直接使用eq1 * 2无法生效的原因是SymPy的Eq类没有重载__mul__这类算术运算符,因此不能直接通过运算符操作等式对象。而applyfunc是官方专门设计的用于批量处理等式两侧的方法,能覆盖绝大多数场景。

内容的提问来源于stack exchange,提问作者Jon K-R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:30:48