【问题标题】:Define functions recursively with derivative in Python在 Python 中使用导数递归定义函数
【发布时间】:2015-04-07 20:18:24
【问题描述】:

如何定义一系列函数 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 中完成。

【问题讨论】:

    标签: python-2.7 scipy sympy


    【解决方案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),但我们不想在这种情况下进行评估,因为我们不知道它是哪个整数。

    【讨论】:

      猜你喜欢
      • 2017-07-10
      • 1970-01-01
      • 2023-01-12
      • 2015-03-21
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多