annotate libs/commons-math-2.1/docs/userguide/optimization.html @ 10:5f2c5fb36e93

commons-math-2.1 added
author dwinter
date Tue, 04 Jan 2011 10:00:53 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
2
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
3
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
4
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
5
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
6
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
7
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
8
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
9
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
10
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
11
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
12
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
13 <html xmlns="http://www.w3.org/1999/xhtml">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
14 <head>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
15 <title>Math - The Commons Math User Guide - Optimization</title>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
16 <style type="text/css" media="all">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
17 @import url("../css/maven-base.css");
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
18 @import url("../css/maven-theme.css");
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
19 @import url("../css/site.css");
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
20 </style>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
21 <link rel="stylesheet" href="../css/print.css" type="text/css" media="print" />
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
22 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
23 </head>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
24 <body class="composite">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
25 <div id="banner">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
26 <span id="bannerLeft">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
27
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
28 Commons Math User Guide
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
29
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
30 </span>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
31 <div class="clear">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
32 <hr/>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
33 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
34 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
35 <div id="breadcrumbs">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
36
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
37
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
38
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
39
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
40
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
41
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
42
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
43
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
44 <div class="xright">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
45
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
46
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
47
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
48
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
49
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
50
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
51
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
52 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
53 <div class="clear">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
54 <hr/>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
55 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
56 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
57 <div id="leftColumn">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
58 <div id="navcolumn">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
59
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
60
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
61
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
62
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
63
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
64
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
65
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
66
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
67 <h5>User Guide</h5>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
68 <ul>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
69
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
70 <li class="none">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
71 <a href="../userguide/index.html">Contents</a>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
72 </li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
73
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
74 <li class="none">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
75 <a href="../userguide/overview.html">Overview</a>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
76 </li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
77
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
78 <li class="none">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
79 <a href="../userguide/stat.html">Statistics</a>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
80 </li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
81
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
82 <li class="none">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
83 <a href="../userguide/random.html">Data Generation</a>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
84 </li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
85
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
86 <li class="none">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
87 <a href="../userguide/linear.html">Linear Algebra</a>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
88 </li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
89
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
90 <li class="none">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
91 <a href="../userguide/analysis.html">Numerical Analysis</a>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
92 </li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
93
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
94 <li class="none">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
95 <a href="../userguide/special.html">Special Functions</a>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
96 </li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
97
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
98 <li class="none">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
99 <a href="../userguide/utilities.html">Utilities</a>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
100 </li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
101
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
102 <li class="none">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
103 <a href="../userguide/complex.html">Complex Numbers</a>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
104 </li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
105
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
106 <li class="none">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
107 <a href="../userguide/distribution.html">Distributions</a>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
108 </li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
109
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
110 <li class="none">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
111 <a href="../userguide/fraction.html">Fractions</a>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
112 </li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
113
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
114 <li class="none">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
115 <a href="../userguide/transform.html">Transform Methods</a>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
116 </li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
117
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
118 <li class="none">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
119 <a href="../userguide/geometry.html">3D Geometry</a>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
120 </li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
121
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
122 <li class="none">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
123 <strong>Optimization</strong>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
124 </li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
125
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
126 <li class="none">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
127 <a href="../userguide/ode.html">Ordinary Differential Equations</a>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
128 </li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
129
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
130 <li class="none">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
131 <a href="../userguide/genetics.html">Genetic Algorithms</a>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
132 </li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
133 </ul>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
134 <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
135 <img alt="Built by Maven" src="../images/logos/maven-feather.png"></img>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
136 </a>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
137
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
138
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
139
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
140
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
141
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
142
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
143
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
144
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
145 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
146 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
147 <div id="bodyColumn">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
148 <div id="contentBox">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
149 <div class="section"><h2><a name="a12_Optimization"></a>12 Optimization</h2>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
150 <div class="section"><h3><a name="a12.1_Overview"></a>12.1 Overview</h3>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
151 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
152 The optimization package provides algorithms to optimize (i.e. either minimize
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
153 or maximize) some objective or cost function. The package is split in several
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
154 sub-packages dedicated to different kind of functions or algorithms.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
155 <ul><li>the univariate package handles univariate scalar functions,</li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
156 <li>the linear package handles multivariate vector linear functions
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
157 with linear constraints,</li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
158 <li>the direct package handles multivariate scalar functions
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
159 using direct search methods (i.e. not using derivatives),</li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
160 <li>the general package handles multivariate scalar or vector functions
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
161 using derivatives.</li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
162 <li>the fitting package handles curve fitting by univariate real functions</li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
163 </ul>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
164 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
165 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
166 The top level optimization package provides common interfaces for the optimization
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
167 algorithms provided in sub-packages. The main interfaces defines defines optimizers
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
168 and convergence checkers. The functions that are optimized by the algorithms provided
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
169 by this package and its sub-packages are a subset of the one defined in the
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
170 <code>analysis</code> package, namely the real and vector valued functions. These
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
171 functions are called objective function here. When the goal is to minimize, the
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
172 functions are often called cost function, this name is not used in this package.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
173 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
174 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
175 The type of goal, i.e. minimization or maximization, is defined by the enumerated
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
176 <a href="../apidocs/org/apache/commons/math/optimization/GoalType.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
177 GoalType</a> which has only two values: <code>MAXIMIZE</code> and <code>MINIMIZE</code>.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
178 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
179 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
180 Optimizers are the algorithms that will either minimize or maximize, the objective
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
181 function by changing its input variables set until an optimal set is found. There
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
182 are only four interfaces defining the common behavior of optimizers, one for each
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
183 supported type of objective function:
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
184 <ul><li><a href="../apidocs/org/apache/commons/math/optimization/UnivariateRealOptimizer.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
185 UnivariateRealOptimizer</a> for <a href="../apidocs/org/apache/commons/math/analysis/UnivariateRealFunction.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
186 univariate real functions</a></li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
187 <li><a href="../apidocs/org/apache/commons/math/optimization/MultivariateRealOptimizer.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
188 MultivariateRealOptimizer</a> for <a href="../apidocs/org/apache/commons/math/analysis/MultivariateRealFunction.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
189 multivariate real functions</a></li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
190 <li><a href="../apidocs/org/apache/commons/math/optimization/DifferentiableMultivariateRealOptimizer.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
191 DifferentiableMultivariateRealOptimizer</a> for <a href="../apidocs/org/apache/commons/math/analysis/DifferentiableMultivariateRealFunction.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
192 differentiable multivariate real functions</a></li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
193 <li><a href="../apidocs/org/apache/commons/math/optimization/DifferentiableMultivariateVectorialOptimizer.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
194 DifferentiableMultivariateVectorialOptimizer</a> for <a href="../apidocs/org/apache/commons/math/analysis/DifferentiableMultivariateVectorialFunction.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
195 differentiable multivariate vectorial functions</a></li>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
196 </ul>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
197 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
198 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
199 Despite there are only four types of supported optimizers, it is possible to optimize
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
200 a transform a <a href="../apidocs/org/apache/commons/math/analysis/MultivariateVectorialFunction.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
201 non-differentiable multivariate vectorial function</a> by converting it to a <a href="../apidocs/org/apache/commons/math/analysis/MultivariateRealFunction.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
202 non-differentiable multivariate real function</a> thanks to the <a href="../apidocs/org/apache/commons/math/optimization/LeastSquaresConverter.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
203 LeastSquaresConverter</a> helper class. The transformed function can be optimized using
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
204 any implementation of the <a href="../apidocs/org/apache/commons/math/optimization/MultivariateRealOptimizer.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
205 MultivariateRealOptimizer</a> interface.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
206 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
207 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
208 For each of the four types of supported optimizers, there is a special implementation
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
209 which wraps a classical optimizer in order to add it a multi-start feature. This feature
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
210 call the underlying optimizer several times in sequence with different starting points
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
211 and returns the best optimum found or all optima if desired. This is a classical way to
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
212 prevent being trapped into a local extremum when looking for a global one.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
213 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
214 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
215 <div class="section"><h3><a name="a12.2_Univariate_Functions"></a>12.2 Univariate Functions</h3>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
216 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
217 A <a href="../apidocs/org/apache/commons/math/optimization/UnivariateRealOptimizer.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
218 UnivariateRealOptimizer</a> is used to find the minimal values of a univariate real-valued
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
219 function <code>f</code>.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
220 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
221 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
222 These algorithms usage is very similar to root-finding algorithms usage explained
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
223 in the analysis package. The main difference is that the <code>solve</code> methods in root
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
224 finding algorithms is replaced by <code>optimize</code> methods.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
225 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
226 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
227 <div class="section"><h3><a name="a12.3_Linear_Programming"></a>12.3 Linear Programming</h3>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
228 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
229 This package provides an implementation of George Dantzig's simplex algorithm
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
230 for solving linear optimization problems with linear equality and inequality
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
231 constraints.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
232 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
233 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
234 <div class="section"><h3><a name="a12.4_Direct_Methods"></a>12.4 Direct Methods</h3>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
235 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
236 Direct search methods only use cost function values, they don't
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
237 need derivatives and don't either try to compute approximation of
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
238 the derivatives. According to a 1996 paper by Margaret H. Wright
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
239 (<a href="http://cm.bell-labs.com/cm/cs/doc/96/4-02.ps.gz" class="externalLink">Direct
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
240 Search Methods: Once Scorned, Now Respectable</a>), they are used
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
241 when either the computation of the derivative is impossible (noisy
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
242 functions, unpredictable discontinuities) or difficult (complexity,
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
243 computation cost). In the first cases, rather than an optimum, a
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
244 <em>not too bad</em> point is desired. In the latter cases, an
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
245 optimum is desired but cannot be reasonably found. In all cases
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
246 direct search methods can be useful.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
247 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
248 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
249 Simplex-based direct search methods are based on comparison of
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
250 the cost function values at the vertices of a simplex (which is a
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
251 set of n+1 points in dimension n) that is updated by the algorithms
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
252 steps.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
253 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
254 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
255 The instances can be built either in single-start or in
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
256 multi-start mode. Multi-start is a traditional way to try to avoid
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
257 being trapped in a local minimum and miss the global minimum of a
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
258 function. It can also be used to verify the convergence of an
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
259 algorithm. In multi-start mode, the <code>minimizes</code>method
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
260 returns the best minimum found after all starts, and the <code>etMinima</code>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
261 method can be used to retrieve all minima from all starts (including the one
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
262 already provided by the <code>minimizes</code> method).
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
263 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
264 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
265 The <code>direct</code> package provides two solvers. The first one is the classical
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
266 <a href="../apidocs/org/apache/commons/math/optimization/direct/NelderMead.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
267 Nelder-Mead</a> method. The second one is Virginia Torczon's
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
268 <a href="../apidocs/org/apache/commons/math/optimization/direct/MultiDirectional.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
269 multi-directional</a> method.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
270 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
271 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
272 <div class="section"><h3><a name="a12.5_General_Case"></a>12.5 General Case</h3>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
273 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
274 The general package deals with non-linear vectorial optimization problems when
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
275 the partial derivatives of the objective function are available.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
276 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
277 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
278 One important class of estimation problems is weighted least
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
279 squares problems. They basically consist in finding the values
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
280 for some parameters p<sub>k</sub> such that a cost function
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
281 J = sum(w<sub>i</sub>(mes<sub>i</sub> - mod<sub>i</sub>)<sup>2</sup>) is
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
282 minimized. The various (target<sub>i</sub> - model<sub>i</sub>(p<sub>k</sub>))
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
283 terms are called residuals. They represent the deviation between a set of
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
284 target values target<sub>i</sub> and theoretical values computed from
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
285 models model<sub>i</sub> depending on free parameters p<sub>k</sub>.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
286 The w<sub>i</sub> factors are weights. One classical use case is when the
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
287 target values are experimental observations or measurements.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
288 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
289 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
290 Solving a least-squares problem is finding the free parameters p<sub>k</sub>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
291 of the theoretical models such that they are close to the target values, i.e.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
292 when the residual are small.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
293 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
294 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
295 Two optimizers are available in the general package, both devoted to least-squares
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
296 problems. The first one is based on the <a href="../apidocs/org/apache/commons/math/optimization/general/GaussNewtonOptimizer.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
297 Gauss-Newton</a> method. The second one is the <a href="../apidocs/org/apache/commons/math/optimization/general/LevenbergMarquardtOptimizer.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
298 Levenberg-Marquardt</a> method.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
299 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
300 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
301 In order to solve a vectorial optimization problem, the user must provide it as
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
302 an object implementing the <a href="../apidocs/org/apache/commons/math/analysis/DifferentiableMultivariateVectorialFunction.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
303 DifferentiableMultivariateVectorialFunction</a> interface. The object will be provided to
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
304 the <code>estimate</code> method of the optimizer, along with the target and weight arrays,
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
305 thus allowing the optimizer to compute the residuals at will. The last parameter to the
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
306 <code>estimate</code> method is the point from which the optimizer will start its
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
307 search for the optimal point.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
308 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
309 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
310 In addition to least squares solving, the <a href="../apidocs/org/apache/commons/math/optimization/general/NonLinearConjugateGradientOptimizer.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
311 NonLinearConjugateGradientOptimizer</a> class provides a non-linear conjugate gradient algorithm
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
312 to optimize <a href="../apidocs/org/apache/commons/math/optimization/DifferentiableMultivariateRealFunction.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
313 DifferentiableMultivariateRealFunction</a>. Both the Fletcher-Reeves and the Polak-Ribière
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
314 search direction update methods are supported. It is also possible to set up a preconditioner
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
315 or to change the line-search algorithm of the inner loop if desired (the default one is a Brent
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
316 solver).
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
317 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
318 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
319 <div class="section"><h3><a name="a12.6_Curve_Fitting"></a>12.6 Curve Fitting</h3>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
320 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
321 The fitting package deals with curve fitting for univariate real functions.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
322 When a univariate real function y = f(x) does depend on some unknown parameters
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
323 p<sub>0</sub>, p<sub>1</sub> ... p<sub>n-1</sub>, curve fitting can be used to
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
324 find these parameters. It does this by <em>fitting</em> the curve so it remains
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
325 very close to a set of observed points (x<sub>0</sub>, y<sub>0</sub>),
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
326 (x<sub>1</sub>, y<sub>1</sub>) ... (x<sub>k-1</sub>, y<sub>k-1</sub>). This
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
327 fitting is done by finding the parameters values that minimizes the objective
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
328 function sum(y<sub>i</sub>-f(x<sub>i</sub>))<sup>2</sup>. This is really a least
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
329 squares problem.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
330 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
331 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
332 For all provided curve fitters, the operating principle is the same. Users must first
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
333 create an instance of the fitter, then add the observed points and once the complete
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
334 sample of observed points has been added they must call the <code>fit</code> method
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
335 which will compute the parameters that best fit the sample. A weight is associated
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
336 with each observed point, this allows to take into account uncertainty on some points
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
337 when they come from loosy measurements for example. If no such information exist and
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
338 all points should be treated the same, it is safe to put 1.0 as the weight for all points.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
339 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
340 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
341 The <a href="../apidocs/org/apache/commons/math/optimization/fitting/CurveFitter.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
342 CurveFitter</a> class provides curve fitting for general curves. Users must
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
343 provide their own implementation of the curve template as a class implementing
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
344 the <a href="../apidocs/org/apache/commons/math/optimization/fitting/ParametricRealFunction.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
345 ParametricRealFunction</a> interface and they must provide the initial guess of the
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
346 parameters. The more specialized <a href="../apidocs/org/apache/commons/math/optimization/fitting/PolynomialFitter.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
347 PolynomialFitter</a> and <a href="../apidocs/org/apache/commons/math/optimization/fitting/HarmonicFitter.html">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
348 HarmonicFitter</a> classes require neither an implementation of the parametric real function
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
349 not an initial guess as they are able to compute them by themselves.
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
350 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
351 <p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
352 An example of fitting a polynomial is given here:
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
353 </p>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
354 <div class="source"><pre>PolynomialFitter fitter = new PolynomialFitter(degree, new LevenbergMarquardtOptimizer());
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
355 fitter.addObservedPoint(-1.00, 2.021170021833143);
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
356 fitter.addObservedPoint(-0.99 2.221135431136975);
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
357 fitter.addObservedPoint(-0.98 2.09985277659314);
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
358 fitter.addObservedPoint(-0.97 2.0211192647627025);
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
359 // lots of lines ommitted
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
360 fitter.addObservedPoint( 0.99, -2.4345814727089854);
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
361 PolynomialFunction fitted = fitter.fit();
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
362 </pre>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
363 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
364 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
365 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
366
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
367 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
368 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
369 <div class="clear">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
370 <hr/>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
371 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
372 <div id="footer">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
373 <div class="xright">&#169;
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
374 2003-2010
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
375
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
376
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
377
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
378
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
379
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
380
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
381
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
382
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
383
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
384 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
385 <div class="clear">
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
386 <hr/>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
387 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
388 </div>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
389 </body>
5f2c5fb36e93 commons-math-2.1 added
dwinter
parents:
diff changeset
390 </html>