Почему моя определенная функция не принимает массив в качестве входных данных?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему моя определенная функция не принимает массив в качестве входных данных?

Сообщение Anonymous »


Я работаю с двойным интегралом, а внутренний интеграл имеет переменные границы. Я написал функцию, используя четырехъядерную интеграцию SciPy, которая позволяет мне вычислить этот интеграл. Однако я хочу просто вычислить внутренний интеграл, чтобы у меня остался только один невычисленный интеграл по некоторой переменной. Затем я хочу построить график этого «половинного» оцененного двойного интеграла в зависимости от диапазона этой переменной, чтобы я мог увидеть некоторую тенденцию. Однако когда я ввожу массив этой переменной (это всего лишь 0–10 000, но с шагом 1), появляется следующее сообщение об ошибке:

"ValueError: значение истинности массива, содержащего более одного элемента, неоднозначен. Используйте a.any() или a.all()"

Ранее я определил функции, которые позволяют мне вводить массив (который выводит эту функцию во всех точках массива), поэтому я не уверен, почему это сообщение появляется сейчас. Я думаю, это как-то связано с тем, что я использовал «квадратную» интеграцию SciPy при определении функции. Как мне обойти это, чтобы можно было ввести массив?

Код: Выделить всё

import numpy as np
from scipy import integrate
from scipy.integrate import quad
import matplotlib.pyplot as plt

#This is the array of values of the variable I ultimately want to have the function plotted
against
timearray = np.arange(0,10000,1)

#This below defines the general function, that is with respect to two variables (p and t)
def thomtest(p,t):
d = 3.086e22
c = 2.998e10
return (3*((np.cos(p + (2*t/(d*p))))**2))/(8*(t+((p**2)*d/(2*c))))

#The function below evaluates just the inner-integral
def phib(t):
d = 3.086e22
c = 2.998e10
return quad(thomtest,0.00001*(c*t)/d,np.pi, args=(t))[0]

#This evaluates the outer-integral, giving me the complete numerical answer
doubleintegral = quad(phib,0,((3.086e22)/(2.998e10)))

#This below is what gives me the error message: "ValueError: The truth
#value of an array with more than one element is ambiguous.
#Use a.any() or a.all()". Apparently I cannot input an array
print(phib(timearray))
Attached is a picture of the full error message


Источник: https://stackoverflow.com/questions/606 ... s-an-input
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»