mcsusefulmath.cpp

来自「Free C++ toolkit to facilitate Monte-Car」· C++ 代码 · 共 72 行

CPP
72
字号
/*  These functions provide useful mathematical functions for other  classes to use.  *//*    MCS-libre, a library to facilite Monte-Carlo simulation.    Copyright (C) 2002  D. E. Williams    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Lesser General Public    License as published by the Free Software Foundation; either    version 2.1 of the License, or (at your option) any later version.    This library is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    Lesser General Public License for more details.    You should have received a copy of the GNU Lesser General Public    License along with this library; if not, write to the Free Software    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA    The full text of the GNU Lesser General Public License is    contained in the files COPYING and LICENSE.    See the 'MCS-libre-HOWTO' in the 'doc' directory for author's    contact information.      Have a nice day!*/#include <cmath>#include "mcsUsefulMath.h"#define PI 3.14159#define TOL .00001double sign(double x){  if (x == 0)    {      return 0;    }  if (x > 0)    {      return 1;    }  if (x < 0)    {      return -1;    }}double inverse_error_function(double x){  double oldval = 1;  double newval = sqrt(-1*log(1-fabs(x)))*sign(x);  while (fabs(erf(newval)-x) > (TOL*fabs(x)))    {      oldval = newval;      newval = oldval - (erf(oldval)-x)*exp(pow(oldval,2))*((sqrt(PI))/2);    }  return newval;}double inverse_cdf_stdnormal(double U){  return sqrt(2) * inverse_error_function(2*U - 1);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?