【发布时间】:2020-02-03 21:06:36
【问题描述】:
我正在尝试对依赖于 E 和 x 的函数积分关于 dE 的定积分,x 是我稍后将使用的另一个参数。我定义了一个可以帮助我解决这个问题的 x 函数,但它似乎不起作用。当我给新函数一个特定的值——例如 1 或 10——它总是返回 0。这是我的代码:
%matplotlib inline
import matplotlib.pyplot as plt
from scipy.integrate import quad
import numpy as np
from numpy import pi
from numpy import arange
gg=100.0
ms=100.0
def integrand(E, xx):
return (gg/2*pi)*E*(E**2-ms**2)**(1/2)/(np.exp(E*xx*ms)-1)
def nn(x):
return quad(integrand, ms, np.inf, args=(x)) ## quad(funcion, lim inf, lim sup, args)
我需要的是以后能够以参数 x 为变量调用函数 nn。
【问题讨论】:
-
您需要为被积函数提供
E的值。如果nn只接受x作为参数,那么它需要弄清楚E是什么,以便将其添加到args。 -
另外,
(x)不是一个元组,因为 Python 解析括号的方式有些怪异。你可能想要(x,)。 -
@MatthewWoodruff 但是 E 是我的积分变量,它可以取 ms = 100 到 Inf 之间的任何值。
-
哦,我知道
E,这是有道理的。但是,请确保args是一个元组。但无论如何,你要求 numpy 在 100 和 inf 之间进行数值积分?我不知道这是不可能的,但我看不出 numpy 如何正确地做到这一点。您是否尝试过使用有限上限?
标签: python numerical-integration