我有以下功能:
def equation1(xy, d=7.62, G=8.2728, rhop=7.51, ut=399):
ep, uc = xy # define variables
g = 981 # acceleration due to gravity, cm/s^2
f1 = 2*g*d*((ep**-4.7) - 1) - 0.01*(uc/ep - ut)**2
f2 = G - (uc/ep - ut)*rhop*(1 - ep)
return f1, f2
其中,我通过在SciPy中使用fsolve
来求解ep
和{
我不想为G
定义一个单一的值,而是希望为ep
和{G
值,例如G = [8, 10, 12]
。当我传递G的值列表时,我得到一个关于用序列设置数组元素的错误。在
是否可以使用fsolve
,其中一个参数是值的列表或数组?在
如果我运行你的函数:
但是看看调用堆栈。很长,但这条线很显眼
^{pr2}$它正在对你的函数进行测试调用。在
例如:
具体看一下你的函数产生了什么:
它无法将此元组转换为有效的1d数组,因此会出现错误消息。在
请注意,函数的参数是:
fsolve
将整个args
元组传递给函数。它不遍历数组或列表。在因此,您想要
fsolve
对于不同的G
值,您必须自己进行迭代。fsolve
(以及其他大多数scipy
函数)不会为您完成此操作。在您可以将
G
作为equation1
的参数,并通过fsolve
(使用其args
参数)将其传递为:在我的机器上显示:
^{pr2}$相关问题 更多 >
编程相关推荐