3
私はphi
とPhi
という2つのカスタム関数をSympyで定義しています。私はそれがPhi(x)+Phi(-x) == 1
を知っています。 Sympyにこの単純化ルールをどうやって提供しますか?これをクラス定義で指定できますか?ここでは特殊関数の簡略化規則を実装しています
は、私がこれまで何をやったかである:好奇心、phi
とPhi
については
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)
はそれぞれ、ガウスPDFとCDFを表します。これらはsympy.stats
に実装されています。しかし、私の場合は、結果をphi
とPhi
で解釈する方が簡単です。
を '入力引数が負の場合? – Stelios
ブリリアント!ありがとう、@ Stelios! 'phi'クラスに似た 'eval'メソッドを' phi'クラスに追加しますが、 '1-cls(-arg)'を返すことは完全に機能します。それを回答として提供して、私が質問に答えたようにすることができるようにしてください。 – Stefan
私のコメントは単なるコメントでした。私はあなたが最終的にクラスをどのように実装したかを示すあなた自身の答えを書くことをお勧めします。 – Stelios