我以前遇到過this的問題,但現在它可以以某種方式工作。使用boost :: bind將成員函數綁定到boost :: bisect?
現在我遇到了以下問題。在我用相同的函數調用boost :: bisect之前,我需要將值綁定到成員函數中。我發現相當不錯tutorial,我已經跟着它,但似乎我仍然做錯了什麼。
起初,我創建測試類在那裏我得到了以下工作:
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: :二等分,要麼沒有找到根,要麼在間隔中有多個根(f(min)= -0.0032916729090909091)。
無論如何,這裏是類::函數,因爲某些原因,它不作爲綁定成員函數工作。我測試了它作爲非成員和它的作品
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);
}
你可以在CLASS :: Function中設置一個斷點,看它是否得到正確的輸入數字嗎? –
請發佈您的真實CLASS :: Function。你在上面發佈的一個有未配對的括號,空白(...)點並使用未定義的變量var3。真的很難猜出什麼是錯的。您可以編輯您的答案,以便代碼格式良好。 –
增加了功能碼。所以這個函數得到了正確的值,它會按照它的計算來計算總數,但不知何故它仍然表示它找不到最大值或者找到了多個根。那麼綁定的問題呢?我希望我不需要在正常分區內綁定物品? – Mare