使用Sympy中的抽象数学运算符/对象

时间:2016-10-29 07:54:45

标签: python sympy

我想知道是否有一种在Sympy中实现抽象数学运算符的简单方法。对于运算符,我只是指一些具有3个值作为输入或3个索引的对象,类似于"运算符(a,b,c)"。请注意,我指的是数学运算符(在hilbert空间上),而不是编程环境中的运算符。根据这些值,我想教Sympy如何将这种类型的两个运算符相乘,以及如何将它与浮点数相乘等等。在计算的某个阶段,我想用其他一些操作符替换这些操作符......

到目前为止,我无法弄清楚sympy是否提供了这样一个抽象的计算方法。因此,我开始为这些对象编写一个新的Python类,但这超出了我在Python中有限的知识范围......是否有更简单的方法来实现,然后创建一个新的类?

2 个答案:

答案 0 :(得分:1)

除了SymPy之外,你可能还想看看SageMath,因为Sage竭尽全力提供预建的数学结构。然而,随着代数几何学,代数的各个领域和组合学的发展,它的发展更多。我不确定它实现任何运算符代数的程度。

答案 1 :(得分:0)

是的,你可以这样做。只需创建sympy.Function的子类。您可以使用nargs

指定参数的数量
class Operator(Function):
    nargs = 3

如果希望函数评估某些参数,请定义类函数eval。如果它应该保持不被评估,它应该返回None。例如,要在所有三个参数都为0时计算为0,可以使用

class Operator(Function):
    @classmethod
    def eval(cls, a, b, c):
        if a == b == c == 0:
            return Integer(0)

(请注意,如果您定义nargs),则不需要eval

相关问题