我要编码的函数是f(x)= beta /(pi *(x ^(2)+ beta ^(2)) 对于β值0,10,20,50,100
所以我想在从负无穷大到无穷大的x范围内集成这个函数。我有以下代码的基础,但我不确定如何通过测试传递数组。
感谢您的帮助!
from scipy.integrate import quad
from sympy import Symbol
from math import pi
import numpy as np
import matplotlib.pyplot as plt
def integrand(x):
return limit(beta/(np.pi*(x**2 + beta**2)));
xlo = '-inf'
xhi = 'inf'
result = quad(integrand, xlo, xhi, args=(beta))
print result
答案 0 :(得分:0)
试试这个:
from scipy.integrate import quad
from math import pi
import numpy as np
def integrand(x, beta):
return beta/(np.pi*(x**2 + beta**2))
for beta in [0., 1., 10., 20., 50., 100.]:
xlo = -np.inf
xhi = np.inf
result = quad(integrand, xlo, xhi, args=(beta))
print('beta: {}, result: {}, error estimate: {}'.format(beta, *result))
如果beta>积分应始终为1如果您integrate it,则无论beta如何,此表达式均为0。我不确定为什么limit
在那里或它应该来自哪里,所以我删除了它。如果beta为零,则函数在x = 0时未定义,您可能需要小心。