以下のコードは、上手くいく例です。
1変数関数fを定義して、BOOSTに持っていってあげれば、方程式f=0を解くことができます。
今、関数fの中で定義されている定数cを、int main関数の中で定義したいと思っています。
すなわち、
double f(double x, int c) return c + 13/(1.0+x);
int main()
{
int c = 5;
.
.
}
としたいわけです。
ここで問題があります。関数fが見かけ上2変数関数になってしまい、BOOSTに持っていけなくなってしまいました。
見かけ上2変数関数ですが、実質は1変数関数なので、
以下のコードのようにBOOSTで計算できるはずだと思っています。
この問題を解決できる上手いやり方があれば、ぜひ教えていただきたいと思っています。
よろしくお願いいたします。
#include <iostream>
#include <math.h>
#include <boost/math/tools/roots.hpp>
using namespace std;
using namespace boost::math::tools;
double f(double x){
const double c = -5.;
return c + 13/(1.0+x);
}
bool tol(double low, double high)
{ return fabs(high - low) < .00001; }
int main()
{
std::pair<double, double> range;
range = bisect(f, 0., 10., tol);
cout<<range.first<<endl;
cout<<range.second<<endl;
return 0;
}