大佬教程收集整理的这篇文章主要介绍了蒙特卡洛C标准差的通用函数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我认为我的结果与他们的结果相去甚远.我的函数使用boost库中的元组,它@R_696_7957@:
double add_square(double prev_sum,double new_val) { return prev_sum + new_val*new_val; } template <typENAME v> double vec_add_squares(const V<double>& v) { return std::accumulate(v.begin(),v.end(),0.0,add_squarE); } template <class T> boost::tuple<double,double> get_std_dev_and_error(const vector<T>& input,double r,double N) { double M = double(input.size()); double sum = std::accumulate(input.begin(),input.end(),0.0); double Squared_sum = vec_add_squares(input); std::cout << "sum " << Squared_sum << endl; // Calls Sum double term1 = Squared_sum - (sum/M)*sum; double SD = (sqrt(term1) * exp(-2.0 * r *N))/(M-1) ; double SE = SD/sqrt(M); std::cout << "SD = " << SD << endl; std::cout << "SE = " << SE << endl; return boost::tuple<double,double>(SD,SE) ; }
#include <boost/accumulators/accumulators.hpp> #include <boost/accumulators/statistics.hpp> #include <boost/range/algorithm.hpp> #include <iostream> #include <ostream> using namespace boost; using namespace boost::accumulators; using namespace std; int main() { accumulator_set<double,stats<tag::sum,tag::variance,tag::mean > > acc; double data[] = {1.,2.,3.}; acc = for_each(data,acc); cout << "sum = " << sum(acC) << endl; cout << "variance = " << variance(acC) << endl; cout << "sqrt(variance()) = " << sqrt(variance(acC)) << endl; cout << "mean = " << mean(acC) << endl; }
输出是:
sum = 6 variance = 0.666667 sqrt(variance()) = 0.816497 mean = 2
以上是大佬教程为你收集整理的蒙特卡洛C标准差的通用函数全部内容,希望文章能够帮你解决蒙特卡洛C标准差的通用函数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。