2010-12-15 4 views
2

Я пытаюсь выполнить интеграл от (2**(1/2)*y**(1/2)/2)**2 от 0 до 5 (также показано here). Я использовалИнтегралы Python

func = lambda y: ( 2**(1/2) * y**(1/2)/2 )**2 and a == 0 and b == 5 
from scipy import integrate 
integrate.quad(func, a b) 

По какой-то причине, я получаю значение 1,25, в то время как вольфрам говорит, что это должно быть 6,25? Кажется, я не могу пощупать ошибку.

p.s. извините за katrie ошибки, я забыл, что питон использует и не & & для логического И


РЕШИТЬ: это была глупая ошибка INT/поплавок. всем спасибо.

+0

Что такое && должно быть? – katrielalex

+2

Какую версию Python вы используете? Во многих версиях Python '1/2' будет оцениваться как' 0'. Кроме того, ссылка WolframAlpha показывает ответ на интеграл от 'y/2' между 0 и 5. – dheerosaur

+0

Кроме того, вы знаете, что функция, которую вы написали выше, - это просто' y/2', правильно? Вы квадратизируете квадратный корень ... – katrielalex

ответ

3

Ну, позвольте мне написать вашу функцию в нормальный математическая нотация (я не могу думать в Python). Я не люблю **, как он получает в заблуждение:

(2**(1/2)*y**(1/2)/2)**2  => 
(2^(1/2) * (1/2) * y^(1/2))^2 => 
2 * (1/4) * y     => 
y/2 

Так интегрировать, antidifferentiate (я просто думал вслух):

antidifferentiate(y/2) = y^2/4 

Таким образом,

integral('y/2', 0, 5) = 
5^2/4 - 0^2/4 = 
25/4 = 
6.25 

справа. Вы пробовали заменить 1/2 на 0.5? Его можно интерпретировать как фактор двух целых чисел, который округляется.

Попробуйте это (как и другие предложили):

func = lambda y: (2**(0.5) * y**(0.5)/2.0)**2.0 & a == 0 & b == 5 

from scipy import integrate 
integrate.quad(func, a b) # What's 'a b'? Maybe 'a, b' would work? 

Удачи!

+0

Проблема заключалась только в целых числах. спасибо, что нашли время, чтобы написать все это! Я должен спросить, ты как-то связан с Блендером? –

+0

Я довольно вовлечен (как пользователь, а не как разработчик). Я все еще воскрешаю BlenderOS, так как это случилось много лет назад. – Blender

+0

Кроме того, проблем нет. Зачет финалов исчисления на этой неделе, поэтому я интегрирую в свой сон;) – Blender

0

Ну, какое значение должно быть? Кроме того, вы должны добавить больше скобок в свое уравнение. Я понятия не имею, что (2**(1/2)*y**(1/2)/2)**2 получает разбор.

+0

Извините, вот почему я привязался к вольфрамалфе, это должно быть 6,25. постскриптумдобавил некоторый интервал к OP –

+0

Возможно, это как разворачивать вольфрам, но так ли это, как питон разбирает его? – Falmarri

+0

Да, питон фактически решил для x от y = 2 * x ** 2, и он проверен с помощью wolfram –

2

Проблема в том, что Python видит (1/2) и оценивает его с помощью целочисленного деления, уступая нулю.

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