00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #include <UniformRV.h>
00035 #include <math.h>
00036 #include <classTags.h>
00037 #include <OPS_Globals.h>
00038
00039 UniformRV::UniformRV(int passedTag,
00040 double passedMean,
00041 double passedStdv,
00042 double passedStartValue)
00043 :RandomVariable(passedTag, RANDOM_VARIABLE_uniform)
00044 {
00045 tag = passedTag;
00046 a = passedMean - sqrt(3.0)*passedStdv;
00047 b = passedMean + sqrt(3.0)*passedStdv;
00048 startValue = passedStartValue;
00049 }
00050 UniformRV::UniformRV(int passedTag,
00051 double passedParameter1,
00052 double passedParameter2,
00053 double passedParameter3,
00054 double passedParameter4,
00055 double passedStartValue)
00056 :RandomVariable(passedTag,RANDOM_VARIABLE_uniform)
00057 {
00058 tag = passedTag ;
00059 a = passedParameter1;
00060 b = passedParameter2;
00061 startValue = passedStartValue;
00062 }
00063 UniformRV::UniformRV(int passedTag,
00064 double passedMean,
00065 double passedStdv)
00066 :RandomVariable(passedTag, RANDOM_VARIABLE_uniform)
00067 {
00068 tag = passedTag;
00069 a = passedMean - sqrt(3.0)*passedStdv;
00070 b = passedMean + sqrt(3.0)*passedStdv;
00071 startValue = getMean();
00072 }
00073 UniformRV::UniformRV(int passedTag,
00074 double passedParameter1,
00075 double passedParameter2,
00076 double passedParameter3,
00077 double passedParameter4)
00078 :RandomVariable(passedTag,RANDOM_VARIABLE_uniform)
00079 {
00080 tag = passedTag ;
00081 a = passedParameter1;
00082 b = passedParameter2;
00083 startValue = getMean();
00084 }
00085
00086
00087 UniformRV::~UniformRV()
00088 {
00089 }
00090
00091
00092 void
00093 UniformRV::Print(OPS_Stream &s, int flag)
00094 {
00095 }
00096
00097
00098 double
00099 UniformRV::getPDFvalue(double rvValue)
00100 {
00101 double result;
00102 if ( rvValue >= a && rvValue <= b ) {
00103 result = 1/(b-a);
00104 }
00105 else {
00106 result = 0.0;
00107 }
00108 return result;
00109 }
00110
00111
00112 double
00113 UniformRV::getCDFvalue(double rvValue)
00114 {
00115 double result;
00116 if ( rvValue >= a && rvValue <= b ) {
00117 result = (rvValue-a)/(b-a);
00118 }
00119 else if (rvValue > b) {
00120 result = 1.0;
00121 }
00122 else {
00123 result = 0.0;
00124 }
00125 return result;
00126 }
00127
00128 double
00129 UniformRV::getInverseCDFvalue(double probValue)
00130 {
00131 return probValue * b - probValue * a + a;
00132 }
00133
00134
00135 const char *
00136 UniformRV::getType()
00137 {
00138 return "UNIFORM";
00139 }
00140
00141
00142 double
00143 UniformRV::getMean()
00144 {
00145 return (a+b)/2.0;
00146 }
00147
00148
00149
00150 double
00151 UniformRV::getStdv()
00152 {
00153 return (b-a)/(2.0*sqrt(3.0));
00154 }
00155
00156
00157 double
00158 UniformRV::getStartValue()
00159 {
00160 return startValue;
00161 }
00162
00163
00164 double UniformRV::getParameter1() {return a;}
00165 double UniformRV::getParameter2() {return b;}
00166 double UniformRV::getParameter3() {opserr<<"No such parameter in r.v. #"<<tag<<endln; return 0.0;}
00167 double UniformRV::getParameter4() {opserr<<"No such parameter in r.v. #"<<tag<<endln; return 0.0;}