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 <Type1LargestValueRV.h>
00035 #include <math.h>
00036 #include <string.h>
00037 #include <classTags.h>
00038 #include <OPS_Globals.h>
00039
00040 Type1LargestValueRV::Type1LargestValueRV(int passedTag,
00041 double passedMean,
00042 double passedStdv,
00043 double passedStartValue)
00044 :RandomVariable(passedTag, RANDOM_VARIABLE_type1largestvalue)
00045 {
00046 tag = passedTag ;
00047 double pi = 3.14159265358979;
00048 double gamma = 0.5772156649;
00049 u = passedMean - (gamma*sqrt(6.0)*passedStdv)/pi;
00050 alpha = pi / ( sqrt(6.0) * passedStdv );
00051 startValue = passedStartValue;
00052 }
00053 Type1LargestValueRV::Type1LargestValueRV(int passedTag,
00054 double passedParameter1,
00055 double passedParameter2,
00056 double passedParameter3,
00057 double passedParameter4,
00058 double passedStartValue)
00059 :RandomVariable(passedTag, RANDOM_VARIABLE_type1largestvalue)
00060 {
00061 tag = passedTag ;
00062 u = passedParameter1;
00063 alpha = passedParameter2;
00064 startValue = passedStartValue;
00065 }
00066 Type1LargestValueRV::Type1LargestValueRV(int passedTag,
00067 double passedMean,
00068 double passedStdv)
00069 :RandomVariable(passedTag, RANDOM_VARIABLE_type1largestvalue)
00070 {
00071 tag = passedTag ;
00072 double pi = 3.14159265358979;
00073 double gamma = 0.5772156649;
00074 u = passedMean - (gamma*sqrt(6.0)*passedStdv)/pi;
00075 alpha = pi / ( sqrt(6.0) * passedStdv );
00076 startValue = getMean();
00077 }
00078 Type1LargestValueRV::Type1LargestValueRV(int passedTag,
00079 double passedParameter1,
00080 double passedParameter2,
00081 double passedParameter3,
00082 double passedParameter4)
00083 :RandomVariable(passedTag, RANDOM_VARIABLE_type1largestvalue)
00084 {
00085 tag = passedTag ;
00086 u = passedParameter1;
00087 alpha = passedParameter2;
00088 startValue = getMean();
00089 }
00090
00091
00092 Type1LargestValueRV::~Type1LargestValueRV()
00093 {
00094 }
00095
00096
00097 void
00098 Type1LargestValueRV::Print(OPS_Stream &s, int flag)
00099 {
00100 }
00101
00102
00103 double
00104 Type1LargestValueRV::getPDFvalue(double rvValue)
00105 {
00106 return alpha * exp(-alpha*(rvValue-u)-exp(-alpha*(rvValue-u)));
00107 }
00108
00109
00110 double
00111 Type1LargestValueRV::getCDFvalue(double rvValue)
00112 {
00113 return exp(-exp(-alpha*(rvValue-u)));
00114 }
00115
00116
00117 double
00118 Type1LargestValueRV::getInverseCDFvalue(double probValue)
00119 {
00120 return (alpha*u - log(-log(probValue))) / alpha;
00121 }
00122
00123
00124 const char *
00125 Type1LargestValueRV::getType()
00126 {
00127 return "TYPE1LARGESTVALUE";
00128 }
00129
00130
00131 double
00132 Type1LargestValueRV::getMean()
00133 {
00134 double gamma = 0.5772156649;
00135 return u+gamma/alpha;
00136 }
00137
00138
00139
00140 double
00141 Type1LargestValueRV::getStdv()
00142 {
00143 double pi = 3.14159265358979;
00144 return pi/(sqrt(6.0)*alpha);
00145 }
00146
00147
00148 double
00149 Type1LargestValueRV::getStartValue()
00150 {
00151 return startValue;
00152 }
00153
00154
00155 double Type1LargestValueRV::getParameter1() {return u;}
00156 double Type1LargestValueRV::getParameter2() {return alpha;}
00157 double Type1LargestValueRV::getParameter3() {opserr<<"No such parameter in r.v. #"<<tag<<endln; return 0.0;}
00158 double Type1LargestValueRV::getParameter4() {opserr<<"No such parameter in r.v. #"<<tag<<endln; return 0.0;}