gauss_theory.cpp
上传用户:jtjnyq9001
上传日期:2014-11-21
资源大小:3974k
文件大小:2k
源码类别:

3G开发

开发平台:

Visual C++

  1. //
  2. //  File = gauss_theory.cpp
  3. //
  4. #include <stdlib.h>
  5. #include <math.h>
  6. #include "gauss_theory.h"
  7. #include "sinc.h"
  8. #include "q_func.h"
  9. #include <iostream>
  10. #include <fstream>
  11. #ifndef PI
  12.   #define PI 3.1415926535897932
  13. #endif
  14. using namespace std;
  15. void GaussPdf( double mean,
  16.                double sigma,
  17.                int num_pts,
  18.                double pts_per_sigma,
  19.                char *out_filename)
  20. {
  21.    double abscissa, ordinate;
  22.    int n_end;
  23.    ofstream *out_file;
  24.    out_file = new ofstream(out_filename, ios::out);
  25.    if(num_pts%2 == 0) num_pts++;
  26.    n_end = (num_pts-1)/2;
  27.    for(int n=-n_end; n<=n_end; n++)
  28.    {
  29.       abscissa = n*sigma/pts_per_sigma;
  30.       ordinate = exp(-(abscissa-mean)*(abscissa-mean)/(2*sigma*sigma))/(sigma*sqrt(2.0*PI));
  31.       (*out_file) << abscissa << ", " << ordinate << endl;
  32.    }
  33.    out_file->close();
  34.    delete out_file;
  35. }
  36. void GaussCdf( double mean,
  37.                double sigma,
  38.                int num_pts,
  39.                double pts_per_sigma,
  40.                char *out_filename)
  41. {
  42.    double abscissa, ordinate;
  43.    int n_end;
  44.    ofstream *out_file;
  45.    out_file = new ofstream(out_filename, ios::out);
  46.    if(num_pts%2 == 0) num_pts++;
  47.    n_end = (num_pts-1)/2;
  48.    double root_2 = sqrt(2.0);
  49.    for(int n=-n_end; n<=n_end; n++)
  50.    {
  51.       abscissa = n*sigma/pts_per_sigma;
  52.       if(abscissa >=0.0)
  53.       {
  54.          ordinate = 0.5*(2.0-erfc((abscissa-mean)/sigma/root_2));
  55.       }
  56.       else
  57.       {
  58.          ordinate = 0.5*erfc((mean-abscissa)/sigma/root_2);
  59.       }
  60.       (*out_file) << abscissa << ", " << ordinate << endl;
  61.    }
  62.    out_file->close();
  63.    delete out_file;
  64. }
  65. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++