Я пытался понять, почему я это понимаю. Значение истинности массива с более чем одним элементом неоднозначно. Используйте a.any () или a.all () и обходите вокруг
Мой код:
def y(T):
y= Eatm + (1-alfa)*Esolar_interpolado-sigma*T*4-beta*(T-Tar_interpolado)
return y
def bissec(y,xLow,xHigh,maxErro,maxIter):
nIter=0
if np.any(y(xLow)*y(xHigh)>0):
raiz=float('nan') # not a number: ERRO
else:
erroAbs=xHigh-xLow
while erroAbs>maxErro and nIter<maxIter:
nIter=nIter+1
raiz=0.5*(xHigh+xLow)
if y(xLow)*y(raiz)<0:
xHigh=raiz
elif y(xLow)*y(raiz)>0:
xLow=raiz
else:
xHigh=raiz
xLow=raiz
erroAbs=xHigh-xLow
return raiz,erroAbs,nIter
Сообщение об ошибке:
bissec(y,1,500,0.0001,100)
Traceback (most recent call last):
File "<ipython-input-49-2bb9b9f27835>", line 1, in <module>
bissec(y,1,500,0.0001,100)
File "<ipython-input-37-b19accf5aa25>", line 10, in bissec
if y(xLow)*y(raiz)<0:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Я действительно думаю проблема в том, что метод деления на части предназначен для фиксированных констант, но в этом случае константы меняются по часам в день в месяц в год, поэтому каждая константа является массивом, и я думаю, что именно это и вызывает ошибку.
В крайнем случае я буду сделать для l oop, что делает линии для каждого значения константы так около 350000 строк на графике