如何计算依赖于另一个函数积分的函数的积分
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)
所有积分都可以用符号计算,不需要quad
。 F
是
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
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)
所有积分都可以用符号计算,不需要quad
。 F
是
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