LINUX.ORG.RU

[gsl] интегралы

 


0

0

здравствуйте всем.
не могу найти, в GSL можно брать интегралы по дискретным функциям? а какие библиотеки (c/c++) используете вы для этого?


Оформляйте ее как отдельную сишную функцию и передавайте ссылку на эту функцию первым аргументом gsl_integration_qags. В мануале же даже пример есть.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

и аппроксимровать на лету, так я понял? - это не очень разумно, лече вручную подсчитать. можно ссылку на тот пример, если не сложно?

gavv
() автор топика

Что значит «по дискретным функциям»?

gsl-евские утилиты интегрирования работают с непрывными (кусочно-непрерывными) функциями на отрезке итегрирования.

Если у тебя функция заданная таблично, то надо использовать неадаптивные методы — квадратуры типа Гаусса-Лежандра (Якоби), если известна мера на отрезке, либо универсальные, вроде Кленшоу-Куртиса (Clenshaw-Curtis)

annoynimous ★★★★★
()
Ответ на: комментарий от gavv

можно ссылку на тот пример, если не сложно

Не помню, откуда я его качал: GSL reference manual 1.12

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от annoynimous

ну да. я думал, может есть алгоритмы, которым на вход именно сетку можно дать. потому что это быстрее, чем перерасчитывать входную сетку под сетку алгоритма.

gavv
() автор топика
Ответ на: комментарий от gavv

разными сплайнами легко аппроксимируются «на лету» кривые. Но почему нельзя просто посчитать сумму трапеций, если оно таблично заданное?

anonymous
()
Ответ на: комментарий от gavv

под адаптивные методы интегрирования, реализованные в gsl невозможно угадать сетку — она будат зависеть от поведения функции и требуемой точности.

Можно использовать неадаптивные методы, в gsl используются формулы Гаусса-Конрода с 31, 41 и 51 точками, но все же в этом случае лучше использовать свои сетки с известным положением узлов и весами.

У меня была как раз такая проблема, что мне нужно было строго лимитировать объем вычислений, но функция заранее известна не была. Я использовал квадратурную формулу Кленшоу-Куртиса, поскольку она сходится примерно так же, как и гауссовы формулы и универсальна.

annoynimous ★★★★★
()
Ответ на: комментарий от annoynimous

понятно
ну, раз нет, посчитаю сам

спасибо всем

формулы Гаусса-Конрода с 31, 41 и 51 точками

21, 43, 87 ? :)

gavv
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.