如何定义一系列函数h_k:k = 1,2,3,... 通过使用两个已知函数f = f(x)和g = g(x)如下:
H_1 = F / G, h_ {k + 1} = diff(h_k,x)/ g,对于k = 1,2,3,.....
请注意,新函数有两个条目h(k,x)= h_k(x)。 我想在Sympy做这件事。
答案 0 :(得分:1)
如果k
始终是显式整数,只需使用Python函数:
def h(x, k):
if k == 1:
return f(x)/g(x)
return diff(h(x, k - 1), x)/g(x)
如果您想允许符号k
(如k = Symbol('k')
),则子类sympy.Function
class h(Function):
@classmethod
def eval(cls, x, k):
if k.is_Integer and k.is_positive:
if k == 1:
return f(x)/g(x)
else:
return diff(h(x, k - 1), x)/g(x)
(请注意,如果eval
返回None
(即,它返回函数的底部而不返回),则该函数将保持未评估状态。
请注意,我们使用大写k.is_Integer
(不 I
)检查k.is_integer
。这意味着k
是一个显式整数,如1,2,3,.... k.is_integer
也适用于Symbol('k', integer=True)
,但我们并不想评估在这种情况下,因为我们不知道它是哪个整数。