SSJ API Documentation
Stochastic Simulation in Java
Loading...
Searching...
No Matches
WatsonGDist.java
1/*
2 * Class: WatsonGDist
3 * Description: Watson G distribution
4 * Environment: Java
5 * Software: SSJ
6 * Copyright (C) 2001 Pierre L'Ecuyer and Universite de Montreal
7 * Organization: DIRO, Universite de Montreal
8 * @author Richard Simard
9 * @since
10 *
11 *
12 * Licensed under the Apache License, Version 2.0 (the "License");
13 * you may not use this file except in compliance with the License.
14 * You may obtain a copy of the License at
15 *
16 * http://www.apache.org/licenses/LICENSE-2.0
17 *
18 * Unless required by applicable law or agreed to in writing, software
19 * distributed under the License is distributed on an "AS IS" BASIS,
20 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 * See the License for the specific language governing permissions and
22 * limitations under the License.
23 *
24 */
25package umontreal.ssj.probdist;
26
27import umontreal.ssj.util.*;
28import umontreal.ssj.functions.MathFunction;
29
50public class WatsonGDist extends ContinuousDistribution {
51 protected int n;
52
53 private static class Function implements MathFunction {
54 protected int n;
55 protected double u;
56
57 public Function(int n, double u) {
58 this.n = n;
59 this.u = u;
60 }
61
62 public double evaluate(double x) {
63 return u - cdf(n, x);
64 }
65 }
66
70 public WatsonGDist(int n) {
71 setN(n);
72 }
73
74 public double density(double x) {
75 return density(n, x);
76 }
77
78 public double cdf(double x) {
79 return cdf(n, x);
80 }
81
82 public double barF(double x) {
83 return barF(n, x);
84 }
85
86 public double inverseF(double u) {
87 return inverseF(n, u);
88 }
89
94 public static double density(int n, double x) {
95 final double MINARG = 0.15;
96 final double MAXARG = 1.5;
97
98 if (n < 2)
99 throw new IllegalArgumentException("n < 2");
100
101 if (x <= MINARG || x >= XBIGM)
102 return 0.0;
103
104 final double Res;
105 if (x > MAXARG)
106 Res = 20 * Math.exp(19.0 - 20.0 * x) - 15.26 * Math.exp(13.34 - 15.26 * x) / Math.sqrt((double) n);
107 else {
108 final double EPS = 1.0 / 20.0;
109 Res = (cdf(n, x + EPS) - cdf(n, x - EPS)) / (2.0 * EPS);
110 }
111
112 if (Res <= 0.0)
113 return 0.0;
114 return Res;
115 }
116
117 // Tables for a spline approximation
118 // of the WatsonG distribution
119 // Empirical correction in 1/sqrt (n)
120 private static double YWA[] = new double[143];
121 private static double MWA[] = new double[143];
122 private static double CoWA[] = new double[143];
123
124 static {
125 /*
126 * Initialization for watsonG
127 */
128 int j;
129 YWA[0] = 1.8121832847E-39;
130 YWA[1] = 2.0503176304E-32;
131 YWA[2] = 4.6139577764E-27;
132 YWA[3] = 6.5869745929E-23;
133 YWA[4] = 1.2765816107E-19;
134 YWA[5] = 5.6251923105E-17;
135 YWA[6] = 8.0747150511E-15;
136 YWA[7] = 4.8819994144E-13;
137 YWA[8] = 1.4996052497E-11;
138 YWA[9] = 2.6903519441E-10;
139 YWA[10] = 3.1322929018E-9;
140 YWA[11] = 2.5659643046E-8;
141 YWA[12] = 1.5749759318E-7;
142 YWA[13] = 7.6105096466E-7;
143 YWA[14] = 3.0113293541E-6;
144 YWA[15] = 1.0070166837E-5;
145 YWA[16] = 2.9199826692E-5;
146 YWA[17] = 7.4970409372E-5;
147 YWA[18] = 1.7340586581E-4;
148 YWA[19] = 3.6654236297E-4;
149 YWA[20] = 7.165864865E-4;
150 YWA[21] = 1.3087767385E-3;
151 YWA[22] = 2.2522044209E-3;
152 YWA[23] = 3.6781862572E-3;
153 YWA[24] = 5.7361958631E-3;
154 YWA[25] = 8.5877444706E-3;
155 YWA[26] = 1.23988738E-2;
156 YWA[27] = 1.73320516E-2;
157 YWA[28] = 2.35382479E-2;
158 YWA[29] = 3.11498548E-2;
159 YWA[30] = 4.02749297E-2;
160 YWA[31] = 5.09930445E-2;
161 YWA[32] = 6.33528333E-2;
162 YWA[33] = 7.73711747E-2;
163 YWA[34] = 9.30338324E-2;
164 YWA[35] = 1.10297306E-1;
165 YWA[36] = 1.290916098E-1;
166 YWA[37] = 1.493236984E-1;
167 YWA[38] = 1.708812741E-1;
168 YWA[39] = 1.936367476E-1;
169 YWA[40] = 2.174511609E-1;
170 YWA[41] = 2.42177928E-1;
171 YWA[42] = 2.676662852E-1;
172 YWA[43] = 2.937643828E-1;
173 YWA[44] = 3.203219784E-1;
174 YWA[45] = 3.471927188E-1;
175 YWA[46] = 3.742360163E-1;
176 YWA[47] = 4.013185392E-1;
177 YWA[48] = 4.283153467E-1;
178 YWA[49] = 4.551107027E-1;
179 YWA[50] = 4.815986082E-1;
180 YWA[51] = 5.076830902E-1;
181 YWA[52] = 5.332782852E-1;
182 YWA[53] = 5.583083531E-1;
183 YWA[54] = 5.827072528E-1;
184 YWA[55] = 6.064184099E-1;
185 YWA[56] = 6.293943006E-1;
186 YWA[57] = 6.515959739E-1;
187 YWA[58] = 6.729925313E-1;
188 YWA[59] = 6.935605784E-1;
189 YWA[60] = 7.132836621E-1;
190 YWA[61] = 7.321517033E-1;
191 YWA[62] = 7.501604333E-1;
192 YWA[63] = 7.673108406E-1;
193 YWA[64] = 7.836086337E-1;
194 YWA[65] = 7.99063723E-1;
195 YWA[66] = 8.136897251E-1;
196 YWA[67] = 8.275034914E-1;
197 YWA[68] = 8.405246632E-1;
198 YWA[69] = 8.527752531E-1;
199 YWA[70] = 8.642792535E-1;
200 YWA[71] = 8.750622738E-1;
201 YWA[72] = 8.851512032E-1;
202 YWA[73] = 8.945739017E-1;
203 YWA[74] = 9.033589176E-1;
204 YWA[75] = 9.115352296E-1;
205 YWA[76] = 9.19132015E-1;
206 YWA[77] = 9.261784413E-1;
207 YWA[78] = 9.327034806E-1;
208 YWA[79] = 9.387357465E-1;
209 YWA[80] = 9.44303351E-1;
210 YWA[81] = 9.494337813E-1;
211 YWA[82] = 9.541537951E-1;
212 YWA[83] = 9.584893325E-1;
213 YWA[84] = 9.624654445E-1;
214 YWA[85] = 9.661062352E-1;
215 YWA[86] = 9.694348183E-1;
216 YWA[87] = 9.724732859E-1;
217 YWA[88] = 9.752426872E-1;
218 YWA[89] = 9.777630186E-1;
219 YWA[90] = 9.800532221E-1;
220 YWA[91] = 9.821311912E-1;
221 YWA[92] = 9.840137844E-1;
222 YWA[93] = 9.85716844E-1;
223 YWA[94] = 9.872552203E-1;
224 YWA[95] = 9.886428002E-1;
225 YWA[96] = 9.898925389E-1;
226 YWA[97] = 9.910164946E-1;
227 YWA[98] = 9.920258656E-1;
228 YWA[99] = 9.929310287E-1;
229 YWA[100] = 9.937415788E-1;
230 YWA[101] = 9.944663692E-1;
231 YWA[102] = 9.95113552E-1;
232 YWA[103] = 9.956906185E-1;
233 YWA[104] = 9.962044387E-1;
234 YWA[105] = 9.966613009E-1;
235 YWA[106] = 9.970669496E-1;
236 YWA[107] = 9.974266225E-1;
237 YWA[108] = 9.977450862E-1;
238 YWA[109] = 9.980266707E-1;
239 YWA[110] = 9.982753021E-1;
240 YWA[111] = 9.984945338E-1;
241 YWA[112] = 9.98687576E-1;
242 YWA[113] = 9.98857324E-1;
243 YWA[114] = 9.990063842E-1;
244 YWA[115] = 9.991370993E-1;
245 YWA[116] = 9.992515708E-1;
246 YWA[117] = 9.99351681E-1;
247 YWA[118] = 9.994391129E-1;
248 YWA[119] = 9.995153688E-1;
249 YWA[120] = 9.995817875E-1;
250 YWA[121] = 9.996395602E-1;
251 YWA[122] = 9.996897446E-1;
252 YWA[123] = 9.997332791E-1;
253 YWA[124] = 9.997709943E-1;
254 YWA[125] = 9.998036243E-1;
255 YWA[126] = 9.998318172E-1;
256 YWA[127] = 9.998561438E-1;
257 YWA[128] = 9.998771066E-1;
258 YWA[129] = 9.998951466E-1;
259 YWA[130] = 9.999106508E-1;
260 YWA[131] = 9.99923958E-1;
261 YWA[132] = 9.999353645E-1;
262 YWA[133] = 9.999451288E-1;
263 YWA[134] = 9.999534765E-1;
264 YWA[135] = 9.999606035E-1;
265 YWA[136] = 9.999666805E-1;
266 YWA[137] = 9.999718553E-1;
267 YWA[138] = 9.999762562E-1;
268 YWA[139] = 9.999799939E-1;
269 YWA[140] = 9.999831643E-1;
270 YWA[141] = 9.999858E-1;
271 YWA[142] = 9.999883E-1;
272
273 MWA[0] = 0.0;
274 MWA[1] = 6.909E-15;
275 MWA[2] = 2.763E-14;
276 MWA[3] = 1.036E-13;
277 MWA[4] = 3.792E-13;
278 MWA[5] = 4.773E-12;
279 MWA[6] = 4.59E-10;
280 MWA[7] = 2.649E-8;
281 MWA[8] = 7.353E-7;
282 MWA[9] = 1.14E-5;
283 MWA[10] = 1.102E-4;
284 MWA[11] = 7.276E-4;
285 MWA[12] = 3.538E-3;
286 MWA[13] = 0.01342;
287 MWA[14] = 0.04157;
288 MWA[15] = 0.1088;
289 MWA[16] = 0.2474;
290 MWA[17] = 0.4999;
291 MWA[18] = 0.913;
292 MWA[19] = 1.53;
293 MWA[20] = 2.381;
294 MWA[21] = 3.475;
295 MWA[22] = 4.795;
296 MWA[23] = 6.3;
297 MWA[24] = 7.928;
298 MWA[25] = 9.602;
299 MWA[26] = 11.24;
300 MWA[27] = 12.76;
301 MWA[28] = 14.1;
302 MWA[29] = 15.18;
303 MWA[30] = 15.98;
304 MWA[31] = 16.47;
305 MWA[32] = 16.64;
306 MWA[33] = 16.49;
307 MWA[34] = 16.05;
308 MWA[35] = 15.35;
309 MWA[36] = 14.41;
310 MWA[37] = 13.28;
311 MWA[38] = 12.0;
312 MWA[39] = 10.6;
313 MWA[40] = 9.13;
314 MWA[41] = 7.618;
315 MWA[42] = 6.095;
316 MWA[43] = 4.588;
317 MWA[44] = 3.122;
318 MWA[45] = 1.713;
319 MWA[46] = 0.3782;
320 MWA[47] = -0.8726;
321 MWA[48] = -2.031;
322 MWA[49] = -3.091;
323 MWA[50] = -4.051;
324 MWA[51] = -4.91;
325 MWA[52] = -5.668;
326 MWA[53] = -6.327;
327 MWA[54] = -6.893;
328 MWA[55] = -7.367;
329 MWA[56] = -7.756;
330 MWA[57] = -8.064;
331 MWA[58] = -8.297;
332 MWA[59] = -8.46;
333 MWA[60] = -8.56;
334 MWA[61] = -8.602;
335 MWA[62] = -8.591;
336 MWA[63] = -8.533;
337 MWA[64] = -8.433;
338 MWA[65] = -8.296;
339 MWA[66] = -8.127;
340 MWA[67] = -7.93;
341 MWA[68] = -7.709;
342 MWA[69] = -7.469;
343 MWA[70] = -7.212;
344 MWA[71] = -6.943;
345 MWA[72] = -6.663;
346 MWA[73] = -6.378;
347 MWA[74] = -6.087;
348 MWA[75] = -5.795;
349 MWA[76] = -5.503;
350 MWA[77] = -5.213;
351 MWA[78] = -4.927;
352 MWA[79] = -4.646;
353 MWA[80] = -4.371;
354 MWA[81] = -4.103;
355 MWA[82] = -3.843;
356 MWA[83] = -3.593;
357 MWA[84] = -3.352;
358 MWA[85] = -3.12;
359 MWA[86] = -2.899;
360 MWA[87] = -2.689;
361 MWA[88] = -2.489;
362 MWA[89] = -2.3;
363 MWA[90] = -2.121;
364 MWA[91] = -1.952;
365 MWA[92] = -1.794;
366 MWA[93] = -1.645;
367 MWA[94] = -1.506;
368 MWA[95] = -1.377;
369 MWA[96] = -1.256;
370 MWA[97] = -1.144;
371 MWA[98] = -1.041;
372 MWA[99] = -0.9449;
373 MWA[100] = -0.8564;
374 MWA[101] = -0.775;
375 MWA[102] = -0.7001;
376 MWA[103] = -0.6315;
377 MWA[104] = -0.5687;
378 MWA[105] = -0.5113;
379 MWA[106] = -0.459;
380 MWA[107] = -0.4114;
381 MWA[108] = -0.3681;
382 MWA[109] = -0.3289;
383 MWA[110] = -0.2934;
384 MWA[111] = -0.2614;
385 MWA[112] = -0.2325;
386 MWA[113] = -0.2064;
387 MWA[114] = -0.183;
388 MWA[115] = -0.1621;
389 MWA[116] = -0.1433;
390 MWA[117] = -0.1265;
391 MWA[118] = -0.1115;
392 MWA[119] = -9.813E-2;
393 MWA[120] = -8.624E-2;
394 MWA[121] = -7.569E-2;
395 MWA[122] = -6.632E-2;
396 MWA[123] = -5.803E-2;
397 MWA[124] = -5.071E-2;
398 MWA[125] = -4.424E-2;
399 MWA[126] = -3.855E-2;
400 MWA[127] = -3.353E-2;
401 MWA[128] = -2.914E-2;
402 MWA[129] = -2.528E-2;
403 MWA[130] = -0.0219;
404 MWA[131] = -1.894E-2;
405 MWA[132] = -1.637E-2;
406 MWA[133] = -1.412E-2;
407 MWA[134] = -1.217E-2;
408 MWA[135] = -1.046E-2;
409 MWA[136] = -8.988E-3;
410 MWA[137] = -7.72E-3;
411 MWA[138] = -6.567E-3;
412 MWA[139] = -5.802E-3;
413 MWA[140] = -0.0053;
414 MWA[141] = -4.7E-4;
415 MWA[142] = -4.3E-4;
416
417 for (j = 5; j <= 11; j++) {
418 CoWA[j] = 0.0;
419 }
420 CoWA[12] = 1.25E-5;
421 CoWA[13] = 3.87E-5;
422 CoWA[14] = 1.004E-4;
423 CoWA[15] = 2.703E-4;
424 CoWA[16] = 6.507E-4;
425 CoWA[17] = 1.3985E-3;
426 CoWA[18] = 2.8353E-3;
427 CoWA[19] = 5.1911E-3;
428 CoWA[20] = 8.9486E-3;
429 CoWA[21] = 1.41773E-2;
430 CoWA[22] = 2.16551E-2;
431 CoWA[23] = 3.1489E-2;
432 CoWA[24] = 4.34123E-2;
433 CoWA[25] = 5.78719E-2;
434 CoWA[26] = 7.46921E-2;
435 CoWA[27] = 9.45265E-2;
436 CoWA[28] = 1.165183E-1;
437 CoWA[29] = 1.406353E-1;
438 CoWA[30] = 1.662849E-1;
439 CoWA[31] = 1.929895E-1;
440 CoWA[32] = 2.189347E-1;
441 CoWA[33] = 2.457772E-1;
442 CoWA[34] = 2.704794E-1;
443 CoWA[35] = 2.947906E-1;
444 CoWA[36] = 3.169854E-1;
445 CoWA[37] = 3.377435E-1;
446 CoWA[38] = 3.573555E-1;
447 CoWA[39] = 3.751205E-1;
448 CoWA[40] = 3.906829E-1;
449 CoWA[41] = 4.039806E-1;
450 CoWA[42] = 4.142483E-1;
451 CoWA[43] = 4.22779E-1;
452 CoWA[44] = 4.288013E-1;
453 CoWA[45] = 4.330353E-1;
454 CoWA[46] = 4.34452E-1;
455 CoWA[47] = 4.338138E-1;
456 CoWA[48] = 4.31504E-1;
457 CoWA[49] = 4.272541E-1;
458 CoWA[50] = 4.220568E-1;
459 CoWA[51] = 4.158229E-1;
460 CoWA[52] = 4.083281E-1;
461 CoWA[53] = 3.981182E-1;
462 CoWA[54] = 3.871678E-1;
463 CoWA[55] = 3.755527E-1;
464 CoWA[56] = 3.628823E-1;
465 CoWA[57] = 3.520135E-1;
466 CoWA[58] = 3.400924E-1;
467 CoWA[59] = 3.280532E-1;
468 CoWA[60] = 3.139477E-1;
469 CoWA[61] = 2.997087E-1;
470 CoWA[62] = 2.849179E-1;
471 CoWA[63] = 2.710475E-1;
472 CoWA[64] = 2.576478E-1;
473 CoWA[65] = 2.449155E-1;
474 CoWA[66] = 2.317447E-1;
475 CoWA[67] = 2.193161E-1;
476 CoWA[68] = 2.072622E-1;
477 CoWA[69] = 1.956955E-1;
478 CoWA[70] = 1.846514E-1;
479 CoWA[71] = 1.734096E-1;
480 CoWA[72] = 1.622678E-1;
481 CoWA[73] = 1.520447E-1;
482 CoWA[74] = 1.416351E-1;
483 CoWA[75] = 1.32136E-1;
484 CoWA[76] = 1.231861E-1;
485 CoWA[77] = 1.150411E-1;
486 CoWA[78] = 1.071536E-1;
487 CoWA[79] = 9.9465E-2;
488 CoWA[80] = 9.22347E-2;
489 CoWA[81] = 8.54394E-2;
490 CoWA[82] = 7.87697E-2;
491 CoWA[83] = 7.23848E-2;
492 CoWA[84] = 6.6587E-2;
493 CoWA[85] = 6.15849E-2;
494 CoWA[86] = 5.6573E-2;
495 CoWA[87] = 5.17893E-2;
496 CoWA[88] = 4.70011E-2;
497 CoWA[89] = 4.2886E-2;
498 CoWA[90] = 3.91224E-2;
499 CoWA[91] = 3.53163E-2;
500 CoWA[92] = 3.20884E-2;
501 CoWA[93] = 2.92264E-2;
502 CoWA[94] = 2.66058E-2;
503 CoWA[95] = 2.37352E-2;
504 CoWA[96] = 2.14669E-2;
505 CoWA[97] = 1.94848E-2;
506 CoWA[98] = 1.75591E-2;
507 CoWA[99] = 1.58232E-2;
508 CoWA[100] = 1.40302E-2;
509 CoWA[101] = 1.24349E-2;
510 CoWA[102] = 1.11856E-2;
511 CoWA[103] = 9.9765E-3;
512 CoWA[104] = 8.9492E-3;
513 CoWA[105] = 8.0063E-3;
514 CoWA[106] = 7.1509E-3;
515 CoWA[107] = 6.3196E-3;
516 CoWA[108] = 5.6856E-3;
517 CoWA[109] = 5.0686E-3;
518 CoWA[110] = 4.5085E-3;
519 CoWA[111] = 3.9895E-3;
520 CoWA[112] = 3.4804E-3;
521 CoWA[113] = 3.0447E-3;
522 CoWA[114] = 2.7012E-3;
523 CoWA[115] = 2.2984E-3;
524 CoWA[116] = 2.0283E-3;
525 CoWA[117] = 1.7399E-3;
526 CoWA[118] = 1.5032E-3;
527 CoWA[119] = 1.3267E-3;
528 CoWA[120] = 1.1531E-3;
529 CoWA[121] = 9.92E-4;
530 CoWA[122] = 9.211E-4;
531 CoWA[123] = 8.296E-4;
532 CoWA[124] = 6.991E-4;
533 CoWA[125] = 5.84E-4;
534 CoWA[126] = 5.12E-4;
535 CoWA[127] = 4.314E-4;
536 CoWA[128] = 3.593E-4;
537 CoWA[129] = 3.014E-4;
538 CoWA[130] = 2.401E-4;
539 CoWA[131] = 2.004E-4;
540 CoWA[132] = 1.614E-4;
541 CoWA[133] = 1.257E-4;
542 CoWA[134] = 1.112E-4;
543 CoWA[135] = 9.22E-5;
544 CoWA[136] = 8.77E-5;
545 CoWA[137] = 6.22E-5;
546 CoWA[138] = 4.93E-5;
547 CoWA[139] = 3.92E-5;
548 CoWA[140] = 3.15E-5;
549 CoWA[141] = 1.03E-5;
550 CoWA[142] = 9.6E-6;
551 }
552
564 public static double cdf(int n, double x) {
565 /*
566 * Approximation of the cumulative distribution function of the watsonG
567 * statistics by the cubic spline function. Y[.] - tabular value of the
568 * statistic; M[.] - tabular value of the first derivative;
569 */
570 if (n <= 1)
571 throw new IllegalArgumentException("n < 2");
572
573 final double MINARG = 0.15;
574 if (x <= MINARG)
575 return 0.0;
576 if (x >= 10.0)
577 return 1.0;
578
579 double R, Res;
580 final double MAXARG = 1.5;
581 if (x > MAXARG) {
582 R = Math.exp(19.0 - 20.0 * x);
583 Res = 1.0 - R;
584 // Empirical Correction in 1/sqrt (n)
585 R = Math.exp(13.34 - 15.26 * x) / Math.sqrt((double) n);
586 Res += R;
587 // The correction in 1/sqrt (n) is not always precise
588 if (Res >= 1.0)
589 return 1.0;
590 else
591 return Res;
592 }
593
594 final double MINTAB = 0.1;
595 final double STEP = 0.01;
596 int i, j;
597 double Tj;
598 double Ti;
599 double P;
600 double H;
601
602 // Search of the correct slot in the interpolation table
603 i = (int) ((x - MINTAB) / STEP + 1);
604 Ti = MINTAB + i * STEP;
605 Tj = Ti - STEP;
606
607 // Approximation within the slot
608 j = i - 1;
609 H = x - Tj;
610 R = Ti - x;
611 P = STEP * STEP / 6.0;
612 Res = ((MWA[j] * R * R * R + MWA[i] * H * H * H) / 6.0) / STEP;
613 Res += ((YWA[j] - MWA[j] * P) * R + (YWA[i] - MWA[i] * P) * H) / STEP;
614
615 // Empirical correction in 1/sqrt (n)
616 Res += (CoWA[i] * H + CoWA[j] * R) / (STEP * Math.sqrt((double) n));
617
618 if (Res >= 1.0)
619 return 1.0;
620 return Res;
621 }
622
627 public static double barF(int n, double x) {
628 return 1.0 - cdf(n, x);
629 }
630
636 public static double inverseF(int n, double u) {
637 if (n <= 1)
638 throw new IllegalArgumentException("n < 2");
639 if (u < 0.0 || u > 1.0)
640 throw new IllegalArgumentException("u must be in [0,1]");
641 if (u == 1.0)
642 return Double.POSITIVE_INFINITY;
643 if (u == 0.0)
644 return 0.0;
645
646 Function f = new Function(n, u);
647 return RootFinder.brentDekker(0.0, 10.0, f, 1e-5);
648 }
649
653 public int getN() {
654 return n;
655 }
656
660 public void setN(int n) {
661 if (n <= 1)
662 throw new IllegalArgumentException("n < 2");
663 this.n = n;
664 supportA = 0.0;
665 supportB = 10.0;
666 }
667
671 public double[] getParams() {
672 double[] retour = { n };
673 return retour;
674 }
675
679 public String toString() {
680 return getClass().getSimpleName() + " : n = " + n;
681 }
682
683}
Classes implementing continuous distributions should inherit from this base class.
double[] getParams()
Return an array containing the parameter of this object.
double density(double x)
Returns , the density evaluated at .
int getN()
Returns the parameter of this object.
void setN(int n)
Sets the parameter of this object.
static double inverseF(int n, double u)
Computes , where is the Watson.
double barF(double x)
Returns the complementary distribution function.
String toString()
Returns a String containing information about the current distribution.
WatsonGDist(int n)
Constructs a Watson distribution for a sample of size .
static double barF(int n, double x)
Computes the complementary distribution function with parameter .
static double cdf(int n, double x)
Computes the Watson distribution function , with parameter .
double cdf(double x)
Returns the distribution function .
double inverseF(double u)
Returns the inverse distribution function .
static double density(int n, double x)
Computes the density function for a Watson distribution with parameter .
This class provides numerical methods to solve non-linear equations.
static double brentDekker(double a, double b, MathFunction f, double tol)
Computes a root of the function in f using the Brent-Dekker method.
This interface should be implemented by classes which represent univariate mathematical functions.