Я пытаюсь численно интегрировать произвольную (известную, когда я код) функцию в моей программе с использованием численных методов интеграции. Я использую Python 2.5.2 вместе с пакетом численных интеграций SciPy. Для того, чтобы получить чувство для этого, я решил попытаться интегрировать грех (х) и наблюдал этого behavior-Может кто-нибудь объяснить, почему scipy.integrate.quad дает разные результаты для одинаково длинного диапазона при интеграции sin (X)?
>>> from math import pi
>>> from scipy.integrate import quad
>>> from math import sin
>>> def integrand(x):
... return sin(x)
...
>>> quad(integrand, -pi, pi)
(0.0, 4.3998892617846002e-14)
>>> quad(integrand, 0, 2*pi)
(2.2579473462709165e-16, 4.3998892617846002e-14)
Я считаю такое поведение странного, потому что -
1. В обычной интеграции, интегрируя по полному циклу дает нуль.
2. При численном интегрировании это (1) не обязательно имеет место, поскольку вы можете просто быть , приближаясь к общей площади под кривой.
В любом случае, если предположить, что 1 имеет значение True или предполагается, что значение 2 истинно, я считаю поведение непоследовательным. Либо оба интегрирования (от -pi до pi и от 0 до 2 * pi) должны возвращать 0,0 (первое значение в кортеже является результатом, а второе - ошибкой) или return 2.257 ...
Может кто-нибудь объяснить, почему это это происходит? Неужели это непоследовательность? Может ли кто-то сказать мне, если мне не хватает чего-то действительно элементарного из числа методов?
В любом случае, в моем конечном приложении, я планирую использовать вышеуказанный метод для нахождения длины дуги функции. Если у кого-то есть опыт в этой области, пожалуйста, сообщите мне о лучшей политике для этого в Python.
Edit
Примечание
У меня уже есть первые дифференциальные значения во всех точках в диапазоне, хранящихся в массиве.
Текущая ошибка допускается.
Конец примечания
Я прочитал Wikipaedia на этом. Как отметил Димитрий, я буду интегрировать sqrt (1 + diff (f (x), x)^2), чтобы получить длину дуги. Я хотел спросить, есть ли лучшее приближение/Лучшая практика (?)/Более быстрый способ сделать это. Если требуется больше контекста, я отправлю его отдельно/пост контекста, как вы пожелаете.
Вот сообщение в блоге http://algorithmist.wordpress.com/2009/01/05/quadratic-bezier-arc-length/, которое может показаться вам полезным. Ссылка из блога http://www.algorithmist.net/crlength.html – jfs
Спасибо. Я посмотрю ссылки. – batbrat