-1
我試圖用scipy.optimize.brute
功能AttributeError的:「元組」對象有沒有屬性「拉威爾」
import numpy as np
import scipy.optimize as so
def root2d(x,a,b):
F1 = np.exp(-np.exp(-(x[0]+x[1]))) - x[1]*(b+x[0]**2)
F2 = x[0]*np.cos(x[1]) + x[1]*np.sin(x[0]) - a
return (F1,F2)
a = 0.5
b = 1
x0 = np.array([-0.1,0.1]) # initial guesses
rranges = (slice(-4,4,0.2),slice(-4,4,0.2))
print(so.brute(root2d,rranges,args=(a,b),finish=so.fmin))
,我感到我不明白的錯誤,解決兩個同時非線性方程組:AttributeError: 'tuple' object has no attribute 'ravel'
。這是什麼意思,如何修復我的代碼(如果可能的話)?
編輯:完整的錯誤消息
Traceback (most recent call last):
File "<ipython-input-2-29b9507fcb99>", line 1, in <module>
runfile('.../test')
File "C:\WinPython\WinPython-64bit-3.5.2.3\python-3.5.2.amd64\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile
execfile(filename, namespace)
File "C:\WinPython\WinPython-64bit-3.5.2.3\python-3.5.2.amd64\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "../test.py", line 111, in <module>
print(so.brute(root2d,rranges,args=(a,b),finish=so.fmin))
File "C:\WinPython\WinPython-64bit-3.5.2.3\python-3.5.2.amd64\lib\site-packages\scipy\optimize\optimize.py", line 2711, in brute
indx = argmin(Jout.ravel(), axis=-1)
AttributeError: 'tuple' object has no attribute 'ravel'
顯示完整的回溯。 Python解釋器爲您提供儘可能多的信息來幫助您解決問題 - 您爲什麼不把它包含在這裏供其他人使用? –
由於您正在返回2個變量,所以您需要像訪問列表索引時一樣訪問它們。 – Aditya
最小化函數只能有一個輸出。您需要結合F1和F2或分別進行優化。 – kazemakase