Я пытаюсь использовать метод Boost Bisection, описанный Вот.
Я видел несколько примеров того, как заставить это работать, например. Как использовать биссекцию?, но я не понимаю, как применить их к моей конкретной установке.
Вот набросок кода, который иллюстрирует то, что я пытаюсь сделать.
class Model {
double b;
double root;
public:
double func(double x, double c);
void solve(void);
};double Model::func(double x, double c) {
return (x*x*x + (b*x) + c);
}
void Model::solve(void) {
double c;
b = 2.;
c = 1.;
// root = bisect(func(), from, to, ...);
// where the first argument to func() is what we want to find the root over
// and the second argument to func() is c
}
int main(void) {
Model model;
model.solve();
}
Функция-член solve()
нужно найти корень функции-члена func()
, func()
имеет две важные особенности:
b
c
это определяется в solve()
, Я хочу сохранить этот второй аргумент исправленным при поиске корняКак мне реализовать метод деления пополам в этом контексте? это Ответ, похоже, предполагает, что boost :: bind может решить часть проблемы, но я недостаточно понимаю, чтобы понять, как применить ее к моей проблеме.
Задача ещё не решена.
Других решений пока нет …