gpt4 book ai didi

sympy - 对特殊功能实现简化规则

转载 作者:行者123 更新时间:2023-12-01 13:34:54 26 4
gpt4 key购买 nike

我在 Sympy 中定义了两个自定义函数,称为 phiPhi。我知道 Phi(x)+Phi(-x) == 1。我如何为 Sympy 提供此简化规则?我可以在我的类定义中指定它吗?

这是我到目前为止所做的:

from sympy import Function


class phi(Function):

nargs = 1

def fdiff(self, argindex=1):
if argindex == 1:
return -1*self.args[0]*phi(self.args[0])
else:
raise ArgumentIndexError(self, argindex)

@classmethod
def eval(cls, arg):
# The function is even, so try to pull out factors of -1
if arg.could_extract_minus_sign():
return cls(-arg)


class Phi(Function):

nargs = 1

def fdiff(self, argindex=1):
if argindex == 1:
return phi(self.args[0])
else:
raise ArgumentIndexError(self, argindex)

出于好奇,phiPhi 分别代表高斯 PDF 和 CDF。这些在 sympy.stats 中实现。但是,就我而言,用 phiPhi 来解释结果会更容易。

最佳答案

根据 Stelios 的评论,如果 x 为负,Phi(x) 应返回 1-Phi(-x)。因此,我修改了 Phi 如下:

class Phi(Function):

nargs = 1

def fdiff(self, argindex=1):
if argindex == 1:
return phi(self.args[0])
else:
raise ArgumentIndexError(self, argindex)

@classmethod
def eval(cls, arg):
# Phi(x) + Phi(-x) == 1
if arg.could_extract_minus_sign():
return 1-cls(-arg)

关于sympy - 对特殊功能实现简化规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44283354/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com