0
我試圖使用fsolve從scipy.optimization解決一組6個非線性方程組中的複數空間。 Unfortuantely我總是得到錯誤:類型錯誤:只有長度爲1的陣列可以被轉換到Python標量,通過調用fsolve
TypeError: only length-1 arrays can be converted to Python scalars
用下面的代碼
import numpy as np
from scipy.optimize import fsolve
U_1 = 465
R_1 = 0.007255
R_21 = 0.006906607
M = 585.3
p = 2
f_1 = 91
omega_1 = np.pi*f_1
X_1sig = omega_1 * 2.0979e-4
X_2sig = omega_1 * 1.5016923e-4
X_m = omega_1 * 5.074
def equations(p):
P_el, P_m, I_1, I_2, s, n = p
return (
-P_el + 3*np.real(U_1*np.conjugate(I_1)),
-P_el + 3*(I_1*np.conjugate(I_1)*R_1 + I_2**2*R_21/s),
-P_m + 3*I_2**2*R_21*(1-s)/s,
-P_m + M/(2*np.pi*n),
-s + 1 - p*n/f_1,
-I_1 + U_1/(R_1 + 1j*X_1sig + 1j*X_m*(R_21/s+1j*X_2sig)/(1j*X_m + R_21/s + 1j*X_2sig))
)
P_el, P_m, I_1, I_2, s, n = fsolve(equations, (180000,180000,200+80j,20,0.01,45))
我減少了代碼到一個小例子,但隨後的錯誤會消失。我聽說fsolve只能解決實數空間中的問題。所以這可能是問題。但是,那麼我不會得到一個不同的錯誤信息?我仍然希望使用不同解算器的代碼(如果我找到任何複數),所以如果我先解決了這個問題將會很好。 ģ
你檢查'方程(X0)'的輸出?似乎返回的元組有問題。 – cel 2015-03-19 11:23:55
尤其是'p'在'-s + 1 - P * N/F_1,'似乎非常可疑。 – cel 2015-03-19 11:32:45