Раньше у меня были проблемы с этим , но теперь он как-то работает.
Теперь у меня следующая проблема.Мне нужно связать значения в функцию-член, прежде чем я вызову boost :: bisect с той же функцией.Я нашел довольно хороший учебник и следил за ним, но мне кажется, что я все еще делаю что-то не так.
Сначала я создал тестовый класс, в котором я получил следующую работу:
std::pair<double, double> result = bisect(&Func, 0.0, 1.0, TerminationCondition());
double root = (result.first + result.second) / 2;
После этого я добавил привязку «на лету, поскольку я думал, что она может работать»
std::pair<double, double> result = bisect(boost::bind(&CLASS::Function,this, _1), 0.0, 1.000000, TerminationCondition());
В результате возникла ошибка.ошибка: завершить вызов после бросания экземпляра 'boost :: exception_detail :: clone_impl>' what (): ошибка в функции boost :: math :: tools :: bisect: без изменения знака в boost :: math :: tools:: bisect, либо нет корня для поиска, либо в интервале несколько корней (f (min) = -0.0032916729090909091).
В любом случае, здесь class :: function, которая не работает как функция-членс привязкой по какой-то причине.Я проверил это как не член, и он работает
double CLASS::Function(double c)
{
/* values: m_a, m_b, m_c, m_d, and m_minus are located in .h file */
normal norm;
double temp = m_d*sqrt(c);
double total = ((1-boost::math::pdf(norm,(m_a*c+m_b)/temp))-(1 - m_c)+boost::math::pdf(norm,(m_a*c+m_b)/temp));
return (total - m_minus);
}