[//000000001]: # (math::quasirandom \- Tcl Math Library) [//000000002]: # (Generated from file 'quasirandom\.man' by tcllib/doctools with format 'markdown') [//000000003]: # (math::quasirandom\(n\) 1 tcllib "Tcl Math Library")
[ Main Table Of Contents | Table Of Contents | Keyword Index | Categories | Modules | Applications ]
# NAME math::quasirandom \- Quasi\-random points for integration and Monte Carlo type methods # Table Of Contents - [Table Of Contents](#toc) - [Synopsis](#synopsis) - [Description](#section1) - [COMMANDS](#section2) - [TODO](#section3) - [References](#section4) - [Keywords](#keywords) - [Category](#category) # SYNOPSIS package require Tcl 8\.6 package require TclOO package require math::quasirandom 1 [__::math::quasirandom::qrpoint create__ *NAME* *DIM* ?ARGS?](#1) [__gen next__](#2) [__gen set\-start__ *index*](#3) [__gen set\-evaluations__ *number*](#4) [__gen integral__ *func* *minmax* *args*](#5) # DESCRIPTION In many applications pseudo\-random numbers and pseudo\-random points in a \(limited\) sample space play an important role\. For instance in any type of Monte Carlo simulation\. Pseudo\-random numbers, however, may be too random and as a consequence a large number of data points is required to reduce the error or fluctuation in the results to the desired value\. Quasi\-random numbers can be used as an alternative: instead of "completely" arbitrary points, points are generated that are diverse enough to cover the entire sample space in a more or less uniform way\. As a consequence convergence to the limit can be much faster, when such quasi\-random numbers are well\-chosen\. The package defines a *[class](\.\./\.\./\.\./\.\./index\.md\#class)* "qrpoint" that creates a command to generate quasi\-random points in 1, 2 or more dimensions\. The command can either generate separate points, so that they can be used in a user\-defined algorithm or use these points to calculate integrals of functions defined over 1, 2 or more dimensions\. It also holds several other common algorithms\. \(NOTE: these are not implemented yet\) One particular characteristic of the generators is that there are no tuning parameters involved, which makes the use particularly simple\. # COMMANDS A quasi\-random point generator is created using the *qrpoint* class: - __::math::quasirandom::qrpoint create__ *NAME* *DIM* ?ARGS? This command takes the following arguments: * string *NAME* The name of the command to be created \(alternatively: the *new* subcommand will generate a unique name\) * integer/string *DIM* The number of dimensions or one of: "circle", "disk", "sphere" or "ball" * strings *ARGS* Zero or more key\-value pairs\. The supported options are: + *\-start index*: The index for the next point to be generated \(default: 1\) + *\-evaluations number*: The number of evaluations to be used by default \(default: 100\) The points that are returned lie in the hyperblock \[0,1\[^n \(n the number of dimensions\) or on the unit circle, within the unit disk, on the unit sphere or within the unit ball\. Each generator supports the following subcommands: - __gen next__ Return the coordinates of the next quasi\-random point - __gen set\-start__ *index* Reset the index for the next quasi\-random point\. This is useful to control which list of points is returned\. Returns the new or the current value, if no value is given\. - __gen set\-evaluations__ *number* Reset the default number of evaluations in compound algorithms\. Note that the actual number is the smallest 4\-fold larger or equal to the given number\. \(The 4\-fold plays a role in the detailed integration routine\.\) - __gen integral__ *func* *minmax* *args* Calculate the integral of the given function over the block \(or the circle, sphere etc\.\) * string *func* The name of the function to be integrated * list *minmax* List of pairs of minimum and maximum coordinates\. This can be used to map the quasi\-random coordinates to the desired hyper\-block\. If the space is a circle, disk etc\. then this argument should be a single value, the radius\. The circle, disk, etc\. is centred at the origin\. If this is not what is required, then a coordinate transformation should be made within the function\. * strings *args* Zero or more key\-value pairs\. The following options are supported: + *\-evaluations number*: The number of evaluations to be used\. If not specified use the default of the generator object\. # TODO Implement other algorithms and variants Implement more unit tests\. Comparison to pseudo\-random numbers for integration\. # References Various algorithms exist for generating quasi\-random numbers\. The generators created in this package are based on: [http://extremelearning\.com\.au/unreasonable\-effectiveness\-of\-quasirandom\-sequences/](http://extremelearning\.com\.au/unreasonable\-effectiveness\-of\-quasirandom\-sequences/) # KEYWORDS [mathematics](\.\./\.\./\.\./\.\./index\.md\#mathematics), [quasi\-random](\.\./\.\./\.\./\.\./index\.md\#quasi\_random) # CATEGORY Mathematics