【发布时间】: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 是常量。