blob: 06d355600ee843945e8696cb395707bceb4b854a [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>
<!-- Generated by javadoc (1.8.0_121) on Fri Apr 14 22:10:59 PDT 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>LanczosSolver (Mahout Math 0.13.0 API)</title>
<meta name="date" content="2017-04-14">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="LanczosSolver (Mahout Math 0.13.0 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":41,"i1":41,"i2":42,"i3":42};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<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/LanczosSolver.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>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../../org/apache/mahout/math/decomposer/lanczos/LanczosSolver.TimingSection.html" title="enum in org.apache.mahout.math.decomposer.lanczos"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/mahout/math/decomposer/lanczos/LanczosSolver.html" target="_top">Frames</a></li>
<li><a href="LanczosSolver.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;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><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&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><a href="#field.detail">Field</a>&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.mahout.math.decomposer.lanczos</div>
<h2 title="Class LanczosSolver" class="title">Class LanczosSolver</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/7/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.mahout.math.decomposer.lanczos.LanczosSolver</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
<br>
<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
public class <span class="typeNameLabel">LanczosSolver</span>
extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">Simple implementation of the <a href="http://en.wikipedia.org/wiki/Lanczos_algorithm">Lanczos algorithm</a> for
finding eigenvalues of a symmetric matrix, applied to non-symmetric matrices by applying Matrix.timesSquared(vector)
as the "matrix-multiplication" method.<p>
See the SSVD code for a better option
<a href="../../../../../../org/apache/mahout/math/ssvd/SequentialBigSvd.html" title="class in org.apache.mahout.math.ssvd"><code>SequentialBigSvd</code></a>
See also the docs on
<a href=https://mahout.apache.org/users/dim-reduction/ssvd.html>stochastic
projection SVD</a>
<p>
To avoid floating point overflow problems which arise in power-methods like Lanczos, an initial pass is made
through the input matrix to
<ul>
<li>generate a good starting seed vector by summing all the rows of the input matrix, and</li>
<li>compute the trace(inputMatrix<sup>t</sup>*matrix)
</ul>
<p>
This latter value, being the sum of all of the singular values, is used to rescale the entire matrix, effectively
forcing the largest singular value to be strictly less than one, and transforming floating point <em>overflow</em>
problems into floating point <em>underflow</em> (ie, very small singular values will become invisible, as they
will appear to be zero and the algorithm will terminate).
<p>This implementation uses <a href="../../../../../../org/apache/mahout/math/solver/EigenDecomposition.html" title="class in org.apache.mahout.math.solver"><code>EigenDecomposition</code></a> to do the
eigenvalue extraction from the small (desiredRank x desiredRank) tridiagonal matrix. Numerical stability is
achieved via brute-force: re-orthogonalization against all previous eigenvectors is computed after every pass.
This can be made smarter if (when!) this proves to be a major bottleneck. Of course, this step can be parallelized
as well.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../org/apache/mahout/math/ssvd/SequentialBigSvd.html" title="class in org.apache.mahout.math.ssvd"><code>SequentialBigSvd</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/mahout/math/decomposer/lanczos/LanczosSolver.TimingSection.html" title="enum in org.apache.mahout.math.decomposer.lanczos">LanczosSolver.TimingSection</a></span></code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static double</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/mahout/math/decomposer/lanczos/LanczosSolver.html#SAFE_MAX">SAFE_MAX</a></span></code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" 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><span class="memberNameLink"><a href="../../../../../../org/apache/mahout/math/decomposer/lanczos/LanczosSolver.html#LanczosSolver--">LanczosSolver</a></span>()</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected static double</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/mahout/math/decomposer/lanczos/LanczosSolver.html#calculateScaleFactor-org.apache.mahout.math.Vector-">calculateScaleFactor</a></span>(<a href="../../../../../../org/apache/mahout/math/Vector.html" title="interface in org.apache.mahout.math">Vector</a>&nbsp;nextVector)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/mahout/math/decomposer/lanczos/LanczosSolver.html#orthoganalizeAgainstAllButLast-org.apache.mahout.math.Vector-org.apache.mahout.math.decomposer.lanczos.LanczosState-">orthoganalizeAgainstAllButLast</a></span>(<a href="../../../../../../org/apache/mahout/math/Vector.html" title="interface in org.apache.mahout.math">Vector</a>&nbsp;nextVector,
<a href="../../../../../../org/apache/mahout/math/decomposer/lanczos/LanczosState.html" title="class in org.apache.mahout.math.decomposer.lanczos">LanczosState</a>&nbsp;state)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/mahout/math/decomposer/lanczos/LanczosSolver.html#solve-org.apache.mahout.math.decomposer.lanczos.LanczosState-int-">solve</a></span>(<a href="../../../../../../org/apache/mahout/math/decomposer/lanczos/LanczosState.html" title="class in org.apache.mahout.math.decomposer.lanczos">LanczosState</a>&nbsp;state,
int&nbsp;desiredRank)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/mahout/math/decomposer/lanczos/LanczosSolver.html#solve-org.apache.mahout.math.decomposer.lanczos.LanczosState-int-boolean-">solve</a></span>(<a href="../../../../../../org/apache/mahout/math/decomposer/lanczos/LanczosState.html" title="class in org.apache.mahout.math.decomposer.lanczos">LanczosState</a>&nbsp;state,
int&nbsp;desiredRank,
boolean&nbsp;isSymmetric)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
&nbsp;</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/7/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/7/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/7/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/7/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/7/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/7/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/7/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/7/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/7/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/7/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/7/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/7/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">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="SAFE_MAX">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SAFE_MAX</h4>
<pre>public static final&nbsp;double SAFE_MAX</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.mahout.math.decomposer.lanczos.LanczosSolver.SAFE_MAX">Constant Field Values</a></dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="LanczosSolver--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>LanczosSolver</h4>
<pre>public&nbsp;LanczosSolver()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="solve-org.apache.mahout.math.decomposer.lanczos.LanczosState-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>solve</h4>
<pre>public&nbsp;void&nbsp;solve(<a href="../../../../../../org/apache/mahout/math/decomposer/lanczos/LanczosState.html" title="class in org.apache.mahout.math.decomposer.lanczos">LanczosState</a>&nbsp;state,
int&nbsp;desiredRank)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
</li>
</ul>
<a name="solve-org.apache.mahout.math.decomposer.lanczos.LanczosState-int-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>solve</h4>
<pre>public&nbsp;void&nbsp;solve(<a href="../../../../../../org/apache/mahout/math/decomposer/lanczos/LanczosState.html" title="class in org.apache.mahout.math.decomposer.lanczos">LanczosState</a>&nbsp;state,
int&nbsp;desiredRank,
boolean&nbsp;isSymmetric)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
</li>
</ul>
<a name="calculateScaleFactor-org.apache.mahout.math.Vector-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>calculateScaleFactor</h4>
<pre>protected static&nbsp;double&nbsp;calculateScaleFactor(<a href="../../../../../../org/apache/mahout/math/Vector.html" title="interface in org.apache.mahout.math">Vector</a>&nbsp;nextVector)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
</li>
</ul>
<a name="orthoganalizeAgainstAllButLast-org.apache.mahout.math.Vector-org.apache.mahout.math.decomposer.lanczos.LanczosState-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>orthoganalizeAgainstAllButLast</h4>
<pre>protected static&nbsp;void&nbsp;orthoganalizeAgainstAllButLast(<a href="../../../../../../org/apache/mahout/math/Vector.html" title="interface in org.apache.mahout.math">Vector</a>&nbsp;nextVector,
<a href="../../../../../../org/apache/mahout/math/decomposer/lanczos/LanczosState.html" title="class in org.apache.mahout.math.decomposer.lanczos">LanczosState</a>&nbsp;state)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<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/LanczosSolver.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>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../../org/apache/mahout/math/decomposer/lanczos/LanczosSolver.TimingSection.html" title="enum in org.apache.mahout.math.decomposer.lanczos"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/mahout/math/decomposer/lanczos/LanczosSolver.html" target="_top">Frames</a></li>
<li><a href="LanczosSolver.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;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><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&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><a href="#field.detail">Field</a>&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; 2008&#x2013;2017 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>