我有一个相当冗长的等式,我需要使用scipy.integrate.quad进行整合,并想知道是否有办法将lambda函数相互添加.我的想法是这样的
y = lambda u: u**(-2) + 8
x = lambda u: numpy.exp(-u)
f = y + x
int = scipy.integrate.quad(f, 0, numpy.inf)
Run Code Online (Sandbox Code Playgroud)
我真正使用的方程远比我在这里提到的方程复杂得多,因此为了便于阅读,将方程式分解为更小,更易于管理的部分将是有用的.
有没有办法处理lambda函数?或者也许是另一种甚至不需要lambda函数但会提供相同输出的方法?
我有很多要集成的数据,并希望找到一种只用矩阵来完成所有操作的方法,并且愿意在准确性方面做出妥协以提高性能.我的想法是这样的:
import numpy
import scipy
a = np.array([1,2,3])
def func(x):
return x**2 + x
def func2(x):
global a
return a*x
def integrand(x):
return func(x)*func2(x)
integrated = quad(integrand, 0, 1)
Run Code Online (Sandbox Code Playgroud)
所以我试图将每个元素集成到数组中integrand.
我知道有可能使用numpy.vectorize()这样的:
integrated = numpy.vectorize(scipy.integrate.quad)(integrand, 0, 1)
Run Code Online (Sandbox Code Playgroud)
但我无法做到这一点.有没有办法在python中执行此操作?
解
那么现在我学到了更多的python我可以回答这个问题,如果有人碰巧稳定在它上面并且有同样的问题.这样做的方法是编写函数,好像它们将采用标量值,而不是向量作为输入.所以按照上面的代码,我们会有类似的东西
import numpy as np
import scipy.integrate.quad
a = np.array([1, 2, 3]) # arbitrary array, can be any size
def func(x):
return x**2 + x
def func2(x, a):
return a*x
def integrand(x, a):
return func(x)*func2(x, a)
def integrated(a): …Run Code Online (Sandbox Code Playgroud)