У меня проблема с optimize.minimize
.Я вставлю код и объясню его после.
def getC(p,q):
def C1D(l):
firstTerm = 1/np.sqrt(-(-l + 2*p*(-1+l))*(2 - l + 2*p*(-1+l)))
secondTerm = firstTerm = 1/np.sqrt(-(-l + 2*q*(-1+l))*(2 - l + 2*q*(-1+l)))
return 2*l*(firstTerm + secondTerm)
return C1D
pVal = []
qVal = []
lMinVal = []
for p in np.round(np.linspace(0,1,10,False),3):
for q in np.round(np.linspace(0,1,10,False),3):
pVal.append(p)
qVal.append(q)
C = getC(p,q)
def cons_quantum(l):
return C(l) - 2
cons = {'type':'ineq', 'fun': cons_quantum}
opt.minimize(C, 1, cons, bounds=((0,1),))
Есть эта функция , и я пытаюсь просмотреть некоторые значения p и q (определенные в цикле for) и для каждого из них.У меня будет более простая функция - это просто функция C с фиксированными p и q.Затем я минимизирую эту более простую 1-параметрическую функцию с ограничением на то, что функция C (l) должна быть больше или равна 2. (В конце концов я добавлю строку, которая добавляет минимальное значение l в список lMinVal
)
Моя проблема в том, что при запуске я получаю следующую ошибку:
File "C:\Users\*****\AppData\Local\Continuum\anaconda3\lib\site-packages\scipy\optimize\optimize.py", line 293, in function_wrapper
return function(*(wrapper_args + args))
TypeError: C1D() takes 1 positional argument but 2 were given