Python 函数返回的数组在调用之间更改了大小

Python 函数返回的数组在调用之间更改了大小,python,python-3.x,numpy,scipy,Python,Python 3.x,Numpy,Scipy,我正在尝试求解一个值数组,如下代码所述。但我得到了这个错误: Traceback (most recent call last): File "<ipython-input-842-cf2c76a38adb>", line 25, in <module> y1[i] = fsolve(VLE_2,guess,args=(x1[i],T[i])) File "/anaconda3/lib/python3.6/site-packages/scipy/opt

我正在尝试求解一个值数组,如下代码所述。但我得到了这个错误:

Traceback (most recent call last):

  File "<ipython-input-842-cf2c76a38adb>", line 25, in <module>
    y1[i] = fsolve(VLE_2,guess,args=(x1[i],T[i]))

  File "/anaconda3/lib/python3.6/site-packages/scipy/optimize/minpack.py", line 148, in fsolve
    res = _root_hybr(func, x0, args, jac=fprime, **options)

  File "/anaconda3/lib/python3.6/site-packages/scipy/optimize/minpack.py", line 227, in _root_hybr
    ml, mu, epsfcn, factor, diag)

ValueError: The array returned by a function changed size between calls

我正在使用Python 3 btw。请将完整的错误回溯添加到您的问题。编辑您的问题并将其作为代码格式的文本添加到那里@美元。谢谢你的反馈!我解决了。谢谢大家的意见。我必须让x2成为函数的一部分VLE_2(y1,x1,x2,T)’否则,它将为每个x1,T求解一个y值,但为多个x2,这将返回与所需大小不同的数组。
P = 5000

x1 = np.linspace(0.1,1,500)
x2 = 1-x1

def VLE_2(y1,x1,T):
    y2=1-y1
    tau12 = a12+b12/T
    tau21 = a21+b21/T
    G12 = np.exp(-0.4*tau12)
    G21 = np.exp(-0.4*tau21)
    gamma_1 = np.exp((x2**2)*((tau21*G21**2)/(x1+x2*G21)**2+(tau12*G12)/(x2+x1*G12)**2))
    gamma_2 = np.exp((x1**2)*((tau12*G12**2)/(x2+x1*G12)**2+(tau21*G21)/(x1+x2*G21)**2))
    Psat1 = np.exp((106.1)-7614.8/T-12.686*np.log(T)+1.0733e-5*T**2)
    Psat2 = np.exp((84.912)-6722.2/T-9.5157*np.log(T)+7.2244e-6*T**2)
    #sol = np.zeros(2)
    return y1*P - x1*gamma_1*Psat1


y1 = np.ones(500)
guess = 0.9

for i in range(0,500):
    y1[i] = fsolve(VLE_2,guess,args=(x1[i],T[i]))