Sarahi Moran
/
jdijdfie
prueba
main.cpp@0:c344a92d3ca2, 2015-12-04 (annotated)
- Committer:
- Sarahi
- Date:
- Fri Dec 04 03:24:26 2015 +0000
- Revision:
- 0:c344a92d3ca2
- Child:
- 1:ed464543ca57
prueba
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Sarahi | 0:c344a92d3ca2 | 1 | #include "mbed.h" |
Sarahi | 0:c344a92d3ca2 | 2 | |
Sarahi | 0:c344a92d3ca2 | 3 | Serial pc(USBTX, USBRX); // tx, rx |
Sarahi | 0:c344a92d3ca2 | 4 | DigitalOut myled(LED2); |
Sarahi | 0:c344a92d3ca2 | 5 | DigitalOut led_a(LED3); |
Sarahi | 0:c344a92d3ca2 | 6 | AnalogOut pin_a(A0); |
Sarahi | 0:c344a92d3ca2 | 7 | |
Sarahi | 0:c344a92d3ca2 | 8 | #define u1 8 |
Sarahi | 0:c344a92d3ca2 | 9 | #define M1 1 |
Sarahi | 0:c344a92d3ca2 | 10 | #define u2 3 |
Sarahi | 0:c344a92d3ca2 | 11 | #define M2 3 |
Sarahi | 0:c344a92d3ca2 | 12 | #define u3 15 |
Sarahi | 0:c344a92d3ca2 | 13 | #define M3 1 |
Sarahi | 0:c344a92d3ca2 | 14 | #define pQ3Q1 0.1 // probability of sending Q3 output to the Q1 input |
Sarahi | 0:c344a92d3ca2 | 15 | #define pQ3Out 0.9 // probability of delivering Q3 output as system output |
Sarahi | 0:c344a92d3ca2 | 16 | #define tf 10000 |
Sarahi | 0:c344a92d3ca2 | 17 | #define lambda 10 |
Sarahi | 0:c344a92d3ca2 | 18 | #define pQ1I_Q2I 0.5 |
Sarahi | 0:c344a92d3ca2 | 19 | #define sz_a 1000 |
Sarahi | 0:c344a92d3ca2 | 20 | |
Sarahi | 0:c344a92d3ca2 | 21 | int Q1[sz_a]= {0}; // initial Q1 |
Sarahi | 0:c344a92d3ca2 | 22 | int Q2[sz_a]= {0}; // initial Q2 |
Sarahi | 0:c344a92d3ca2 | 23 | int Q3[sz_a]= {0}; // initial Q3 |
Sarahi | 0:c344a92d3ca2 | 24 | float t = 0; // initial simulation time |
Sarahi | 0:c344a92d3ca2 | 25 | float t_events_Q1[sz_a] = {0}; // time stamps for the k events |
Sarahi | 0:c344a92d3ca2 | 26 | float t_events_Q2[sz_a] = {0}; // time stamps for the k events |
Sarahi | 0:c344a92d3ca2 | 27 | float t_events_Q3[sz_a]= {0}; // time stamps for the k events |
Sarahi | 0:c344a92d3ca2 | 28 | int k=1; // event number |
Sarahi | 0:c344a92d3ca2 | 29 | |
Sarahi | 0:c344a92d3ca2 | 30 | double SI = 0; |
Sarahi | 0:c344a92d3ca2 | 31 | |
Sarahi | 0:c344a92d3ca2 | 32 | double Q1I1 = tf; |
Sarahi | 0:c344a92d3ca2 | 33 | double Q1I2 = 0; |
Sarahi | 0:c344a92d3ca2 | 34 | double Q1O = 0; |
Sarahi | 0:c344a92d3ca2 | 35 | |
Sarahi | 0:c344a92d3ca2 | 36 | double Q2I1 = 0; |
Sarahi | 0:c344a92d3ca2 | 37 | double Q2O = 0; |
Sarahi | 0:c344a92d3ca2 | 38 | |
Sarahi | 0:c344a92d3ca2 | 39 | double Q3I1 = 0; |
Sarahi | 0:c344a92d3ca2 | 40 | double Q3I2 = 0; |
Sarahi | 0:c344a92d3ca2 | 41 | double Q3O = tf; |
Sarahi | 0:c344a92d3ca2 | 42 | |
Sarahi | 0:c344a92d3ca2 | 43 | |
Sarahi | 0:c344a92d3ca2 | 44 | double SO = 0; |
Sarahi | 0:c344a92d3ca2 | 45 | |
Sarahi | 0:c344a92d3ca2 | 46 | float Q1_lambda [sz_a]= {lambda*0.5}; |
Sarahi | 0:c344a92d3ca2 | 47 | float Q2_lambda [sz_a]= {lambda*0.5}; |
Sarahi | 0:c344a92d3ca2 | 48 | float Q3_lambda [sz_a]= {1/(u1*M1) + 1/(u2*M2)}; |
Sarahi | 0:c344a92d3ca2 | 49 | |
Sarahi | 0:c344a92d3ca2 | 50 | float t_Q1=0; |
Sarahi | 0:c344a92d3ca2 | 51 | float t_Q2=0; |
Sarahi | 0:c344a92d3ca2 | 52 | float t_Q3=0; |
Sarahi | 0:c344a92d3ca2 | 53 | |
Sarahi | 0:c344a92d3ca2 | 54 | float eventtime_Q1=0; |
Sarahi | 0:c344a92d3ca2 | 55 | float eventtime_Q2=0; |
Sarahi | 0:c344a92d3ca2 | 56 | float eventtime_Q3=0; |
Sarahi | 0:c344a92d3ca2 | 57 | float eventtime=0; |
Sarahi | 0:c344a92d3ca2 | 58 | |
Sarahi | 0:c344a92d3ca2 | 59 | double min_2(double x, double y); |
Sarahi | 0:c344a92d3ca2 | 60 | double min_3(double x, double y, double z); |
Sarahi | 0:c344a92d3ca2 | 61 | int max_2(int x, int y); |
Sarahi | 0:c344a92d3ca2 | 62 | double max_3(double x, double y, double z); |
Sarahi | 0:c344a92d3ca2 | 63 | float var_rand(int x); |
Sarahi | 0:c344a92d3ca2 | 64 | |
Sarahi | 0:c344a92d3ca2 | 65 | int Q1k; |
Sarahi | 0:c344a92d3ca2 | 66 | int Q2k; |
Sarahi | 0:c344a92d3ca2 | 67 | int Q3k; |
Sarahi | 0:c344a92d3ca2 | 68 | |
Sarahi | 0:c344a92d3ca2 | 69 | |
Sarahi | 0:c344a92d3ca2 | 70 | |
Sarahi | 0:c344a92d3ca2 | 71 | |
Sarahi | 0:c344a92d3ca2 | 72 | int i=0; |
Sarahi | 0:c344a92d3ca2 | 73 | int main() |
Sarahi | 0:c344a92d3ca2 | 74 | { |
Sarahi | 0:c344a92d3ca2 | 75 | |
Sarahi | 0:c344a92d3ca2 | 76 | while( t <= tf ){ |
Sarahi | 0:c344a92d3ca2 | 77 | myled=0; |
Sarahi | 0:c344a92d3ca2 | 78 | //exprnd(1/freq) simulate an exponential pdf with parameter = average time = 1 / arriving rate |
Sarahi | 0:c344a92d3ca2 | 79 | |
Sarahi | 0:c344a92d3ca2 | 80 | // System input |
Sarahi | 0:c344a92d3ca2 | 81 | |
Sarahi | 0:c344a92d3ca2 | 82 | SI = var_rand(lambda); |
Sarahi | 0:c344a92d3ca2 | 83 | |
Sarahi | 0:c344a92d3ca2 | 84 | |
Sarahi | 0:c344a92d3ca2 | 85 | // Q1 |
Sarahi | 0:c344a92d3ca2 | 86 | Q1I1 = Q3O/pQ3Q1; |
Sarahi | 0:c344a92d3ca2 | 87 | Q1I2 = SI/0.5; |
Sarahi | 0:c344a92d3ca2 | 88 | printf("Sl: %lf \n", SI); |
Sarahi | 0:c344a92d3ca2 | 89 | Q1_lambda [k]= (1/Q1I1 + 1/Q1I2); |
Sarahi | 0:c344a92d3ca2 | 90 | |
Sarahi | 0:c344a92d3ca2 | 91 | //printf("Q1I1: %lf \n", Q1I1); |
Sarahi | 0:c344a92d3ca2 | 92 | //printf("Q1I2: %lf \n", Q1I2); |
Sarahi | 0:c344a92d3ca2 | 93 | //printf("Q1_lambda: %f \n", Q1_lambda[k]); |
Sarahi | 0:c344a92d3ca2 | 94 | |
Sarahi | 0:c344a92d3ca2 | 95 | if(Q1[k] > 0){ |
Sarahi | 0:c344a92d3ca2 | 96 | Q1O = u1*M1; // service time in the queue |
Sarahi | 0:c344a92d3ca2 | 97 | Q1O= var_rand(Q1O); |
Sarahi | 0:c344a92d3ca2 | 98 | } |
Sarahi | 0:c344a92d3ca2 | 99 | else{ |
Sarahi | 0:c344a92d3ca2 | 100 | Q1O= min_2(Q1I1,Q1I2)+1.0; |
Sarahi | 0:c344a92d3ca2 | 101 | } |
Sarahi | 0:c344a92d3ca2 | 102 | //printf("Q1O: %lf \n", Q1O); |
Sarahi | 0:c344a92d3ca2 | 103 | |
Sarahi | 0:c344a92d3ca2 | 104 | // Update queue Q1 |
Sarahi | 0:c344a92d3ca2 | 105 | t_events_Q1[k]=(t+min_3(Q1I1,Q1I2,Q1O)); |
Sarahi | 0:c344a92d3ca2 | 106 | //printf("Q1K :%d \n",Q1[k]); |
Sarahi | 0:c344a92d3ca2 | 107 | if ( (Q1O < Q1I1) && (Q1O < Q1I2) ){ |
Sarahi | 0:c344a92d3ca2 | 108 | Q1k=Q1[k]- 1; |
Sarahi | 0:c344a92d3ca2 | 109 | Q1[k+1]=max_2(0,Q1k); // Q1 is reduced by one |
Sarahi | 0:c344a92d3ca2 | 110 | |
Sarahi | 0:c344a92d3ca2 | 111 | } |
Sarahi | 0:c344a92d3ca2 | 112 | else { |
Sarahi | 0:c344a92d3ca2 | 113 | Q1[k+1]=Q1[k]+1; // Q1 is increased by one due to Q1 input (only one of the two inputs is considered) |
Sarahi | 0:c344a92d3ca2 | 114 | } |
Sarahi | 0:c344a92d3ca2 | 115 | |
Sarahi | 0:c344a92d3ca2 | 116 | //printf("Q1K :%d \n",Q1[k+1]); |
Sarahi | 0:c344a92d3ca2 | 117 | eventtime_Q1 = min_3(Q1I1, Q1I2, Q1O); |
Sarahi | 0:c344a92d3ca2 | 118 | t_Q1 = t; |
Sarahi | 0:c344a92d3ca2 | 119 | t_Q1 = t_Q1 + eventtime_Q1; |
Sarahi | 0:c344a92d3ca2 | 120 | |
Sarahi | 0:c344a92d3ca2 | 121 | // Q2 |
Sarahi | 0:c344a92d3ca2 | 122 | Q2I1 = SI/pQ1I_Q2I; |
Sarahi | 0:c344a92d3ca2 | 123 | //printf("Q2I1 :%lf \n",Q2I1); |
Sarahi | 0:c344a92d3ca2 | 124 | Q2_lambda[k] = (1.0/Q2I1); |
Sarahi | 0:c344a92d3ca2 | 125 | //printf("Q2_lambda :%f \n",Q2_lambda[k]); |
Sarahi | 0:c344a92d3ca2 | 126 | |
Sarahi | 0:c344a92d3ca2 | 127 | if(Q2[k] > 0){ |
Sarahi | 0:c344a92d3ca2 | 128 | Q2O = u2*M2; // service time in the queue |
Sarahi | 0:c344a92d3ca2 | 129 | Q2O= var_rand(Q2O); |
Sarahi | 0:c344a92d3ca2 | 130 | } |
Sarahi | 0:c344a92d3ca2 | 131 | else{ |
Sarahi | 0:c344a92d3ca2 | 132 | Q2O = Q2I1 + 1.0; |
Sarahi | 0:c344a92d3ca2 | 133 | } |
Sarahi | 0:c344a92d3ca2 | 134 | //printf("Q20 :%f \n",Q2O); |
Sarahi | 0:c344a92d3ca2 | 135 | |
Sarahi | 0:c344a92d3ca2 | 136 | // Update queue Q2 |
Sarahi | 0:c344a92d3ca2 | 137 | t_events_Q2[k]=(t+min_2(Q2I1, Q2O)); |
Sarahi | 0:c344a92d3ca2 | 138 | //printf("Q2[k]: %d\n",Q2[k]); |
Sarahi | 0:c344a92d3ca2 | 139 | if ( Q2O < Q2I1 ){ |
Sarahi | 0:c344a92d3ca2 | 140 | Q2k=Q2[k]- 1; |
Sarahi | 0:c344a92d3ca2 | 141 | // printf("Q2K %d: \n",Q2k); |
Sarahi | 0:c344a92d3ca2 | 142 | Q2[k+1]=max_2(0,Q2k); // Q2 is reduced by one |
Sarahi | 0:c344a92d3ca2 | 143 | } |
Sarahi | 0:c344a92d3ca2 | 144 | else{ |
Sarahi | 0:c344a92d3ca2 | 145 | Q2[k+1]= (Q2[k])+1; // Q2 is increased by one due to Q2 input |
Sarahi | 0:c344a92d3ca2 | 146 | } |
Sarahi | 0:c344a92d3ca2 | 147 | //printf("Q2[k]: %d\n",Q2[k+1]); |
Sarahi | 0:c344a92d3ca2 | 148 | eventtime_Q2 = min_2(Q2I1, Q2O); |
Sarahi | 0:c344a92d3ca2 | 149 | t_Q2 = t; |
Sarahi | 0:c344a92d3ca2 | 150 | t_Q2 = t_Q2 + eventtime_Q2; |
Sarahi | 0:c344a92d3ca2 | 151 | |
Sarahi | 0:c344a92d3ca2 | 152 | |
Sarahi | 0:c344a92d3ca2 | 153 | //Q3 |
Sarahi | 0:c344a92d3ca2 | 154 | Q3I1 = Q1O; |
Sarahi | 0:c344a92d3ca2 | 155 | Q3I2 = Q2O; |
Sarahi | 0:c344a92d3ca2 | 156 | //printf("Q3I1: %lf \n",Q3I1); |
Sarahi | 0:c344a92d3ca2 | 157 | //printf("Q3I2: %lf \n",Q3I2); |
Sarahi | 0:c344a92d3ca2 | 158 | Q3_lambda [k]= 1/Q3I1 + 1/Q3I2; |
Sarahi | 0:c344a92d3ca2 | 159 | //printf("Q3_lambda: %f \n",Q3_lambda[k]); |
Sarahi | 0:c344a92d3ca2 | 160 | |
Sarahi | 0:c344a92d3ca2 | 161 | if(Q3[k] > 0){ |
Sarahi | 0:c344a92d3ca2 | 162 | Q3O = u3*M3; // service time in the queue |
Sarahi | 0:c344a92d3ca2 | 163 | Q3O= var_rand(Q3O); |
Sarahi | 0:c344a92d3ca2 | 164 | } |
Sarahi | 0:c344a92d3ca2 | 165 | else{ |
Sarahi | 0:c344a92d3ca2 | 166 | Q3O = min_2(Q1O, Q2O) + 1.0; |
Sarahi | 0:c344a92d3ca2 | 167 | } |
Sarahi | 0:c344a92d3ca2 | 168 | |
Sarahi | 0:c344a92d3ca2 | 169 | //printf("Q3O: %lf \n",Q3O); |
Sarahi | 0:c344a92d3ca2 | 170 | // Update queue Q3 |
Sarahi | 0:c344a92d3ca2 | 171 | t_events_Q3[k]= t+min_3(Q3I1, Q3I2, Q3O); |
Sarahi | 0:c344a92d3ca2 | 172 | //printf("Q3[k]: %d \n", Q3[k]); |
Sarahi | 0:c344a92d3ca2 | 173 | if ( (Q3O < Q3I1) && (Q3O < Q3I2) ){ |
Sarahi | 0:c344a92d3ca2 | 174 | Q3k=Q3[k]- 1; |
Sarahi | 0:c344a92d3ca2 | 175 | // printf("Q3k: %f \n", Q3k); |
Sarahi | 0:c344a92d3ca2 | 176 | Q3[k+1]=max_2(0,Q3k); // Q3 is reduced by one |
Sarahi | 0:c344a92d3ca2 | 177 | } |
Sarahi | 0:c344a92d3ca2 | 178 | else { |
Sarahi | 0:c344a92d3ca2 | 179 | Q3[k+1]= Q3[k] + 1; // Q3 is increased by one due to Q3 input (only one of the two inputs is considered) |
Sarahi | 0:c344a92d3ca2 | 180 | |
Sarahi | 0:c344a92d3ca2 | 181 | } |
Sarahi | 0:c344a92d3ca2 | 182 | //printf("Q3[k]: %d \n",Q3[k+1]); |
Sarahi | 0:c344a92d3ca2 | 183 | eventtime_Q3 = min_3(Q3I1, Q3I2, Q3O); |
Sarahi | 0:c344a92d3ca2 | 184 | t_Q3 = t; |
Sarahi | 0:c344a92d3ca2 | 185 | t_Q3 = t_Q3 + eventtime_Q2; |
Sarahi | 0:c344a92d3ca2 | 186 | |
Sarahi | 0:c344a92d3ca2 | 187 | // System output |
Sarahi | 0:c344a92d3ca2 | 188 | SO = Q3O/pQ3Out; |
Sarahi | 0:c344a92d3ca2 | 189 | |
Sarahi | 0:c344a92d3ca2 | 190 | eventtime = max_3(eventtime_Q1, eventtime_Q2, eventtime_Q3); |
Sarahi | 0:c344a92d3ca2 | 191 | t = t + eventtime; |
Sarahi | 0:c344a92d3ca2 | 192 | k=k+1; |
Sarahi | 0:c344a92d3ca2 | 193 | |
Sarahi | 0:c344a92d3ca2 | 194 | myled=1; |
Sarahi | 0:c344a92d3ca2 | 195 | wait(0.5); |
Sarahi | 0:c344a92d3ca2 | 196 | } |
Sarahi | 0:c344a92d3ca2 | 197 | |
Sarahi | 0:c344a92d3ca2 | 198 | |
Sarahi | 0:c344a92d3ca2 | 199 | led_a=0; |
Sarahi | 0:c344a92d3ca2 | 200 | wait(1); |
Sarahi | 0:c344a92d3ca2 | 201 | pc.printf("k="); |
Sarahi | 0:c344a92d3ca2 | 202 | pc.printf("%d\r\n",k); |
Sarahi | 0:c344a92d3ca2 | 203 | wait(.5); |
Sarahi | 0:c344a92d3ca2 | 204 | |
Sarahi | 0:c344a92d3ca2 | 205 | pc.printf("Q1\n"); |
Sarahi | 0:c344a92d3ca2 | 206 | for (i=0; i<=k; i++){ |
Sarahi | 0:c344a92d3ca2 | 207 | pc.printf("%d, ",Q1[i]); |
Sarahi | 0:c344a92d3ca2 | 208 | |
Sarahi | 0:c344a92d3ca2 | 209 | } |
Sarahi | 0:c344a92d3ca2 | 210 | |
Sarahi | 0:c344a92d3ca2 | 211 | pc.printf("\n Q2\n"); |
Sarahi | 0:c344a92d3ca2 | 212 | for (i=0; i<=k; i++){ |
Sarahi | 0:c344a92d3ca2 | 213 | pc.printf("%d, ",Q2[i]); |
Sarahi | 0:c344a92d3ca2 | 214 | |
Sarahi | 0:c344a92d3ca2 | 215 | } |
Sarahi | 0:c344a92d3ca2 | 216 | |
Sarahi | 0:c344a92d3ca2 | 217 | pc.printf("\n Q3\n"); |
Sarahi | 0:c344a92d3ca2 | 218 | for (i=0; i<=k; i++){ |
Sarahi | 0:c344a92d3ca2 | 219 | pc.printf("%d, ",Q3[i]); |
Sarahi | 0:c344a92d3ca2 | 220 | |
Sarahi | 0:c344a92d3ca2 | 221 | } |
Sarahi | 0:c344a92d3ca2 | 222 | |
Sarahi | 0:c344a92d3ca2 | 223 | pc.printf("\n Q1_lambda\n"); |
Sarahi | 0:c344a92d3ca2 | 224 | for (i=0; i<=k; i++){ |
Sarahi | 0:c344a92d3ca2 | 225 | pc.printf("%f, ",Q1_lambda[i]); |
Sarahi | 0:c344a92d3ca2 | 226 | |
Sarahi | 0:c344a92d3ca2 | 227 | } |
Sarahi | 0:c344a92d3ca2 | 228 | |
Sarahi | 0:c344a92d3ca2 | 229 | pc.printf("\n Q2_lambda\n"); |
Sarahi | 0:c344a92d3ca2 | 230 | for (i=0; i<=k; i++){ |
Sarahi | 0:c344a92d3ca2 | 231 | pc.printf("%f, ",Q2_lambda[i]); |
Sarahi | 0:c344a92d3ca2 | 232 | |
Sarahi | 0:c344a92d3ca2 | 233 | } |
Sarahi | 0:c344a92d3ca2 | 234 | pc.printf("\n Q3_lambda\n"); |
Sarahi | 0:c344a92d3ca2 | 235 | for (i=0; i<=k; i++){ |
Sarahi | 0:c344a92d3ca2 | 236 | pc.printf("%f, ",Q3_lambda[i]); |
Sarahi | 0:c344a92d3ca2 | 237 | |
Sarahi | 0:c344a92d3ca2 | 238 | } |
Sarahi | 0:c344a92d3ca2 | 239 | |
Sarahi | 0:c344a92d3ca2 | 240 | pc.printf("\n t_events_Q1\n"); |
Sarahi | 0:c344a92d3ca2 | 241 | for (i=0; i<=k; i++){ |
Sarahi | 0:c344a92d3ca2 | 242 | pc.printf("%f, ",t_events_Q1[i]); |
Sarahi | 0:c344a92d3ca2 | 243 | |
Sarahi | 0:c344a92d3ca2 | 244 | } |
Sarahi | 0:c344a92d3ca2 | 245 | pc.printf("\n t_events_Q2\n"); |
Sarahi | 0:c344a92d3ca2 | 246 | for (i=0; i<=k; i++){ |
Sarahi | 0:c344a92d3ca2 | 247 | pc.printf("%f, ",t_events_Q2[i]); |
Sarahi | 0:c344a92d3ca2 | 248 | |
Sarahi | 0:c344a92d3ca2 | 249 | } |
Sarahi | 0:c344a92d3ca2 | 250 | |
Sarahi | 0:c344a92d3ca2 | 251 | pc.printf("\n t_events_Q3\n"); |
Sarahi | 0:c344a92d3ca2 | 252 | for (i=0; i<=k; i++){ |
Sarahi | 0:c344a92d3ca2 | 253 | pc.printf("%f, ",t_events_Q3[i]); |
Sarahi | 0:c344a92d3ca2 | 254 | |
Sarahi | 0:c344a92d3ca2 | 255 | } |
Sarahi | 0:c344a92d3ca2 | 256 | |
Sarahi | 0:c344a92d3ca2 | 257 | |
Sarahi | 0:c344a92d3ca2 | 258 | led_a=1; |
Sarahi | 0:c344a92d3ca2 | 259 | } |
Sarahi | 0:c344a92d3ca2 | 260 | |
Sarahi | 0:c344a92d3ca2 | 261 | |
Sarahi | 0:c344a92d3ca2 | 262 | //-----------------------Función para obtener el minimo de 2 números ---------------------------------------------// |
Sarahi | 0:c344a92d3ca2 | 263 | double min_2(double x, double y){ |
Sarahi | 0:c344a92d3ca2 | 264 | double min=0; |
Sarahi | 0:c344a92d3ca2 | 265 | if (x<y){ |
Sarahi | 0:c344a92d3ca2 | 266 | min= x; |
Sarahi | 0:c344a92d3ca2 | 267 | } |
Sarahi | 0:c344a92d3ca2 | 268 | else { |
Sarahi | 0:c344a92d3ca2 | 269 | min=y; |
Sarahi | 0:c344a92d3ca2 | 270 | } |
Sarahi | 0:c344a92d3ca2 | 271 | return min; |
Sarahi | 0:c344a92d3ca2 | 272 | |
Sarahi | 0:c344a92d3ca2 | 273 | } |
Sarahi | 0:c344a92d3ca2 | 274 | |
Sarahi | 0:c344a92d3ca2 | 275 | ///-----------------------Función para obtener el minimo de 3 números ---------------------------------------------// |
Sarahi | 0:c344a92d3ca2 | 276 | double min_3(double x, double y, double z){ |
Sarahi | 0:c344a92d3ca2 | 277 | double min=0; |
Sarahi | 0:c344a92d3ca2 | 278 | if ((x<y)&&(x<z)){ |
Sarahi | 0:c344a92d3ca2 | 279 | min= x; |
Sarahi | 0:c344a92d3ca2 | 280 | } |
Sarahi | 0:c344a92d3ca2 | 281 | else if ((y<x)&&(y<z)){ |
Sarahi | 0:c344a92d3ca2 | 282 | min= y; |
Sarahi | 0:c344a92d3ca2 | 283 | } |
Sarahi | 0:c344a92d3ca2 | 284 | else { |
Sarahi | 0:c344a92d3ca2 | 285 | min=z; |
Sarahi | 0:c344a92d3ca2 | 286 | } |
Sarahi | 0:c344a92d3ca2 | 287 | return min; |
Sarahi | 0:c344a92d3ca2 | 288 | } |
Sarahi | 0:c344a92d3ca2 | 289 | |
Sarahi | 0:c344a92d3ca2 | 290 | //-----------------------Función para obtener el miáximo de 2 números ---------------------------------------------// |
Sarahi | 0:c344a92d3ca2 | 291 | int max_2(int x, int y){ |
Sarahi | 0:c344a92d3ca2 | 292 | int max=0; |
Sarahi | 0:c344a92d3ca2 | 293 | if(x>y){ |
Sarahi | 0:c344a92d3ca2 | 294 | max=x; |
Sarahi | 0:c344a92d3ca2 | 295 | } |
Sarahi | 0:c344a92d3ca2 | 296 | else { |
Sarahi | 0:c344a92d3ca2 | 297 | max=y; |
Sarahi | 0:c344a92d3ca2 | 298 | } |
Sarahi | 0:c344a92d3ca2 | 299 | return max; |
Sarahi | 0:c344a92d3ca2 | 300 | } |
Sarahi | 0:c344a92d3ca2 | 301 | |
Sarahi | 0:c344a92d3ca2 | 302 | |
Sarahi | 0:c344a92d3ca2 | 303 | //-----------------------Función para obtener el máximo de 3 números ---------------------------------------------// |
Sarahi | 0:c344a92d3ca2 | 304 | double max_3(double x, double y, double z){ |
Sarahi | 0:c344a92d3ca2 | 305 | double max=0; |
Sarahi | 0:c344a92d3ca2 | 306 | if ((x>y)&&(x>z)){ |
Sarahi | 0:c344a92d3ca2 | 307 | max= x; |
Sarahi | 0:c344a92d3ca2 | 308 | } |
Sarahi | 0:c344a92d3ca2 | 309 | else if ((y>x)&&(y>z)){ |
Sarahi | 0:c344a92d3ca2 | 310 | max= y; |
Sarahi | 0:c344a92d3ca2 | 311 | } |
Sarahi | 0:c344a92d3ca2 | 312 | else { |
Sarahi | 0:c344a92d3ca2 | 313 | max=z; |
Sarahi | 0:c344a92d3ca2 | 314 | } |
Sarahi | 0:c344a92d3ca2 | 315 | return max; |
Sarahi | 0:c344a92d3ca2 | 316 | } |
Sarahi | 0:c344a92d3ca2 | 317 | |
Sarahi | 0:c344a92d3ca2 | 318 | float var_rand(int x){ |
Sarahi | 0:c344a92d3ca2 | 319 | int a = 40692; |
Sarahi | 0:c344a92d3ca2 | 320 | int m=2147483399; |
Sarahi | 0:c344a92d3ca2 | 321 | int x_i=rand(); //semilla aleatoria |
Sarahi | 0:c344a92d3ca2 | 322 | float x_i1=(a*x_i) % m; |
Sarahi | 0:c344a92d3ca2 | 323 | float U=(x_i1)/m; //Uniforme [0,1] |
Sarahi | 0:c344a92d3ca2 | 324 | |
Sarahi | 0:c344a92d3ca2 | 325 | float exprnd=-1*x*log(U); |
Sarahi | 0:c344a92d3ca2 | 326 | printf ("VAL x_i: %d \n",x_i); |
Sarahi | 0:c344a92d3ca2 | 327 | printf ("VAL x_i1: %f \n",x_i1); |
Sarahi | 0:c344a92d3ca2 | 328 | printf ("VAL U: %f \n", U); |
Sarahi | 0:c344a92d3ca2 | 329 | printf ("VAL exprnd: %f \n", exprnd); |
Sarahi | 0:c344a92d3ca2 | 330 | |
Sarahi | 0:c344a92d3ca2 | 331 | return exprnd; |
Sarahi | 0:c344a92d3ca2 | 332 | } |