Author: luc Date: Wed Jul 4 13:49:09 2007 New Revision: 553328 URL: http://svn.apache.org/viewvc?view=rev&rev=553328 Log: slightly improved documentation for random vectors generation
Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/random/CorrelatedRandomVectorGenerator.java jakarta/commons/proper/math/trunk/xdocs/userguide/random.xml Modified: jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/random/CorrelatedRandomVectorGenerator.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/random/CorrelatedRandomVectorGenerator.java?view=diff&rev=553328&r1=553327&r2=553328 ============================================================================== --- jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/random/CorrelatedRandomVectorGenerator.java (original) +++ jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/random/CorrelatedRandomVectorGenerator.java Wed Jul 4 13:49:09 2007 @@ -28,15 +28,26 @@ * the uncorrelated components of another random vector in such a way that * the resulting correlations are the ones specified by a positive * definite covariance matrix.</p> + * <p>The main use for correlated random vector generation is for Monte-Carlo + * simulation of physical problems with several variables, for example to + * generate error vectors to be added to a nominal vector. A particularly + * interesting case is when the generated vector should be drawn from a <a + * href="http://en.wikipedia.org/wiki/Multivariate_normal_distribution"> + * Multivariate Normal Distribution</a>. The approach using a Cholesky + * decomposition is quite usual in this case. However, it cas be extended + * to other cases as long as the underlying random generator provides + * [EMAIL PROTECTED] NormalizedRandomGenerator normalized values} like [EMAIL PROTECTED] + * GaussianRandomGenerator} or [EMAIL PROTECTED] UniformRandomGenerator}.</p> * <p>Sometimes, the covariance matrix for a given simulation is not * strictly positive definite. This means that the correlations are * not all independant from each other. In this case, however, the non * strictly positive elements found during the Cholesky decomposition * of the covariance matrix should not be negative either, they - * should be null. This implies that rather than computing <code>C = - * U<sup>T</sup>.U</code> where <code>C</code> is the covariance matrix and - * <code>U</code> is an uppertriangular matrix, we compute <code>C = - * B.B<sup>T</sup></code> where <code>B</code> is a rectangular matrix having + * should be null. Another non-conventional extension handling this case + * is used here. Rather than computing <code>C = U<sup>T</sup>.U</code> + * where <code>C</code> is the covariance matrix and <code>U</code> + * is an uppertriangular matrix, we compute <code>C = B.B<sup>T</sup></code> + * where <code>B</code> is a rectangular matrix having * more rows than columns. The number of columns of <code>B</code> is * the rank of the covariance matrix, and it is the dimension of the * uncorrelated random vector that is needed to compute the component Modified: jakarta/commons/proper/math/trunk/xdocs/userguide/random.xml URL: http://svn.apache.org/viewvc/jakarta/commons/proper/math/trunk/xdocs/userguide/random.xml?view=diff&rev=553328&r1=553327&r2=553328 ============================================================================== --- jakarta/commons/proper/math/trunk/xdocs/userguide/random.xml (original) +++ jakarta/commons/proper/math/trunk/xdocs/userguide/random.xml Wed Jul 4 13:49:09 2007 @@ -37,7 +37,7 @@ <li>generating random strings</li> <li>generating cryptographically secure sequences of random numbers or strings</li> - <li>generating random samples and permuations</li> + <li>generating random samples and permutations</li> <li>analyzing distributions of values in an input file and generating values "like" the values in the file</li> <li>generating data for grouped frequency distributions or @@ -51,9 +51,9 @@ <code>java.util.Random</code> with an alternative PRNG. </p> <p> - Sections 2.2-2.5 below show how to use the commons math API to generate + Sections 2.2-2.6 below show how to use the commons math API to generate different kinds of random data. The examples all use the default - JDK-supplied PRNG. PRNG pluggability is covered in 2.6. The only + JDK-supplied PRNG. PRNG pluggability is covered in 2.7. The only modification required to the examples to use alternative PRNGs is to replace the argumentless constructor calls with invocations including a <code>RandomGenerator</code> instance as a parameter. @@ -164,7 +164,33 @@ </p> </subsection> -<subsection name="2.3 Random Strings" href="strings"> +<subsection name="2.3 Random Vectors" href="vectors"> + <p> + Some algorithm requires random vectors instead of random scalars. When the + components of these vectors are uncorrelated, they may be generated simply + one at a time and packed together in the vector. The <a + href="../apidocs/org/apache/commons/math/random/UncorrelatedRandomVectorGenerator.html"> + org.apache.commons.math.UncorrelatedRandomVectorGenerator</a> class + does however simplify this process by setting the mean and deviation of each + component once and generating complete vectors. When the components are correlated + however, generating them is much more difficult. The <a + href="../apidocs/org/apache/commons/math/random/CorrelatedRandomVectorGenerator.html"> + org.apache.commons.math.CorrelatedRandomVectorGenerator</a> class + provides this service. In this case, the user must set a complete covariance matrix + instead of a simple standard deviations vector, this matrix gather both the variance + and the correlation information of the probability law. + </p> + <p> + The main use for correlated random vector generation is for Monte-Carlo + simulation of physical problems with several variables, for example to + generate error vectors to be added to a nominal vector. A particularly + interesting case is when the generated vector should be drawn from a <a + href="http://en.wikipedia.org/wiki/Multivariate_normal_distribution"> + Multivariate Normal Distribution</a>. + </p> + </subsection> + +<subsection name="2.4 Random Strings" href="strings"> <p> The methods <code>nextHexString</code> and <code>nextSecureHexString</code> can be used to generate random strings of hexadecimal characters. Both @@ -194,7 +220,7 @@ </p> </subsection> -<subsection name="2.4 Random permutations, combinations, sampling" +<subsection name="2.5 Random permutations, combinations, sampling" href="combinatorics"> <p> To select a random sample of objects in a collection, you can use the @@ -221,7 +247,7 @@ </p> </subsection> -<subsection name="2.5 Generating data 'like' an input file" href="empirical"> +<subsection name="2.6 Generating data 'like' an input file" href="empirical"> <p> Using the <code>ValueServer</code> class, you can generate data based on the values in an input file in one of two ways: @@ -274,7 +300,7 @@ </p> </subsection> -<subsection name="2.6 PRNG Pluggability" href="pluggability"> +<subsection name="2.7 PRNG Pluggability" href="pluggability"> <p> To enable alternative PRNGs to be "plugged in" to the commons-math data generation utilities and to provide a generic means to replace --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]