blob: 3c2947923d9c2f22433475bd975dd0c49b58fae7 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>LeastSquaresConverter (Apache Commons Math 3.3 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="LeastSquaresConverter (Apache Commons Math 3.3 API)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/LeastSquaresConverter.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/commons/math3/optimization/InitialGuess.html" title="class in org.apache.commons.math3.optimization"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/commons/math3/optimization/MultivariateDifferentiableMultiStartOptimizer.html" title="class in org.apache.commons.math3.optimization"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/commons/math3/optimization/LeastSquaresConverter.html" target="_top">Frames</a></li>
<li><a href="LeastSquaresConverter.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.commons.math3.optimization</div>
<h2 title="Class LeastSquaresConverter" class="title">Class LeastSquaresConverter</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.commons.math3.optimization.LeastSquaresConverter</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../org/apache/commons/math3/analysis/MultivariateFunction.html" title="interface in org.apache.commons.math3.analysis">MultivariateFunction</a></dd>
</dl>
<hr>
<div class="block"><strong>Deprecated.</strong>&nbsp;
<div class="block"><i>As of 3.1 (to be removed in 4.0).</i></div>
</div>
<br>
<pre><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
public class <span class="strong">LeastSquaresConverter</span>
extends <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements <a href="../../../../../org/apache/commons/math3/analysis/MultivariateFunction.html" title="interface in org.apache.commons.math3.analysis">MultivariateFunction</a></pre>
<div class="block">This class converts <a href="../../../../../org/apache/commons/math3/analysis/MultivariateVectorFunction.html" title="interface in org.apache.commons.math3.analysis"><code>vectorial
objective functions</code></a> to <a href="../../../../../org/apache/commons/math3/analysis/MultivariateFunction.html" title="interface in org.apache.commons.math3.analysis"><code>scalar objective functions</code></a>
when the goal is to minimize them.
<p>
This class is mostly used when the vectorial objective function represents
a theoretical result computed from a point set applied to a model and
the models point must be adjusted to fit the theoretical result to some
reference observations. The observations may be obtained for example from
physical measurements whether the model is built from theoretical
considerations.
</p>
<p>
This class computes a possibly weighted squared sum of the residuals, which is
a scalar value. The residuals are the difference between the theoretical model
(i.e. the output of the vectorial objective function) and the observations. The
class implements the <a href="../../../../../org/apache/commons/math3/analysis/MultivariateFunction.html" title="interface in org.apache.commons.math3.analysis"><code>MultivariateFunction</code></a> interface and can therefore be
minimized by any optimizer supporting scalar objectives functions.This is one way
to perform a least square estimation. There are other ways to do this without using
this converter, as some optimization algorithms directly support vectorial objective
functions.
</p>
<p>
This class support combination of residuals with or without weights and correlations.
</p></div>
<dl><dt><span class="strong">Since:</span></dt>
<dd>2.0</dd>
<dt><span class="strong">Version:</span></dt>
<dd>$Id: LeastSquaresConverter.java 1591835 2014-05-02 09:04:01Z tn $</dd>
<dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/analysis/MultivariateFunction.html" title="interface in org.apache.commons.math3.analysis"><code>MultivariateFunction</code></a>,
<a href="../../../../../org/apache/commons/math3/analysis/MultivariateVectorFunction.html" title="interface in org.apache.commons.math3.analysis"><code>MultivariateVectorFunction</code></a></dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../org/apache/commons/math3/optimization/LeastSquaresConverter.html#LeastSquaresConverter(org.apache.commons.math3.analysis.MultivariateVectorFunction, double[])">LeastSquaresConverter</a></strong>(<a href="../../../../../org/apache/commons/math3/analysis/MultivariateVectorFunction.html" title="interface in org.apache.commons.math3.analysis">MultivariateVectorFunction</a>&nbsp;function,
double[]&nbsp;observations)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Build a simple converter for uncorrelated residuals with the same weight.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../../org/apache/commons/math3/optimization/LeastSquaresConverter.html#LeastSquaresConverter(org.apache.commons.math3.analysis.MultivariateVectorFunction, double[], double[])">LeastSquaresConverter</a></strong>(<a href="../../../../../org/apache/commons/math3/analysis/MultivariateVectorFunction.html" title="interface in org.apache.commons.math3.analysis">MultivariateVectorFunction</a>&nbsp;function,
double[]&nbsp;observations,
double[]&nbsp;weights)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Build a simple converter for uncorrelated residuals with the specific weights.</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../org/apache/commons/math3/optimization/LeastSquaresConverter.html#LeastSquaresConverter(org.apache.commons.math3.analysis.MultivariateVectorFunction, double[], org.apache.commons.math3.linear.RealMatrix)">LeastSquaresConverter</a></strong>(<a href="../../../../../org/apache/commons/math3/analysis/MultivariateVectorFunction.html" title="interface in org.apache.commons.math3.analysis">MultivariateVectorFunction</a>&nbsp;function,
double[]&nbsp;observations,
<a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a>&nbsp;scale)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Build a simple converter for correlated residuals with the specific weights.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/optimization/LeastSquaresConverter.html#value(double[])">value</a></strong>(double[]&nbsp;point)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;</div>
<div class="block">Compute the value for the function at the given point.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="LeastSquaresConverter(org.apache.commons.math3.analysis.MultivariateVectorFunction, double[])">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>LeastSquaresConverter</h4>
<pre>public&nbsp;LeastSquaresConverter(<a href="../../../../../org/apache/commons/math3/analysis/MultivariateVectorFunction.html" title="interface in org.apache.commons.math3.analysis">MultivariateVectorFunction</a>&nbsp;function,
double[]&nbsp;observations)</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Build a simple converter for uncorrelated residuals with the same weight.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>function</code> - vectorial residuals function to wrap</dd><dd><code>observations</code> - observations to be compared to objective function to compute residuals</dd></dl>
</li>
</ul>
<a name="LeastSquaresConverter(org.apache.commons.math3.analysis.MultivariateVectorFunction, double[], double[])">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>LeastSquaresConverter</h4>
<pre>public&nbsp;LeastSquaresConverter(<a href="../../../../../org/apache/commons/math3/analysis/MultivariateVectorFunction.html" title="interface in org.apache.commons.math3.analysis">MultivariateVectorFunction</a>&nbsp;function,
double[]&nbsp;observations,
double[]&nbsp;weights)</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Build a simple converter for uncorrelated residuals with the specific weights.
<p>
The scalar objective function value is computed as:
<pre>
objective = &sum;weight<sub>i</sub>(observation<sub>i</sub>-objective<sub>i</sub>)<sup>2</sup>
</pre>
</p>
<p>
Weights can be used for example to combine residuals with different standard
deviations. As an example, consider a residuals array in which even elements
are angular measurements in degrees with a 0.01&deg; standard deviation and
odd elements are distance measurements in meters with a 15m standard deviation.
In this case, the weights array should be initialized with value
1.0/(0.01<sup>2</sup>) in the even elements and 1.0/(15.0<sup>2</sup>) in the
odd elements (i.e. reciprocals of variances).
</p>
<p>
The array computed by the objective function, the observations array and the
weights array must have consistent sizes or a <a href="../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception"><code>DimensionMismatchException</code></a>
will be triggered while computing the scalar objective.
</p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>function</code> - vectorial residuals function to wrap</dd><dd><code>observations</code> - observations to be compared to objective function to compute residuals</dd><dd><code>weights</code> - weights to apply to the residuals</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></code> - if the observations vector and the weights
vector dimensions do not match (objective function dimension is checked only when
the <a href="../../../../../org/apache/commons/math3/optimization/LeastSquaresConverter.html#value(double[])"><code>value(double[])</code></a> method is called)</dd></dl>
</li>
</ul>
<a name="LeastSquaresConverter(org.apache.commons.math3.analysis.MultivariateVectorFunction, double[], org.apache.commons.math3.linear.RealMatrix)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>LeastSquaresConverter</h4>
<pre>public&nbsp;LeastSquaresConverter(<a href="../../../../../org/apache/commons/math3/analysis/MultivariateVectorFunction.html" title="interface in org.apache.commons.math3.analysis">MultivariateVectorFunction</a>&nbsp;function,
double[]&nbsp;observations,
<a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a>&nbsp;scale)</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Build a simple converter for correlated residuals with the specific weights.
<p>
The scalar objective function value is computed as:
<pre>
objective = y<sup>T</sup>y with y = scale&times;(observation-objective)
</pre>
</p>
<p>
The array computed by the objective function, the observations array and the
the scaling matrix must have consistent sizes or a <a href="../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception"><code>DimensionMismatchException</code></a>
will be triggered while computing the scalar objective.
</p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>function</code> - vectorial residuals function to wrap</dd><dd><code>observations</code> - observations to be compared to objective function to compute residuals</dd><dd><code>scale</code> - scaling matrix</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></code> - if the observations vector and the scale
matrix dimensions do not match (objective function dimension is checked only when
the <a href="../../../../../org/apache/commons/math3/optimization/LeastSquaresConverter.html#value(double[])"><code>value(double[])</code></a> method is called)</dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="value(double[])">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>value</h4>
<pre>public&nbsp;double&nbsp;value(double[]&nbsp;point)</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
<div class="block">Compute the value for the function at the given point.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/analysis/MultivariateFunction.html#value(double[])">value</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/analysis/MultivariateFunction.html" title="interface in org.apache.commons.math3.analysis">MultivariateFunction</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>point</code> - Point at which the function must be evaluated.</dd>
<dt><span class="strong">Returns:</span></dt><dd>the function value for the given point.</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/LeastSquaresConverter.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/commons/math3/optimization/InitialGuess.html" title="class in org.apache.commons.math3.optimization"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/commons/math3/optimization/MultivariateDifferentiableMultiStartOptimizer.html" title="class in org.apache.commons.math3.optimization"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/commons/math3/optimization/LeastSquaresConverter.html" target="_top">Frames</a></li>
<li><a href="LeastSquaresConverter.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2003&#x2013;2014 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>