【问题标题】:Computing Riemann-Liouville Integral using Sympy使用 Sympy 计算 Riemann-Liouville 积分
【发布时间】:2020-07-02 05:56:42
【问题描述】:

初学微积分,不知道这是怎么回事……

我正在尝试使用 sympy 计算 Python 中积分的 Riemann-Liouville 解释。但是,在 0 和 T 之间运行我的代码时,得到的积分包含 T 作为变量,这是我不想要的。我应该怎么做才能解决这个问题?

代码:

def integral(f, order):
    gamma_recip = 1/gamma(order)
    T = sympy.Symbol('T')
    r = sympy.Symbol('r')
    eq = (T-r) ** order - 1
    function_eq = eq * f(r)
    integral = sympy.integrate(function_eq, (r, 0, T))
    return integral

方程:

按要求提供示例调用: -0.333333333333333*T**3 + 0.0833333333333333*T**4.0

使用的功能和顺序:

def f(x):
    return x**2
print(integral(f, 1.0))

预期结果:

r**3/3

【问题讨论】:

  • 看起来 SymPy 的 mpmath 子包可以通过函数调用计算 Riemann-Liouville 积分,这是否涵盖了您的用例? lidavidm.me/sympy/modules/mpmath/calculus/…
  • @Zsolt,我希望我的程序返回一个函数而不是浮点数。不同的包很接近,但返回一组点而不是函数的表示。 pypi.org/project/differint
  • 你能举例调用你的函数吗? f 是一个特定的函数,还是一个 sympy 变量? order 是常量还是 sympy 变量?
  • 图像中的方程使用x 作为参数。所以,如果你写x而不是T,这个函数会更类似于你的图像。此外,您可以将x 作为integral 的额外参数。
  • @JohanC,我更新了图像以更好地反映我的代码。是的,f 是 Python 函数,order 是常量。

标签: python sympy q calculus


【解决方案1】:

两个问题:

  1. 您使用“T”作为积分限制,因此您最终会得到结果;如果您希望结果中出现“r”,请在函数中交换 T 和 r 的使用
  2. eq 的定义中,您没有在order - 1 周围加上括号;如果你这样做了,你会(使用你当前的代码)得到预期的T**3/3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 2020-04-13
    • 2018-04-11
    • 1970-01-01
    • 2022-06-14
    相关资源
    最近更新 更多