python整除符号_重写sympy中的符号表达式时重写除法运算符

本文探讨了在使用Sympy处理符号表达式时遇到的问题,即除法运算符的行为不同于其他数学运算符。作者创建了一个名为`NewMath`的类,尝试重写加、减、乘和除的方法。尽管加、减、乘成功地被重写了,但除法仍然不按预期工作。作者尝试通过`lambdify`和`modules`参数来替换Sympy的除法操作,但未成功。问题在于Python 2.7中的除法行为和Sympy的默认设置。
摘要由CSDN通过智能技术生成

我使用Sympy来计算用户提供的符号表达式,但是除法运算符的行为与其他任何数学运算符不同。当用重写运算符对对象求值时,我得到了加法、减法和乘法的预期结果,而不是除法。下面的代码说明了我的问题:import sympy

import numpy

class NewMath(int):

def __add__(self, other):

print "Adding!"

return

def __sub__(self, other):

print "Subtracting!"

return

def __mul__(self, other):

print "Multiplying!"

return

def __div__(self, other):

print "Dividing!"

return

three = NewMath(3)

four = NewMath(4)

three + four

three - four

three * four

three / four

# Override sympys default math

func_map = {'+':NewMath.__add__,

'/':NewMath.__div__}

lambda_args = [sympy.Symbol(arg) for arg in ['three', 'four']]

print "Now sympy math:"

lambda_addition = sympy.lambdify(lambda_args, sympy.Symbol('three') + sympy.Symbol('four'), modules=func_map)

lambda_addition(three, four)

lambda_subtraction = sympy.lambdify(lambda_args, sympy.Symbol('three') - sympy.Symbol('four'), modules=func_map)

lambda_subtraction(three, four)

lambda_multiplucation = sympy.lambdify(lambda_args, sympy.Symbol('three') * sympy.Symbol('four'), modules=func_map)

lambda_multiplucation(three, four)

lambda_division = sympy.lambdify(lambda_args, sympy.Symbol('three') / sympy.Symbol('four'), modules=func_map)

lambda_division(three, four)

输出:

^{pr2}$

我读过Sympy Docs并看到/运算符是一个常见的问题,但文档似乎只是指示除法将默认为整数除法,我看不到任何指示{}不能被重写的内容。您可以在我的示例中看到,我甚至尝试使用modules参数手动将division替换为自定义运算符,但没有成功。在

我也看到了{a2},这是否意味着我的事业没有希望了?在

我使用的是python2.7和sympy1.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值