TypeError: объект типа 'int' не имеет len () при использовании sop.brute - PullRequest
0 голосов
/ 18 мая 2018

Я использую Python3.6, и я давно запутался в этом вопросе .. вот мой код.

def fo(x,y):
    z=np.sin(x)+0.05*x**2+np.cos(y)+0.05*y**2
    if output == True:
        print("%8.4f %8.4f %8.4f" % (x,y,z))
        return z

import scipy.optimize as sop

sop.brute(fo,(-10,10.1,5),(-10,10.1,5),finish = None)

Вот ошибка, которую я получаю:

Traceback (most recent call last):

  File "<ipython-input-12-c7886e35ff4b>", line 1, in <module>
    sop.brute(fo,(-10,10.1,5),(-10,10.1,5),finish = None)

  File "C:\ProgramData\Anaconda3\lib\site-packages\scipy\optimize\optimize.py", line 2811, in brute
    if len(lrange[k]) < 3:

TypeError: object of type 'int' has no len()

вот еще одна попытка:

r1=slice(-10,10.1,5)

r2=slice(-10,10.1,5)
sop.brute(fo,r1,r2,finish = None)

и ошибка:

Traceback (most recent call last):

  File "<ipython-input-48-230c07265998>", line 1, in <module>
    sop.brute(fo,r1,r2,finish = None)

  File "C:\ProgramData\Anaconda3\lib\site-packages\scipy\optimize\optimize.py", line 2804, in brute
    N = len(ranges)

TypeError: объект типа 'slice' не имеет len ()

sop.brute(fo,(r1,r2),finish = None)

TypeError: fo() missing 1 required positional argument: 'y'

Я новичок здесь, и извините, если я задаю глупый вопрос, но я не могу решить его TT thx много

...