Как работать с массивами; Bissection - PullRequest
0 голосов
/ 23 апреля 2020

Я пытался понять, почему я это понимаю. Значение истинности массива с более чем одним элементом неоднозначно. Используйте 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 строк на графике

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...