ChiSquareRV.cpp

Go to the documentation of this file.
00001 /* ****************************************************************** **
00002 **    OpenSees - Open System for Earthquake Engineering Simulation    **
00003 **          Pacific Earthquake Engineering Research Center            **
00004 **                                                                    **
00005 **                                                                    **
00006 ** (C) Copyright 2001, The Regents of the University of California    **
00007 ** All Rights Reserved.                                               **
00008 **                                                                    **
00009 ** Commercial use of this program without express permission of the   **
00010 ** University of California, Berkeley, is strictly prohibited.  See   **
00011 ** file 'COPYRIGHT'  in main directory for information on usage and   **
00012 ** redistribution,  and for a DISCLAIMER OF ALL WARRANTIES.           **
00013 **                                                                    **
00014 ** Developed by:                                                      **
00015 **   Frank McKenna (fmckenna@ce.berkeley.edu)                         **
00016 **   Gregory L. Fenves (fenves@ce.berkeley.edu)                       **
00017 **   Filip C. Filippou (filippou@ce.berkeley.edu)                     **
00018 **                                                                    **
00019 ** Reliability module developed by:                                   **
00020 **   Terje Haukaas (haukaas@ce.berkeley.edu)                          **
00021 **   Armen Der Kiureghian (adk@ce.berkeley.edu)                       **
00022 **                                                                    **
00023 ** ****************************************************************** */
00024                                                                         
00025 // $Revision: 1.6 $
00026 // $Date: 2003/03/04 00:44:33 $
00027 // $Source: /usr/local/cvs/OpenSees/SRC/reliability/domain/distributions/ChiSquareRV.cpp,v $
00028 
00029 
00030 //
00031 // Written by Terje Haukaas (haukaas@ce.berkeley.edu) 
00032 //
00033 
00034 #include <ChiSquareRV.h>
00035 #include <GammaRV.h>
00036 #include <math.h>
00037 #include <string.h>
00038 #include <classTags.h>
00039 #include <OPS_Globals.h>
00040 
00041 ChiSquareRV::ChiSquareRV(int passedTag, 
00042                  double passedMean,
00043                  double passedStdv,
00044                  double passedStartValue)
00045 :RandomVariable(passedTag, RANDOM_VARIABLE_chisquare)
00046 {
00047         tag = passedTag ;
00048         nu = 0.5*passedMean;
00049         startValue = passedStartValue;
00050 }
00051 ChiSquareRV::ChiSquareRV(int passedTag, 
00052                  double passedParameter1,
00053                  double passedParameter2,
00054                  double passedParameter3,
00055                  double passedParameter4,
00056                  double passedStartValue)
00057 :RandomVariable(passedTag, RANDOM_VARIABLE_chisquare)
00058 {
00059         tag = passedTag ;
00060         nu = passedParameter1;
00061         startValue = passedStartValue;
00062 }
00063 ChiSquareRV::ChiSquareRV(int passedTag, 
00064                  double passedMean,
00065                  double passedStdv)
00066 :RandomVariable(passedTag, RANDOM_VARIABLE_chisquare)
00067 {
00068         tag = passedTag ;
00069         nu = 0.5*passedMean;
00070         startValue = getMean();
00071 }
00072 ChiSquareRV::ChiSquareRV(int passedTag, 
00073                  double passedParameter1,
00074                  double passedParameter2,
00075                  double passedParameter3,
00076                  double passedParameter4)
00077 :RandomVariable(passedTag, RANDOM_VARIABLE_chisquare)
00078 {
00079         tag = passedTag ;
00080         nu = passedParameter1;
00081         startValue = getMean();
00082 }
00083 
00084 
00085 ChiSquareRV::~ChiSquareRV()
00086 {
00087 }
00088 
00089 
00090 void
00091 ChiSquareRV::Print(OPS_Stream &s, int flag)
00092 {
00093 }
00094 
00095 
00096 double
00097 ChiSquareRV::getPDFvalue(double rvValue)
00098 {
00099         double result;
00100         if ( 0.0 < rvValue ) {
00101                 GammaRV *aGammaRV = new GammaRV(1, 0.0, 1.0, 0.0);
00102                 double a = aGammaRV->gammaFunction(0.5*nu);
00103                 result = pow(0.5*rvValue,0.5*nu-1.0)*exp(-0.5*rvValue)/(2.0*a);
00104                 delete aGammaRV;
00105         }
00106         else {
00107                 result = 0.0;
00108         }
00109         return result;
00110 }
00111 
00112 
00113 double
00114 ChiSquareRV::getCDFvalue(double rvValue)
00115 {
00116         double result;
00117         if ( 0.0 < rvValue ) {
00118                 GammaRV *aGammaRV = new GammaRV(1, 0.0, 1.0, 0.0);
00119                 double a = aGammaRV->incompleteGammaFunction(0.5*nu,0.5*rvValue);
00120                 double b = aGammaRV->gammaFunction(0.5*nu);
00121                 result = a/b;
00122                 delete aGammaRV;
00123         }
00124         else {
00125                 result = 0.0;
00126         }
00127         return result;
00128 }
00129 
00130 
00131 double
00132 ChiSquareRV::getInverseCDFvalue(double rvValue)
00133 {
00134         return 0.0;
00135 }
00136 
00137 
00138 const char *
00139 ChiSquareRV::getType()
00140 {
00141         return "CHISQUARE";
00142 }
00143 
00144 
00145 double 
00146 ChiSquareRV::getMean()
00147 {
00148         return 2*nu;
00149 }
00150 
00151 
00152 
00153 double 
00154 ChiSquareRV::getStdv()
00155 {
00156         return sqrt(2*nu);
00157 }
00158 
00159 
00160 double 
00161 ChiSquareRV::getStartValue()
00162 {
00163         return startValue;
00164 }
00165 
00166 double ChiSquareRV::getParameter1()  {return nu;}
00167 double ChiSquareRV::getParameter2()  {opserr<<"No such parameter in r.v. #"<<tag<<endln; return 0.0;}
00168 double ChiSquareRV::getParameter3()  {opserr<<"No such parameter in r.v. #"<<tag<<endln; return 0.0;}
00169 double ChiSquareRV::getParameter4()  {opserr<<"No such parameter in r.v. #"<<tag<<endln; return 0.0;}

Generated on Mon Oct 23 15:05:26 2006 for OpenSees by doxygen 1.5.0