File: Spherical-Vector-Distributions.html

package info (click to toggle)
gsl-ref-html 1.16-1
  • links: PTS
  • area: non-free
  • in suites: jessie, jessie-kfreebsd, stretch
  • size: 5,816 kB
  • ctags: 4,130
  • sloc: makefile: 35
file content (136 lines) | stat: -rw-r--r-- 7,784 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The GSL Team.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections and no cover texts.  A copy of the license is
included in the section entitled "GNU Free Documentation License". -->
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU Scientific Library &ndash; Reference Manual: Spherical Vector Distributions</title>

<meta name="description" content="GNU Scientific Library &ndash; Reference Manual: Spherical Vector Distributions">
<meta name="keywords" content="GNU Scientific Library &ndash; Reference Manual: Spherical Vector Distributions">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Function-Index.html#Function-Index" rel="index" title="Function Index">
<link href="Random-Number-Distributions.html#Random-Number-Distributions" rel="up" title="Random Number Distributions">
<link href="The-Weibull-Distribution.html#The-Weibull-Distribution" rel="next" title="The Weibull Distribution">
<link href="The-Pareto-Distribution.html#The-Pareto-Distribution" rel="previous" title="The Pareto Distribution">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Spherical-Vector-Distributions"></a>
<div class="header">
<p>
Next: <a href="The-Weibull-Distribution.html#The-Weibull-Distribution" accesskey="n" rel="next">The Weibull Distribution</a>, Previous: <a href="The-Pareto-Distribution.html#The-Pareto-Distribution" accesskey="p" rel="previous">The Pareto Distribution</a>, Up: <a href="Random-Number-Distributions.html#Random-Number-Distributions" accesskey="u" rel="up">Random Number Distributions</a> &nbsp; [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Spherical-Vector-Distributions-1"></a>
<h3 class="section">20.23 Spherical Vector Distributions</h3>

<p>The spherical distributions generate random vectors, located on a
spherical surface.  They can be used as random directions, for example in
the steps of a random walk.
</p>
<dl>
<dt><a name="index-gsl_005fran_005fdir_005f2d"></a>Function: <em>void</em> <strong>gsl_ran_dir_2d</strong> <em>(const gsl_rng * <var>r</var>, double * <var>x</var>, double * <var>y</var>)</em></dt>
<dt><a name="index-gsl_005fran_005fdir_005f2d_005ftrig_005fmethod"></a>Function: <em>void</em> <strong>gsl_ran_dir_2d_trig_method</strong> <em>(const gsl_rng * <var>r</var>, double * <var>x</var>, double * <var>y</var>)</em></dt>
<dd><a name="index-2D-random-direction-vector"></a>
<a name="index-direction-vector_002c-random-2D"></a>
<a name="index-spherical-random-variates_002c-2D"></a>
<p>This function returns a random direction vector <em>v</em> =
(<var>x</var>,<var>y</var>) in two dimensions.  The vector is normalized such that
<em>|v|^2 = x^2 + y^2 = 1</em>.  The obvious way to do this is to take a
uniform random number between 0 and <em>2\pi</em> and let <var>x</var> and
<var>y</var> be the sine and cosine respectively.  Two trig functions would
have been expensive in the old days, but with modern hardware
implementations, this is sometimes the fastest way to go.  This is the
case for the Pentium (but not the case for the Sun Sparcstation).
One can avoid the trig evaluations by choosing <var>x</var> and
<var>y</var> in the interior of a unit circle (choose them at random from the
interior of the enclosing square, and then reject those that are outside
the unit circle), and then dividing by <em>\sqrt{x^2 + y^2}</em>.
A much cleverer approach, attributed to von Neumann (See Knuth, v2, 3rd
ed, p140, exercise 23), requires neither trig nor a square root.  In
this approach, <var>u</var> and <var>v</var> are chosen at random from the
interior of a unit circle, and then <em>x=(u^2-v^2)/(u^2+v^2)</em> and
<em>y=2uv/(u^2+v^2)</em>.
</p></dd></dl>

<dl>
<dt><a name="index-gsl_005fran_005fdir_005f3d"></a>Function: <em>void</em> <strong>gsl_ran_dir_3d</strong> <em>(const gsl_rng * <var>r</var>, double * <var>x</var>, double * <var>y</var>, double * <var>z</var>)</em></dt>
<dd><a name="index-3D-random-direction-vector"></a>
<a name="index-direction-vector_002c-random-3D"></a>
<a name="index-spherical-random-variates_002c-3D"></a>
<p>This function returns a random direction vector <em>v</em> =
(<var>x</var>,<var>y</var>,<var>z</var>) in three dimensions.  The vector is normalized
such that <em>|v|^2 = x^2 + y^2 + z^2 = 1</em>.  The method employed is
due to Robert E. Knop (CACM 13, 326 (1970)), and explained in Knuth, v2,
3rd ed, p136.  It uses the surprising fact that the distribution
projected along any axis is actually uniform (this is only true for 3
dimensions).
</p></dd></dl>

<dl>
<dt><a name="index-gsl_005fran_005fdir_005fnd"></a>Function: <em>void</em> <strong>gsl_ran_dir_nd</strong> <em>(const gsl_rng * <var>r</var>, size_t <var>n</var>, double * <var>x</var>)</em></dt>
<dd><a name="index-N_002ddimensional-random-direction-vector"></a>
<a name="index-direction-vector_002c-random-N_002ddimensional"></a>
<a name="index-spherical-random-variates_002c-N_002ddimensional"></a>

<p>This function returns a random direction vector
<em>v = (x_1,x_2,...,x_n)</em> in <var>n</var> dimensions.  The vector is normalized
such that 
<em>|v|^2 = x_1^2 + x_2^2 + ... + x_n^2 = 1</em>.  The method
uses the fact that a multivariate Gaussian distribution is spherically
symmetric.  Each component is generated to have a Gaussian distribution,
and then the components are normalized.  The method is described by
Knuth, v2, 3rd ed, p135&ndash;136, and attributed to G. W. Brown, Modern
Mathematics for the Engineer (1956).
</p></dd></dl>

<hr>
<div class="header">
<p>
Next: <a href="The-Weibull-Distribution.html#The-Weibull-Distribution" accesskey="n" rel="next">The Weibull Distribution</a>, Previous: <a href="The-Pareto-Distribution.html#The-Pareto-Distribution" accesskey="p" rel="previous">The Pareto Distribution</a>, Up: <a href="Random-Number-Distributions.html#Random-Number-Distributions" accesskey="u" rel="up">Random Number Distributions</a> &nbsp; [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>