今日ブーストを使い始めたばかりで、この投稿が非常に役立つことがわかりました。boost::bisect を使用して、一連の値のパラメトリック方程式を解こうとしています。0.8 の値を求めたい場合は、次のように機能します。
#include <boost/math/tools/roots.hpp>
//declare constants
const double Y_r = 0.2126;
const double Y_g = 0.7152;
const double Y_b = 0.0722;
struct FunctionToApproximate {
double operator() (double x) {
return (pow (x, 2.4) * Y_r) + (pow ((x*0.6)+0.4, 2.4) * Y_g) + (1 * Y_b) - 0.8;
}
};
struct TerminationCondition {
bool operator() (double min, double max) {
return fabs(min - max) <= t_c;
}
};
using boost::math::tools::bisect;
std::pair<double, double> result = bisect(FunctionToApproximate(), 0.0, 1.0, TerminationCondition());
double root = (result.first + result.second) / 2;
0.8 以外の値を解決できるように、これをループでラップしたいと思います。これについてどうすればいいですか?
どうもありがとう!