2016-03-04 2 views
0

Я использовал scipy.integrate, чтобы получить значение Fresnel интегралов, и теперь я хочу построить спираль Корну. Однако, когда я пытаюсь создать массив со значением интеграла для нескольких входов, я получаю ошибку, упомянутую в заголовке. Я не вижу, как то, что я делаю, имеет какое-либо отношение к значению Истины, упомянутому в ошибке.Ошибка при применении функции к массиву Ошибка «ValueError: значение истины массива с несколькими элементами неоднозначно. Используйте a.any() или a.all()«

Мой код:

def COSINTEGRAND(x): 
    return math.cos((pi * x**2)/2) 
def SININTEGRAND(x): 
    return math.sin((pi * x**2)/2) 
def COSINTEGRAL(u): 
    return quad(COSINTEGRAND, 0, u) 
def SININTEGRAL(u): 
    return quad(SININTEGRAND, 0, u) 

a = np.linspace(-10,10,100) 
b = COSINTEGRAL(a) 
print (b) 

Любое объяснение ошибки или методы, чтобы исправить это было бы оценено. Я получил ту же ошибку при попытке построить прямую прямую - он, похоже, относится к части кода scipy.integrate

+0

Что такое 'dtype' массивов здесь? эти массивы numpy? если так называете 'np.cos' и т. д. – EdChum

ответ

2

Многие из функций, которые вы используете, не знают, как обращаться с массивами numpy. Эта функция включает в себя функцию scipy.integrate.quad.

квадроциклы документы: http://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.quad.html#scipy.integrate.quad

+0

Это, похоже, не изменило ситуацию, к сожалению. Я получаю идентичную ошибку при замене math.cos и math.sin на np.cos и np.sin –

+0

. Третий аргумент scipy.integrate.quad ('u' в' 'COSINTEGRAL') также принимает регулярный float, а не numpy массив. – acdr

+0

Хорошо, спасибо. Означает ли это, что для меня, чтобы построить значение на нескольких входах, мне пришлось бы написать цикл для запуска функции несколько раз? –

Смежные вопросы

 Смежные вопросы