Как можно изолировать результат функции scipy.integrate.quad, а не иметь результат и ошибку вычисления?

Я пытаюсь создать массив интегральных значений, которые будут использоваться в дальнейшем в расчетах. Проблема в том, что integrate.quad возвращает (ответ, ошибка). Я не могу использовать это в других вычислениях, потому что это не плавание; это набор из двух чисел.

2 ответа

Решение

integrate.quad возвращает tuple двух значений (и, возможно, больше данных в некоторых обстоятельствах). Вы можете получить доступ к значению ответа, обратившись к нулевому элементу кортежа, который возвращается. Например:

# import scipy.integrate
from scipy import integrate

# define the function we wish to integrate
f = lambda x: x**2

# do the integration on f over the interval [0, 10]
results = integrate.quad(f, 0, 10)

# print out the integral result, not the error
print 'the result of the integration is %lf' % results[0]

Ответ @BrendanWood в порядке, и вы согласились, так что он, очевидно, работает для вас, но есть и другая идиома Python для обработки этого. Python поддерживает "множественное назначение", то есть вы можете сказать, x, y = 100, 200 назначить x = 100 а также y = 200, (См. http://docs.python.org/2/tutorial/introduction.html для примера во вводном руководстве по Python.)

Чтобы использовать эту идею с quadВы можете сделать следующее (модификация примера Брендана):

# Do the integration on f over the interval [0, 10]
value, error = integrate.quad(f, 0, 10)

# Print out the integral result, not the error
print('The result of the integration is %lf' % value)

Я считаю, что этот код легче читать.

Другие вопросы по тегам