我是一个尝试学习科学计算的Python新手,因此在这件事上需要一些帮助。我要做的是,当4个变量从给定的数组中取值时,集成一个函数。当一个数组只表示一个变量时,它工作得很好,但对4个变量不起作用。 例如,这是有效的:
import scipy.integrate as integrate
from numpy import *
values1 = [3.333, 6.667, 10, 13.333, 16.667, 20] #these are test1 values
test2 = -2.333
test3 = 4.333
test4 = 0.4918
test5 = -12.005
f = lambda u : (u**(test1-1))*((1-u)**test3-test1-1)*((1-u*test4)**-test2)*exp(u*test5)
I=[]
for test1 in values1:
result, err = integrate.quad(f,0,1)
I.append(result)
print(I)
我想做的,但不起作用:
import scipy.integrate as integrate
from numpy import *
values1 = [3.333, 6.667, 10, 13.333, 16.667, 20] #these are test1 values
values2 = [-2.333, -5.667, -9, -12.333, -15.667, -19] #these are test2 values
values3 = [4.333, 7.667, 11, 14.333, 17.667, 21] #these are test3 values
test4 = 0.4918 #this is constant
values5 = [-12.005, -12.063, -12.121, -12.178, -12.235, -12.293] #these are test5 values
f = lambda u : (u**(test1-1))*((1-u)**test3-test1-1)*((1-u*test4)**-test2)*exp(u*test5)
I=[]
for test1, test2, test3, test5 in values1, values2, values3, values5:
result, err = integrate.quad(f,0,1)
I.append(result)
print(I)
我得到值错误:引用for循环的值太多,无法解包。我可以想象循环必须扩展以容纳所有数组,但我不确定如何扩展。你知道吗
使用
for .. in ..
循环,您不能像在示例代码中那样一次遍历多个列表。 可以使用函数zip(...)
返回元组列表,其中第i个元组包含每个列表中的第i个元素,如下所示:相关问题 更多 >
编程相关推荐