C ++: использование boost для вычисления простых определенных интегралов

Кто-нибудь знает, как использовать Boost для решения простых определенных интегралов?

Например. -x ^ 2 + 1 от -1 до 1?

Я пытался читать форсировать документацию, но я не могу понять, как правильно передать функцию.

Спасибо

Изменить: моя попытка до сих пор

using namespace boost::math;

typename function_type; // this is probably wrong

function_type f     // and this
{
return -x*x+1;
};

int main(int, char**)
{
const double val  =
integral(0.0,
1,
0.001,
f);        // my question is, what do I put in here? How do I format f.
}

-2

Решение

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

Библиотека используется для операций с плавающей запятой с множественной точностью, и одним из примеров является простое приближение интегралов Римана. Суть примера в том, что интегралы Римана настолько просты, что их можно использовать для демонстрации модной библиотеки.

В вашем случае вам даже не придется беспокоиться о передаче функции. Вы можете просто выписать метод Римана, заменив -x^2 + 1 непосредственно.

Тем не менее, типичный C ++ способ передать его в качестве аргумента будет [](double x) { return -x*x+1.0;}, Это неназванный функция или лямбда. Ему не нужно собственное имя, поскольку у параметра уже есть имя.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]