如何计算依赖于另一个函数积分的函数的积分

How to compute the integral of a function which depends on the integral of another function

from scipy.integrate import quad
from math import sqrt
f = lambda x, a: a**2 * x # here a is a constant.
F = lambda x, a: quad(f, 0, x, args=(a,))[0]
rho = 5

我需要计算

的积分
1/sqrt(F(rho,a)-F(s,a)), 

s是从0(下限)到rho(上限)。

我认为您的问题缺少您之前 post 中的一些信息(例如关于 a)。您应该通过编辑您的问题文本来解决这个问题。


关于当前的问题:为什么不直接定义一个新函数g,然后引用另一个函数并像F一样集成?

from scipy.integrate import quad
from math import sqrt

f = lambda x, a: a**2 * x
F = lambda x, a: quad(f, 0, x, args=(a,))[0]

rho = 5
g = lambda x, a: 1 / sqrt(F(rho, a) - F(x, a))

I = quad(g, 0, rho, args=(4,))
print(I)

这会打印:

(0.5553603672694568, 1.9614421198355103e-11)

所有积分都可以用符号计算,不需要quadF

def F(x):
    return a**2 * x**2 / 2

def g(x):
    1 / sqrt(a**2 / 2 * (rho**2 - s**2))

val = quad(g, 0, rho)

pi / sqrt(2) / a

(独立于 rho)。


此外,您可以简单地在函数之外定义a。 (我一直不明白为什么 quad 必须有一个 args 参数。)

from scipy.integrate import quad
from math import sqrt

a = 3.14

f = lambda x: a**2 * x
F = lambda x: quad(f, 0, x, args=(a,))[0]
rho = 5