blob: a594c56645ba31a1da4a08ae13258108dc61e386 [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>EigenDecomposition (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="EigenDecomposition (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/EigenDecomposition.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/linear/DiagonalMatrix.html" title="class in org.apache.commons.math3.linear"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/commons/math3/linear/FieldDecompositionSolver.html" title="interface in org.apache.commons.math3.linear"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/commons/math3/linear/EigenDecomposition.html" target="_top">Frames</a></li>
<li><a href="EigenDecomposition.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.linear</div>
<h2 title="Class EigenDecomposition" class="title">Class EigenDecomposition</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.linear.EigenDecomposition</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="strong">EigenDecomposition</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></pre>
<div class="block">Calculates the eigen decomposition of a real matrix.
<p>The eigen decomposition of matrix A is a set of two matrices:
V and D such that A = V &times; D &times; V<sup>T</sup>.
A, V and D are all m &times; m matrices.</p>
<p>This class is similar in spirit to the <code>EigenvalueDecomposition</code>
class from the <a href="http://math.nist.gov/javanumerics/jama/">JAMA</a>
library, with the following changes:</p>
<ul>
<li>a <a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getVT()"><code>getVt</code></a> method has been added,</li>
<li>two <a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getRealEigenvalue(int)"><code>getRealEigenvalue</code></a> and <a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getImagEigenvalue(int)"><code>getImagEigenvalue</code></a> methods to pick up a single eigenvalue have been added,</li>
<li>a <a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getEigenvector(int)"><code>getEigenvector</code></a> method to pick up a single
eigenvector has been added,</li>
<li>a <a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getDeterminant()"><code>getDeterminant</code></a> method has been added.</li>
<li>a <a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getSolver()"><code>getSolver</code></a> method has been added.</li>
</ul>
<p>
As of 3.1, this class supports general real matrices (both symmetric and non-symmetric):
</p>
<p>
If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is diagonal and the eigenvector
matrix V is orthogonal, i.e. A = V.multiply(D.multiply(V.transpose())) and
V.multiply(V.transpose()) equals the identity matrix.
</p>
<p>
If A is not symmetric, then the eigenvalue matrix D is block diagonal with the real eigenvalues
in 1-by-1 blocks and any complex eigenvalues, lambda + i*mu, in 2-by-2 blocks:
<pre>
[lambda, mu ]
[ -mu, lambda]
</pre>
The columns of V represent the eigenvectors in the sense that A*V = V*D,
i.e. A.multiply(V) equals V.multiply(D).
The matrix V may be badly conditioned, or even singular, so the validity of the equation
A = V*D*inverse(V) depends upon the condition of V.
</p>
<p>
This implementation is based on the paper by A. Drubrulle, R.S. Martin and
J.H. Wilkinson "The Implicit QL Algorithm" in Wilksinson and Reinsch (1971)
Handbook for automatic computation, vol. 2, Linear algebra, Springer-Verlag,
New-York
</p></div>
<dl><dt><span class="strong">Since:</span></dt>
<dd>2.0 (changed to concrete class in 3.0)</dd>
<dt><span class="strong">Version:</span></dt>
<dd>$Id: EigenDecomposition.java 1538368 2013-11-03 13:57:37Z erans $</dd>
<dt><span class="strong">See Also:</span></dt><dd><a href="http://mathworld.wolfram.com/EigenDecomposition.html">MathWorld</a>,
<a href="http://en.wikipedia.org/wiki/Eigendecomposition_of_a_matrix">Wikipedia</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/linear/EigenDecomposition.html#EigenDecomposition(double[], double[])">EigenDecomposition</a></strong>(double[]&nbsp;main,
double[]&nbsp;secondary)</code>
<div class="block">Calculates the eigen decomposition of the symmetric tridiagonal
matrix.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#EigenDecomposition(double[], double[], double)">EigenDecomposition</a></strong>(double[]&nbsp;main,
double[]&nbsp;secondary,
double&nbsp;splitTolerance)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;
<div class="block"><i>in 3.1 (to be removed in 4.0) due to unused parameter</i></div>
</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#EigenDecomposition(org.apache.commons.math3.linear.RealMatrix)">EigenDecomposition</a></strong>(<a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a>&nbsp;matrix)</code>
<div class="block">Calculates the eigen decomposition of the given real matrix.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#EigenDecomposition(org.apache.commons.math3.linear.RealMatrix, double)">EigenDecomposition</a></strong>(<a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a>&nbsp;matrix,
double&nbsp;splitTolerance)</code>
<div class="block"><strong>Deprecated.</strong>&nbsp;
<div class="block"><i>in 3.1 (to be removed in 4.0) due to unused parameter</i></div>
</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><a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getD()">getD</a></strong>()</code>
<div class="block">Gets the block diagonal matrix D of the decomposition.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getDeterminant()">getDeterminant</a></strong>()</code>
<div class="block">Computes the determinant of the matrix.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/linear/RealVector.html" title="class in org.apache.commons.math3.linear">RealVector</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getEigenvector(int)">getEigenvector</a></strong>(int&nbsp;i)</code>
<div class="block">Gets a copy of the i<sup>th</sup> eigenvector of the original matrix.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getImagEigenvalue(int)">getImagEigenvalue</a></strong>(int&nbsp;i)</code>
<div class="block">Gets the imaginary part of the i<sup>th</sup> eigenvalue of the original
matrix.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double[]</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getImagEigenvalues()">getImagEigenvalues</a></strong>()</code>
<div class="block">Gets a copy of the imaginary parts of the eigenvalues of the original
matrix.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getRealEigenvalue(int)">getRealEigenvalue</a></strong>(int&nbsp;i)</code>
<div class="block">Returns the real part of the i<sup>th</sup> eigenvalue of the original
matrix.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double[]</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getRealEigenvalues()">getRealEigenvalues</a></strong>()</code>
<div class="block">Gets a copy of the real parts of the eigenvalues of the original matrix.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/linear/DecompositionSolver.html" title="interface in org.apache.commons.math3.linear">DecompositionSolver</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getSolver()">getSolver</a></strong>()</code>
<div class="block">Gets a solver for finding the A &times; X = B solution in exact
linear sense.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getSquareRoot()">getSquareRoot</a></strong>()</code>
<div class="block">Computes the square-root of the matrix.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getV()">getV</a></strong>()</code>
<div class="block">Gets the matrix V of the decomposition.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getVT()">getVT</a></strong>()</code>
<div class="block">Gets the transpose of the matrix V of the decomposition.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#hasComplexEigenvalues()">hasComplexEigenvalues</a></strong>()</code>
<div class="block">Returns whether the calculated eigen values are complex or real.</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="EigenDecomposition(org.apache.commons.math3.linear.RealMatrix)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>EigenDecomposition</h4>
<pre>public&nbsp;EigenDecomposition(<a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a>&nbsp;matrix)
throws <a href="../../../../../org/apache/commons/math3/exception/MathArithmeticException.html" title="class in org.apache.commons.math3.exception">MathArithmeticException</a></pre>
<div class="block">Calculates the eigen decomposition of the given real matrix.
<p>
Supports decomposition of a general matrix since 3.1.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>matrix</code> - Matrix to decompose.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/MaxCountExceededException.html" title="class in org.apache.commons.math3.exception">MaxCountExceededException</a></code> - if the algorithm fails to converge.</dd>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/MathArithmeticException.html" title="class in org.apache.commons.math3.exception">MathArithmeticException</a></code> - if the decomposition of a general matrix
results in a matrix with zero norm</dd><dt><span class="strong">Since:</span></dt>
<dd>3.1</dd></dl>
</li>
</ul>
<a name="EigenDecomposition(org.apache.commons.math3.linear.RealMatrix, double)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>EigenDecomposition</h4>
<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&nbsp;EigenDecomposition(<a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a>&nbsp;matrix,
double&nbsp;splitTolerance)
throws <a href="../../../../../org/apache/commons/math3/exception/MathArithmeticException.html" title="class in org.apache.commons.math3.exception">MathArithmeticException</a></pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;<i>in 3.1 (to be removed in 4.0) due to unused parameter</i></div>
<div class="block">Calculates the eigen decomposition of the given real matrix.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>matrix</code> - Matrix to decompose.</dd><dd><code>splitTolerance</code> - Dummy parameter (present for backward
compatibility only).</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/MathArithmeticException.html" title="class in org.apache.commons.math3.exception">MathArithmeticException</a></code> - if the decomposition of a general matrix
results in a matrix with zero norm</dd>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/MaxCountExceededException.html" title="class in org.apache.commons.math3.exception">MaxCountExceededException</a></code> - if the algorithm fails to converge.</dd></dl>
</li>
</ul>
<a name="EigenDecomposition(double[], double[])">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>EigenDecomposition</h4>
<pre>public&nbsp;EigenDecomposition(double[]&nbsp;main,
double[]&nbsp;secondary)</pre>
<div class="block">Calculates the eigen decomposition of the symmetric tridiagonal
matrix. The Householder matrix is assumed to be the identity matrix.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>main</code> - Main diagonal of the symmetric tridiagonal form.</dd><dd><code>secondary</code> - Secondary of the tridiagonal form.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/MaxCountExceededException.html" title="class in org.apache.commons.math3.exception">MaxCountExceededException</a></code> - if the algorithm fails to converge.</dd><dt><span class="strong">Since:</span></dt>
<dd>3.1</dd></dl>
</li>
</ul>
<a name="EigenDecomposition(double[], double[], double)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>EigenDecomposition</h4>
<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&nbsp;EigenDecomposition(double[]&nbsp;main,
double[]&nbsp;secondary,
double&nbsp;splitTolerance)</pre>
<div class="block"><span class="strong">Deprecated.</span>&nbsp;<i>in 3.1 (to be removed in 4.0) due to unused parameter</i></div>
<div class="block">Calculates the eigen decomposition of the symmetric tridiagonal
matrix. The Householder matrix is assumed to be the identity matrix.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>main</code> - Main diagonal of the symmetric tridiagonal form.</dd><dd><code>secondary</code> - Secondary of the tridiagonal form.</dd><dd><code>splitTolerance</code> - Dummy parameter (present for backward
compatibility only).</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/MaxCountExceededException.html" title="class in org.apache.commons.math3.exception">MaxCountExceededException</a></code> - if the algorithm fails to converge.</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="getV()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getV</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a>&nbsp;getV()</pre>
<div class="block">Gets the matrix V of the decomposition.
V is an orthogonal matrix, i.e. its transpose is also its inverse.
The columns of V are the eigenvectors of the original matrix.
No assumption is made about the orientation of the system axes formed
by the columns of V (e.g. in a 3-dimension space, V can form a left-
or right-handed system).</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the V matrix.</dd></dl>
</li>
</ul>
<a name="getD()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getD</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a>&nbsp;getD()</pre>
<div class="block">Gets the block diagonal matrix D of the decomposition.
D is a block diagonal matrix.
Real eigenvalues are on the diagonal while complex values are on
2x2 blocks { {real +imaginary}, {-imaginary, real} }.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the D matrix.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getRealEigenvalues()"><code>getRealEigenvalues()</code></a>,
<a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getImagEigenvalues()"><code>getImagEigenvalues()</code></a></dd></dl>
</li>
</ul>
<a name="getVT()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getVT</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a>&nbsp;getVT()</pre>
<div class="block">Gets the transpose of the matrix V of the decomposition.
V is an orthogonal matrix, i.e. its transpose is also its inverse.
The columns of V are the eigenvectors of the original matrix.
No assumption is made about the orientation of the system axes formed
by the columns of V (e.g. in a 3-dimension space, V can form a left-
or right-handed system).</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the transpose of the V matrix.</dd></dl>
</li>
</ul>
<a name="hasComplexEigenvalues()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasComplexEigenvalues</h4>
<pre>public&nbsp;boolean&nbsp;hasComplexEigenvalues()</pre>
<div class="block">Returns whether the calculated eigen values are complex or real.
<p>The method performs a zero check for each element of the
<a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getImagEigenvalues()"><code>getImagEigenvalues()</code></a> array and returns <code>true</code> if any
element is not equal to zero.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd><code>true</code> if the eigen values are complex, <code>false</code> otherwise</dd><dt><span class="strong">Since:</span></dt>
<dd>3.1</dd></dl>
</li>
</ul>
<a name="getRealEigenvalues()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRealEigenvalues</h4>
<pre>public&nbsp;double[]&nbsp;getRealEigenvalues()</pre>
<div class="block">Gets a copy of the real parts of the eigenvalues of the original matrix.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>a copy of the real parts of the eigenvalues of the original matrix.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getD()"><code>getD()</code></a>,
<a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getRealEigenvalue(int)"><code>getRealEigenvalue(int)</code></a>,
<a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getImagEigenvalues()"><code>getImagEigenvalues()</code></a></dd></dl>
</li>
</ul>
<a name="getRealEigenvalue(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRealEigenvalue</h4>
<pre>public&nbsp;double&nbsp;getRealEigenvalue(int&nbsp;i)</pre>
<div class="block">Returns the real part of the i<sup>th</sup> eigenvalue of the original
matrix.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>i</code> - index of the eigenvalue (counting from 0)</dd>
<dt><span class="strong">Returns:</span></dt><dd>real part of the i<sup>th</sup> eigenvalue of the original
matrix.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getD()"><code>getD()</code></a>,
<a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getRealEigenvalues()"><code>getRealEigenvalues()</code></a>,
<a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getImagEigenvalue(int)"><code>getImagEigenvalue(int)</code></a></dd></dl>
</li>
</ul>
<a name="getImagEigenvalues()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getImagEigenvalues</h4>
<pre>public&nbsp;double[]&nbsp;getImagEigenvalues()</pre>
<div class="block">Gets a copy of the imaginary parts of the eigenvalues of the original
matrix.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>a copy of the imaginary parts of the eigenvalues of the original
matrix.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getD()"><code>getD()</code></a>,
<a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getImagEigenvalue(int)"><code>getImagEigenvalue(int)</code></a>,
<a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getRealEigenvalues()"><code>getRealEigenvalues()</code></a></dd></dl>
</li>
</ul>
<a name="getImagEigenvalue(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getImagEigenvalue</h4>
<pre>public&nbsp;double&nbsp;getImagEigenvalue(int&nbsp;i)</pre>
<div class="block">Gets the imaginary part of the i<sup>th</sup> eigenvalue of the original
matrix.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>i</code> - Index of the eigenvalue (counting from 0).</dd>
<dt><span class="strong">Returns:</span></dt><dd>the imaginary part of the i<sup>th</sup> eigenvalue of the original
matrix.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getD()"><code>getD()</code></a>,
<a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getImagEigenvalues()"><code>getImagEigenvalues()</code></a>,
<a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getRealEigenvalue(int)"><code>getRealEigenvalue(int)</code></a></dd></dl>
</li>
</ul>
<a name="getEigenvector(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getEigenvector</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/linear/RealVector.html" title="class in org.apache.commons.math3.linear">RealVector</a>&nbsp;getEigenvector(int&nbsp;i)</pre>
<div class="block">Gets a copy of the i<sup>th</sup> eigenvector of the original matrix.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>i</code> - Index of the eigenvector (counting from 0).</dd>
<dt><span class="strong">Returns:</span></dt><dd>a copy of the i<sup>th</sup> eigenvector of the original matrix.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/linear/EigenDecomposition.html#getD()"><code>getD()</code></a></dd></dl>
</li>
</ul>
<a name="getDeterminant()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDeterminant</h4>
<pre>public&nbsp;double&nbsp;getDeterminant()</pre>
<div class="block">Computes the determinant of the matrix.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the determinant of the matrix.</dd></dl>
</li>
</ul>
<a name="getSquareRoot()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSquareRoot</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a>&nbsp;getSquareRoot()</pre>
<div class="block">Computes the square-root of the matrix.
This implementation assumes that the matrix is symmetric and positive
definite.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the square-root of the matrix.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/MathUnsupportedOperationException.html" title="class in org.apache.commons.math3.exception">MathUnsupportedOperationException</a></code> - if the matrix is not
symmetric or not positive definite.</dd><dt><span class="strong">Since:</span></dt>
<dd>3.1</dd></dl>
</li>
</ul>
<a name="getSolver()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getSolver</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/linear/DecompositionSolver.html" title="interface in org.apache.commons.math3.linear">DecompositionSolver</a>&nbsp;getSolver()</pre>
<div class="block">Gets a solver for finding the A &times; X = B solution in exact
linear sense.
<p>
Since 3.1, eigen decomposition of a general matrix is supported,
but the <a href="../../../../../org/apache/commons/math3/linear/DecompositionSolver.html" title="interface in org.apache.commons.math3.linear"><code>DecompositionSolver</code></a> only supports real eigenvalues.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>a solver</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/MathUnsupportedOperationException.html" title="class in org.apache.commons.math3.exception">MathUnsupportedOperationException</a></code> - if the decomposition resulted in
complex eigenvalues</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/EigenDecomposition.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/linear/DiagonalMatrix.html" title="class in org.apache.commons.math3.linear"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/commons/math3/linear/FieldDecompositionSolver.html" title="interface in org.apache.commons.math3.linear"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/commons/math3/linear/EigenDecomposition.html" target="_top">Frames</a></li>
<li><a href="EigenDecomposition.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>