Lambda 函数不按位置顺序接收参数
Lambda function doesn't take arguments in the order of their positions
我想将 a * b**2
与限制 a = [0, 2]
和 b = [0, 1]
相结合。
from scipy import integrate
f1 = lambda a, b: a * b ** 2
print((integrate.dblquad(f1, 0, 2, 0, 1))[0])
Output: 1.333...
预期结果:0.666...
出了什么问题?:正在使用限制 a = [0, 1] 和 b = [0, 2] 进行积分。
问题:为什么 lambda 不按位置顺序读取参数?
来自文档 (https://docs.scipy.org/doc/scipy/reference/tutorial/integrate.html)
顺序是首先给出积分中最后一个度量的范围,然后是第一个。这意味着:
from scipy.integrate import dblquad
print(dblquad(lambda a, b: a * b ** 2, 0, 2, lambda b: 0, lambda b: 1)[0])
print(dblquad(lambda a, b: a * b ** 2, 0, 1, lambda a: 0, lambda a: 2)[0])
评估为:
1.3333333333333335
0.6666666666666667
因此,您需要翻转顺序才能获得所需的结果。
我想将 a * b**2
与限制 a = [0, 2]
和 b = [0, 1]
相结合。
from scipy import integrate
f1 = lambda a, b: a * b ** 2
print((integrate.dblquad(f1, 0, 2, 0, 1))[0])
Output: 1.333...
预期结果:0.666...
出了什么问题?:正在使用限制 a = [0, 1] 和 b = [0, 2] 进行积分。
问题:为什么 lambda 不按位置顺序读取参数?
来自文档 (https://docs.scipy.org/doc/scipy/reference/tutorial/integrate.html) 顺序是首先给出积分中最后一个度量的范围,然后是第一个。这意味着:
from scipy.integrate import dblquad
print(dblquad(lambda a, b: a * b ** 2, 0, 2, lambda b: 0, lambda b: 1)[0])
print(dblquad(lambda a, b: a * b ** 2, 0, 1, lambda a: 0, lambda a: 2)[0])
评估为:
1.3333333333333335
0.6666666666666667
因此,您需要翻转顺序才能获得所需的结果。