首页 > 解决方案 > 如何集成一个根据另一个符号返回值的函数

问题描述

我目前正在尝试使用 集成一个函数scipy.integrate.quad,但我的函数有两个变量,第一个是x,这是一个被集成出来的变量,第二个是G,我试图在集成完成后解决这个问题。

我已经尝试使用sympy.integrate它支持符号的集成,但是我的积分太复杂而无法评估。

我试图解决的积分示例如下所示:

C = integrate.quad(lambda x: x/(1+(3*G)*x)

我希望能够评估积分,以便我可以求解,G因为C它是一个常数值。

我希望输出是一些G我可以用来解决G的函数,但我无法弄清楚如何在没有事先定义的情况下集成函数G

标签: python-3.xscipyintegrationsympy

解决方案


首先注意您的最终目标是什么:求解方程f(G)==C,其中f()是单个参数的函数。现在,碰巧你f是关于​​第二个变量的积分结果。因此,只需定义一个计算此积分的单参数函数,如下所示:

def f(G):
    return quad(lambda x: x/(1+(3*G)*x), 0, 10)[0]

并调用scipy.optimize.root_scalar求解方程(C==1在这个例子中)

root_scalar(lambda G: f(G)-1, x0=2, bracket = [0,5])
      converged: True
           flag: 'converged'
 function_calls: 10
     iterations: 9
           root: 3.1734489114921782

推荐阅读