<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.5"/> <title>Eigen: GeneralizedEigenSolver< _MatrixType > Class Template Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="navtree.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="resize.js"></script> <script type="text/javascript" src="navtree.js"></script> <script type="text/javascript"> $(document).ready(initResizable); $(window).load(resizeHeight); </script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/search.js"></script> <script type="text/javascript"> $(document).ready(function() { searchBox.OnSelectItem(0); }); </script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="eigendoxy.css" rel="stylesheet" type="text/css"> <!-- --> <script type="text/javascript" src="eigen_navtree_hacks.js"></script> <!-- <script type="text/javascript"> --> <!-- </script> --> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <!-- <a name="top"></a> --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectlogo"><img alt="Logo" src="Eigen_Silly_Professor_64x64.png"/></td> <td style="padding-left: 0.5em;"> <div id="projectname"><a href="http://eigen.tuxfamily.org">Eigen</a>  <span id="projectnumber">3.2.0</span> </div> </td> <td> <div id="MSearchBox" class="MSearchBoxInactive"> <span class="left"> <img id="MSearchSelect" src="search/mag_sel.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> </span><span class="right"> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.5 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> </div><!-- top --> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> <div id="nav-sync" class="sync"></div> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> $(document).ready(function(){initNavTree('classEigen_1_1GeneralizedEigenSolver.html','');}); </script> <div id="doc-content"> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Pages</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div class="header"> <div class="summary"> <a href="classEigen_1_1GeneralizedEigenSolver-members.html">List of all members</a> | <a href="#pub-types">Public Types</a> | <a href="#pub-methods">Public Member Functions</a> </div> <div class="headertitle"> <div class="title">GeneralizedEigenSolver< _MatrixType > Class Template Reference<div class="ingroups"><a class="el" href="group__Eigenvalues__Module.html">Eigenvalues module</a></div></div> </div> </div><!--header--> <div class="contents"> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><h3>template<typename _MatrixType><br/> class Eigen::GeneralizedEigenSolver< _MatrixType ></h3> <p>Computes the generalized eigenvalues and eigenvectors of a pair of general matrices. </p> <p>This is defined in the Eigenvalues module.</p> <div class="fragment"><div class="line"><span class="preprocessor">#include <Eigen/Eigenvalues></span> </div> </div><!-- fragment --><dl class="tparams"><dt>Template Parameters</dt><dd> <table class="tparams"> <tr><td class="paramname">_MatrixType</td><td>the type of the matrices of which we are computing the eigen-decomposition; this is expected to be an instantiation of the <a class="el" href="classEigen_1_1Matrix.html" title="The matrix class, also used for vectors and row-vectors. ">Matrix</a> class template. Currently, only real matrices are supported.</td></tr> </table> </dd> </dl> <p>The generalized eigenvalues and eigenvectors of a matrix pair <img class="formulaInl" alt="$ A $" src="form_1.png"/> and <img class="formulaInl" alt="$ B $" src="form_56.png"/> are scalars <img class="formulaInl" alt="$ \lambda $" src="form_38.png"/> and vectors <img class="formulaInl" alt="$ v $" src="form_13.png"/> such that <img class="formulaInl" alt="$ Av = \lambda Bv $" src="form_57.png"/>. If <img class="formulaInl" alt="$ D $" src="form_10.png"/> is a diagonal matrix with the eigenvalues on the diagonal, and <img class="formulaInl" alt="$ V $" src="form_40.png"/> is a matrix with the eigenvectors as its columns, then <img class="formulaInl" alt="$ A V = B V D $" src="form_58.png"/>. The matrix <img class="formulaInl" alt="$ V $" src="form_40.png"/> is almost always invertible, in which case we have <img class="formulaInl" alt="$ A = B V D V^{-1} $" src="form_59.png"/>. This is called the generalized eigen-decomposition.</p> <p>The generalized eigenvalues and eigenvectors of a matrix pair may be complex, even when the matrices are real. Moreover, the generalized eigenvalue might be infinite if the matrix B is singular. To workaround this difficulty, the eigenvalues are provided as a pair of complex <img class="formulaInl" alt="$ \alpha $" src="form_60.png"/> and real <img class="formulaInl" alt="$ \beta $" src="form_61.png"/> such that: <img class="formulaInl" alt="$ \lambda_i = \alpha_i / \beta_i $" src="form_62.png"/>. If <img class="formulaInl" alt="$ \beta_i $" src="form_63.png"/> is (nearly) zero, then one can consider the well defined left eigenvalue <img class="formulaInl" alt="$ \mu = \beta_i / \alpha_i$" src="form_64.png"/> such that: <img class="formulaInl" alt="$ \mu_i A v_i = B v_i $" src="form_65.png"/>, or even <img class="formulaInl" alt="$ \mu_i u_i^T A = u_i^T B $" src="form_66.png"/> where <img class="formulaInl" alt="$ u_i $" src="form_67.png"/> is called the left eigenvector.</p> <p>Call the function <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a64e32bd0f28bb7b6e91775c3ac592e12" title="Computes generalized eigendecomposition of given matrix. ">compute()</a> to compute the generalized eigenvalues and eigenvectors of a given matrix pair. Alternatively, you can use the <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aa0f561be93f959404ee232321b389468" title="Constructor; computes the generalized eigendecomposition of given matrix pair. ">GeneralizedEigenSolver(const MatrixType&, const MatrixType&, bool)</a> constructor which computes the eigenvalues and eigenvectors at construction time. Once the eigenvalue and eigenvectors are computed, they can be retrieved with the <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#acffd08bee548eaa5c10414343a93529f" title="Returns an expression of the computed generalized eigenvalues. ">eigenvalues()</a> and eigenvectors() functions.</p> <p>Here is an usage example of this class: Example: </p> <div class="fragment"><div class="line">GeneralizedEigenSolver<MatrixXf> ges;</div> <div class="line"><a class="code" href="group__matrixtypedefs.html#gabab09c32e96cfa9829a88400627af162">MatrixXf</a> A = <a class="code" href="classEigen_1_1DenseBase.html#a8e759dafdd9ecc446d397b7f5435f60a">MatrixXf::Random</a>(4,4);</div> <div class="line"><a class="code" href="group__matrixtypedefs.html#gabab09c32e96cfa9829a88400627af162">MatrixXf</a> B = <a class="code" href="classEigen_1_1DenseBase.html#a8e759dafdd9ecc446d397b7f5435f60a">MatrixXf::Random</a>(4,4);</div> <div class="line">ges.compute(A, B);</div> <div class="line">cout << <span class="stringliteral">"The (complex) numerators of the generalzied eigenvalues are: "</span> << ges.alphas().transpose() << endl;</div> <div class="line">cout << <span class="stringliteral">"The (real) denominatore of the generalzied eigenvalues are: "</span> << ges.betas().transpose() << endl;</div> <div class="line">cout << <span class="stringliteral">"The (complex) generalzied eigenvalues are (alphas./beta): "</span> << ges.eigenvalues().transpose() << endl;</div> </div><!-- fragment --><p> Output: </p> <pre class="fragment">The (complex) numerators of the generalzied eigenvalues are: (0.644,0.795) (0.644,-0.795) (-0.398,0) (-1.12,0) The (real) denominatore of the generalzied eigenvalues are: 1.51 1.51 -1.25 0.746 The (complex) generalzied eigenvalues are (alphas./beta): (0.427,0.528) (0.427,-0.528) (0.318,-0) (-1.5,0) </pre><dl class="section see"><dt>See Also</dt><dd><a class="el" href="classEigen_1_1MatrixBase.html#a0ffa061371b1bd1b9f14ecef94b4502e" title="Computes the eigenvalues of a matrix. ">MatrixBase::eigenvalues()</a>, class <a class="el" href="classEigen_1_1ComplexEigenSolver.html" title="Computes eigenvalues and eigenvectors of general complex matrices. ">ComplexEigenSolver</a>, class <a class="el" href="classEigen_1_1SelfAdjointEigenSolver.html" title="Computes eigenvalues and eigenvectors of selfadjoint matrices. ">SelfAdjointEigenSolver</a> </dd></dl> </div><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a> Public Types</h2></td></tr> <tr class="memitem:a1b9bc0a45616064df3a6168395e3cfcc"><td class="memItemLeft" align="right" valign="top">typedef std::complex< RealScalar > </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a1b9bc0a45616064df3a6168395e3cfcc">ComplexScalar</a></td></tr> <tr class="memdesc:a1b9bc0a45616064df3a6168395e3cfcc"><td class="mdescLeft"> </td><td class="mdescRight">Complex scalar type for <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aeb6c0eb89cc982629305f6c7e0791caf" title="Synonym for the template parameter _MatrixType. ">MatrixType</a>. <a href="#a1b9bc0a45616064df3a6168395e3cfcc">More...</a><br/></td></tr> <tr class="separator:a1b9bc0a45616064df3a6168395e3cfcc"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a12de5e55557c63e5efaa70c3d4e82060"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classEigen_1_1Matrix.html">Matrix</a>< <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a1b9bc0a45616064df3a6168395e3cfcc">ComplexScalar</a>, <br class="typebreak"/> ColsAtCompileTime, 1, Options <br class="typebreak"/> &~<a class="el" href="group__enums.html#gga0c5bde183ecefe103f70b49ad9740bcda1e16fa1b92ed7a058cd4ce7a9a0db044">RowMajor</a>, <br class="typebreak"/> MaxColsAtCompileTime, 1 > </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a12de5e55557c63e5efaa70c3d4e82060">ComplexVectorType</a></td></tr> <tr class="memdesc:a12de5e55557c63e5efaa70c3d4e82060"><td class="mdescLeft"> </td><td class="mdescRight">Type for vector of complex scalar values eigenvalues as returned by <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a92c089793f883fd38cd2df4d7c6513e5">betas()</a>. <a href="#a12de5e55557c63e5efaa70c3d4e82060">More...</a><br/></td></tr> <tr class="separator:a12de5e55557c63e5efaa70c3d4e82060"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a14f2d5bf9df5a70ea27bc1239aa30822"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a14f2d5bf9df5a70ea27bc1239aa30822"></a> typedef <a class="el" href="classEigen_1_1CwiseBinaryOp.html">CwiseBinaryOp</a><br class="typebreak"/> < internal::scalar_quotient_op<br class="typebreak"/> < <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a1b9bc0a45616064df3a6168395e3cfcc">ComplexScalar</a>, <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a3f6fc00047c205ee590f676934aab28f">Scalar</a> ><br class="typebreak"/> , <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a12de5e55557c63e5efaa70c3d4e82060">ComplexVectorType</a>, <br class="typebreak"/> <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#ae88654b9613217486067f07e394c88dc">VectorType</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a14f2d5bf9df5a70ea27bc1239aa30822">EigenvalueType</a></td></tr> <tr class="memdesc:a14f2d5bf9df5a70ea27bc1239aa30822"><td class="mdescLeft"> </td><td class="mdescRight">Expression type for the eigenvalues as returned by <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#acffd08bee548eaa5c10414343a93529f" title="Returns an expression of the computed generalized eigenvalues. ">eigenvalues()</a>. <br/></td></tr> <tr class="separator:a14f2d5bf9df5a70ea27bc1239aa30822"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a50d070013a795db5621119f2b4a3d781"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classEigen_1_1Matrix.html">Matrix</a>< <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a1b9bc0a45616064df3a6168395e3cfcc">ComplexScalar</a>, <br class="typebreak"/> RowsAtCompileTime, <br class="typebreak"/> ColsAtCompileTime, Options, <br class="typebreak"/> MaxRowsAtCompileTime, <br class="typebreak"/> MaxColsAtCompileTime > </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a50d070013a795db5621119f2b4a3d781">EigenvectorsType</a></td></tr> <tr class="memdesc:a50d070013a795db5621119f2b4a3d781"><td class="mdescLeft"> </td><td class="mdescRight">Type for matrix of eigenvectors as returned by eigenvectors(). <a href="#a50d070013a795db5621119f2b4a3d781">More...</a><br/></td></tr> <tr class="separator:a50d070013a795db5621119f2b4a3d781"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aeb6c0eb89cc982629305f6c7e0791caf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeb6c0eb89cc982629305f6c7e0791caf"></a> typedef _MatrixType </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aeb6c0eb89cc982629305f6c7e0791caf">MatrixType</a></td></tr> <tr class="memdesc:aeb6c0eb89cc982629305f6c7e0791caf"><td class="mdescLeft"> </td><td class="mdescRight">Synonym for the template parameter <code>_MatrixType</code>. <br/></td></tr> <tr class="separator:aeb6c0eb89cc982629305f6c7e0791caf"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3f6fc00047c205ee590f676934aab28f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f6fc00047c205ee590f676934aab28f"></a> typedef MatrixType::Scalar </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a3f6fc00047c205ee590f676934aab28f">Scalar</a></td></tr> <tr class="memdesc:a3f6fc00047c205ee590f676934aab28f"><td class="mdescLeft"> </td><td class="mdescRight">Scalar type for matrices of type <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aeb6c0eb89cc982629305f6c7e0791caf" title="Synonym for the template parameter _MatrixType. ">MatrixType</a>. <br/></td></tr> <tr class="separator:a3f6fc00047c205ee590f676934aab28f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae88654b9613217486067f07e394c88dc"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classEigen_1_1Matrix.html">Matrix</a>< <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a3f6fc00047c205ee590f676934aab28f">Scalar</a>, <br class="typebreak"/> ColsAtCompileTime, 1, Options <br class="typebreak"/> &~<a class="el" href="group__enums.html#gga0c5bde183ecefe103f70b49ad9740bcda1e16fa1b92ed7a058cd4ce7a9a0db044">RowMajor</a>, <br class="typebreak"/> MaxColsAtCompileTime, 1 > </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#ae88654b9613217486067f07e394c88dc">VectorType</a></td></tr> <tr class="memdesc:ae88654b9613217486067f07e394c88dc"><td class="mdescLeft"> </td><td class="mdescRight">Type for vector of real scalar values eigenvalues as returned by <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a92c089793f883fd38cd2df4d7c6513e5">betas()</a>. <a href="#ae88654b9613217486067f07e394c88dc">More...</a><br/></td></tr> <tr class="separator:ae88654b9613217486067f07e394c88dc"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr class="memitem:ade79c282ebff0a23829fd9b9b18fe1c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a12de5e55557c63e5efaa70c3d4e82060">ComplexVectorType</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#ade79c282ebff0a23829fd9b9b18fe1c0">alphas</a> () const </td></tr> <tr class="separator:ade79c282ebff0a23829fd9b9b18fe1c0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a92c089793f883fd38cd2df4d7c6513e5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#ae88654b9613217486067f07e394c88dc">VectorType</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a92c089793f883fd38cd2df4d7c6513e5">betas</a> () const </td></tr> <tr class="separator:a92c089793f883fd38cd2df4d7c6513e5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a64e32bd0f28bb7b6e91775c3ac592e12"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html">GeneralizedEigenSolver</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a64e32bd0f28bb7b6e91775c3ac592e12">compute</a> (const <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aeb6c0eb89cc982629305f6c7e0791caf">MatrixType</a> &A, const <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aeb6c0eb89cc982629305f6c7e0791caf">MatrixType</a> &B, bool computeEigenvectors=true)</td></tr> <tr class="memdesc:a64e32bd0f28bb7b6e91775c3ac592e12"><td class="mdescLeft"> </td><td class="mdescRight">Computes generalized eigendecomposition of given matrix. <a href="#a64e32bd0f28bb7b6e91775c3ac592e12">More...</a><br/></td></tr> <tr class="separator:a64e32bd0f28bb7b6e91775c3ac592e12"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:acffd08bee548eaa5c10414343a93529f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a14f2d5bf9df5a70ea27bc1239aa30822">EigenvalueType</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#acffd08bee548eaa5c10414343a93529f">eigenvalues</a> () const </td></tr> <tr class="memdesc:acffd08bee548eaa5c10414343a93529f"><td class="mdescLeft"> </td><td class="mdescRight">Returns an expression of the computed generalized eigenvalues. <a href="#acffd08bee548eaa5c10414343a93529f">More...</a><br/></td></tr> <tr class="separator:acffd08bee548eaa5c10414343a93529f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7289bdfc65bb36b51babcab21a1a9c14"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a7289bdfc65bb36b51babcab21a1a9c14">GeneralizedEigenSolver</a> ()</td></tr> <tr class="memdesc:a7289bdfc65bb36b51babcab21a1a9c14"><td class="mdescLeft"> </td><td class="mdescRight">Default constructor. <a href="#a7289bdfc65bb36b51babcab21a1a9c14">More...</a><br/></td></tr> <tr class="separator:a7289bdfc65bb36b51babcab21a1a9c14"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad454c37be646409992625586d2b21adb"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#ad454c37be646409992625586d2b21adb">GeneralizedEigenSolver</a> (Index size)</td></tr> <tr class="memdesc:ad454c37be646409992625586d2b21adb"><td class="mdescLeft"> </td><td class="mdescRight">Default constructor with memory preallocation. <a href="#ad454c37be646409992625586d2b21adb">More...</a><br/></td></tr> <tr class="separator:ad454c37be646409992625586d2b21adb"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa0f561be93f959404ee232321b389468"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aa0f561be93f959404ee232321b389468">GeneralizedEigenSolver</a> (const <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aeb6c0eb89cc982629305f6c7e0791caf">MatrixType</a> &A, const <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aeb6c0eb89cc982629305f6c7e0791caf">MatrixType</a> &B, bool computeEigenvectors=true)</td></tr> <tr class="memdesc:aa0f561be93f959404ee232321b389468"><td class="mdescLeft"> </td><td class="mdescRight">Constructor; computes the generalized eigendecomposition of given matrix pair. <a href="#aa0f561be93f959404ee232321b389468">More...</a><br/></td></tr> <tr class="separator:aa0f561be93f959404ee232321b389468"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af6db2eac907628bd50de67a4ede88a5a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html">GeneralizedEigenSolver</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#af6db2eac907628bd50de67a4ede88a5a">setMaxIterations</a> (Index maxIters)</td></tr> <tr class="separator:af6db2eac907628bd50de67a4ede88a5a"><td class="memSeparator" colspan="2"> </td></tr> </table> <h2 class="groupheader">Member Typedef Documentation</h2> <a class="anchor" id="a1b9bc0a45616064df3a6168395e3cfcc"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef std::complex<RealScalar> <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a1b9bc0a45616064df3a6168395e3cfcc">ComplexScalar</a></td> </tr> </table> </div><div class="memdoc"> <p>Complex scalar type for <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aeb6c0eb89cc982629305f6c7e0791caf" title="Synonym for the template parameter _MatrixType. ">MatrixType</a>. </p> <p>This is <code>std::complex<Scalar></code> if <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a3f6fc00047c205ee590f676934aab28f" title="Scalar type for matrices of type MatrixType. ">Scalar</a> is real (e.g., <code>float</code> or <code>double</code>) and just <code>Scalar</code> if <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a3f6fc00047c205ee590f676934aab28f" title="Scalar type for matrices of type MatrixType. ">Scalar</a> is complex. </p> </div> </div> <a class="anchor" id="a12de5e55557c63e5efaa70c3d4e82060"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef <a class="el" href="classEigen_1_1Matrix.html">Matrix</a><<a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a1b9bc0a45616064df3a6168395e3cfcc">ComplexScalar</a>, ColsAtCompileTime, 1, Options & ~<a class="el" href="group__enums.html#gga0c5bde183ecefe103f70b49ad9740bcda1e16fa1b92ed7a058cd4ce7a9a0db044">RowMajor</a>, MaxColsAtCompileTime, 1> <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a12de5e55557c63e5efaa70c3d4e82060">ComplexVectorType</a></td> </tr> </table> </div><div class="memdoc"> <p>Type for vector of complex scalar values eigenvalues as returned by <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a92c089793f883fd38cd2df4d7c6513e5">betas()</a>. </p> <p>This is a column vector with entries of type <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a1b9bc0a45616064df3a6168395e3cfcc" title="Complex scalar type for MatrixType. ">ComplexScalar</a>. The length of the vector is the size of <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aeb6c0eb89cc982629305f6c7e0791caf" title="Synonym for the template parameter _MatrixType. ">MatrixType</a>. </p> </div> </div> <a class="anchor" id="a50d070013a795db5621119f2b4a3d781"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef <a class="el" href="classEigen_1_1Matrix.html">Matrix</a><<a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a1b9bc0a45616064df3a6168395e3cfcc">ComplexScalar</a>, RowsAtCompileTime, ColsAtCompileTime, Options, MaxRowsAtCompileTime, MaxColsAtCompileTime> <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a50d070013a795db5621119f2b4a3d781">EigenvectorsType</a></td> </tr> </table> </div><div class="memdoc"> <p>Type for matrix of eigenvectors as returned by eigenvectors(). </p> <p>This is a square matrix with entries of type <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a1b9bc0a45616064df3a6168395e3cfcc" title="Complex scalar type for MatrixType. ">ComplexScalar</a>. The size is the same as the size of <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aeb6c0eb89cc982629305f6c7e0791caf" title="Synonym for the template parameter _MatrixType. ">MatrixType</a>. </p> </div> </div> <a class="anchor" id="ae88654b9613217486067f07e394c88dc"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef <a class="el" href="classEigen_1_1Matrix.html">Matrix</a><<a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a3f6fc00047c205ee590f676934aab28f">Scalar</a>, ColsAtCompileTime, 1, Options & ~<a class="el" href="group__enums.html#gga0c5bde183ecefe103f70b49ad9740bcda1e16fa1b92ed7a058cd4ce7a9a0db044">RowMajor</a>, MaxColsAtCompileTime, 1> <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#ae88654b9613217486067f07e394c88dc">VectorType</a></td> </tr> </table> </div><div class="memdoc"> <p>Type for vector of real scalar values eigenvalues as returned by <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a92c089793f883fd38cd2df4d7c6513e5">betas()</a>. </p> <p>This is a column vector with entries of type <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a3f6fc00047c205ee590f676934aab28f" title="Scalar type for matrices of type MatrixType. ">Scalar</a>. The length of the vector is the size of <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aeb6c0eb89cc982629305f6c7e0791caf" title="Synonym for the template parameter _MatrixType. ">MatrixType</a>. </p> </div> </div> <h2 class="groupheader">Constructor & Destructor Documentation</h2> <a class="anchor" id="a7289bdfc65bb36b51babcab21a1a9c14"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html">GeneralizedEigenSolver</a> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Default constructor. </p> <p>The default constructor is useful in cases in which the user intends to perform decompositions via <a class="el" href="classEigen_1_1EigenSolver.html#a0e257dae8f1774fdda178482caa65be8" title="Computes eigendecomposition of given matrix. ">EigenSolver::compute(const MatrixType&, bool)</a>.</p> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a64e32bd0f28bb7b6e91775c3ac592e12" title="Computes generalized eigendecomposition of given matrix. ">compute()</a> for an example. </dd></dl> </div> </div> <a class="anchor" id="ad454c37be646409992625586d2b21adb"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html">GeneralizedEigenSolver</a> </td> <td>(</td> <td class="paramtype">Index </td> <td class="paramname"><em>size</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Default constructor with memory preallocation. </p> <p>Like the default constructor but with preallocation of the internal data according to the specified problem <em>size</em>. </p> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a7289bdfc65bb36b51babcab21a1a9c14" title="Default constructor. ">GeneralizedEigenSolver()</a> </dd></dl> </div> </div> <a class="anchor" id="aa0f561be93f959404ee232321b389468"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html">GeneralizedEigenSolver</a> </td> <td>(</td> <td class="paramtype">const <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aeb6c0eb89cc982629305f6c7e0791caf">MatrixType</a> & </td> <td class="paramname"><em>A</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aeb6c0eb89cc982629305f6c7e0791caf">MatrixType</a> & </td> <td class="paramname"><em>B</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"><em>computeEigenvectors</em> = <code>true</code> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Constructor; computes the generalized eigendecomposition of given matrix pair. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>Square matrix whose eigendecomposition is to be computed. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">B</td><td>Square matrix whose eigendecomposition is to be computed. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">computeEigenvectors</td><td>If true, both the eigenvectors and the eigenvalues are computed; if false, only the eigenvalues are computed.</td></tr> </table> </dd> </dl> <p>This constructor calls <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a64e32bd0f28bb7b6e91775c3ac592e12" title="Computes generalized eigendecomposition of given matrix. ">compute()</a> to compute the generalized eigenvalues and eigenvectors.</p> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a64e32bd0f28bb7b6e91775c3ac592e12" title="Computes generalized eigendecomposition of given matrix. ">compute()</a> </dd></dl> <p>References <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a64e32bd0f28bb7b6e91775c3ac592e12">GeneralizedEigenSolver< _MatrixType >::compute()</a>.</p> </div> </div> <h2 class="groupheader">Member Function Documentation</h2> <a class="anchor" id="ade79c282ebff0a23829fd9b9b18fe1c0"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a12de5e55557c63e5efaa70c3d4e82060">ComplexVectorType</a> alphas </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <dl class="section return"><dt>Returns</dt><dd>A const reference to the vectors containing the alpha values</dd></dl> <p>This vector permits to reconstruct the j-th eigenvalues as alphas(i)/betas(j).</p> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a92c089793f883fd38cd2df4d7c6513e5">betas()</a>, <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#acffd08bee548eaa5c10414343a93529f" title="Returns an expression of the computed generalized eigenvalues. ">eigenvalues()</a> </dd></dl> </div> </div> <a class="anchor" id="a92c089793f883fd38cd2df4d7c6513e5"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#ae88654b9613217486067f07e394c88dc">VectorType</a> betas </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <dl class="section return"><dt>Returns</dt><dd>A const reference to the vectors containing the beta values</dd></dl> <p>This vector permits to reconstruct the j-th eigenvalues as alphas(i)/betas(j).</p> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#ade79c282ebff0a23829fd9b9b18fe1c0">alphas()</a>, <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#acffd08bee548eaa5c10414343a93529f" title="Returns an expression of the computed generalized eigenvalues. ">eigenvalues()</a> </dd></dl> </div> </div> <a class="anchor" id="a64e32bd0f28bb7b6e91775c3ac592e12"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html">GeneralizedEigenSolver</a>< <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aeb6c0eb89cc982629305f6c7e0791caf">MatrixType</a> > & compute </td> <td>(</td> <td class="paramtype">const <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aeb6c0eb89cc982629305f6c7e0791caf">MatrixType</a> & </td> <td class="paramname"><em>A</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aeb6c0eb89cc982629305f6c7e0791caf">MatrixType</a> & </td> <td class="paramname"><em>B</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"><em>computeEigenvectors</em> = <code>true</code> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Computes generalized eigendecomposition of given matrix. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>Square matrix whose eigendecomposition is to be computed. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">B</td><td>Square matrix whose eigendecomposition is to be computed. </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">computeEigenvectors</td><td>If true, both the eigenvectors and the eigenvalues are computed; if false, only the eigenvalues are computed. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>Reference to <code>*this</code> </dd></dl> <p>This function computes the eigenvalues of the real matrix <code>matrix</code>. The <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#acffd08bee548eaa5c10414343a93529f" title="Returns an expression of the computed generalized eigenvalues. ">eigenvalues()</a> function can be used to retrieve them. If <code>computeEigenvectors</code> is true, then the eigenvectors are also computed and can be retrieved by calling eigenvectors().</p> <p>The matrix is first reduced to real generalized Schur form using the <a class="el" href="classEigen_1_1RealQZ.html" title="Performs a real QZ decomposition of a pair of square matrices. ">RealQZ</a> class. The generalized Schur decomposition is then used to compute the eigenvalues and eigenvectors.</p> <p>The cost of the computation is dominated by the cost of the generalized Schur decomposition.</p> <p>This method reuses of the allocated data in the <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html" title="Computes the generalized eigenvalues and eigenvectors of a pair of general matrices. ">GeneralizedEigenSolver</a> object. </p> <p>References <a class="el" href="group__enums.html#gga51bc1ac16f26ebe51eae1abb77bd037bafdfbdf3247bd36a1f17270d5cec74c9c">Eigen::Success</a>.</p> <p>Referenced by <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aa0f561be93f959404ee232321b389468">GeneralizedEigenSolver< _MatrixType >::GeneralizedEigenSolver()</a>.</p> </div> </div> <a class="anchor" id="acffd08bee548eaa5c10414343a93529f"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a14f2d5bf9df5a70ea27bc1239aa30822">EigenvalueType</a> eigenvalues </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Returns an expression of the computed generalized eigenvalues. </p> <dl class="section return"><dt>Returns</dt><dd>An expression of the column vector containing the eigenvalues.</dd></dl> <p>It is a shortcut for</p> <div class="fragment"><div class="line">this-><a class="code" href="classEigen_1_1GeneralizedEigenSolver.html#ade79c282ebff0a23829fd9b9b18fe1c0">alphas</a>().cwiseQuotient(this-><a class="code" href="classEigen_1_1GeneralizedEigenSolver.html#a92c089793f883fd38cd2df4d7c6513e5">betas</a>()); </div> </div><!-- fragment --><p> Not that betas might contain zeros. It is therefore not recommended to use this function, but rather directly deal with the alphas and betas vectors.</p> <dl class="section pre"><dt>Precondition</dt><dd>Either the constructor <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#aa0f561be93f959404ee232321b389468" title="Constructor; computes the generalized eigendecomposition of given matrix pair. ">GeneralizedEigenSolver(const MatrixType&,const MatrixType&,bool)</a> or the member function <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a64e32bd0f28bb7b6e91775c3ac592e12" title="Computes generalized eigendecomposition of given matrix. ">compute(const MatrixType&,const MatrixType&,bool)</a> has been called before.</dd></dl> <p>The eigenvalues are repeated according to their algebraic multiplicity, so there are as many eigenvalues as rows in the matrix. The eigenvalues are not sorted in any particular order.</p> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#ade79c282ebff0a23829fd9b9b18fe1c0">alphas()</a>, <a class="el" href="classEigen_1_1GeneralizedEigenSolver.html#a92c089793f883fd38cd2df4d7c6513e5">betas()</a>, eigenvectors() </dd></dl> </div> </div> <a class="anchor" id="af6db2eac907628bd50de67a4ede88a5a"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html">GeneralizedEigenSolver</a>& setMaxIterations </td> <td>(</td> <td class="paramtype">Index </td> <td class="paramname"><em>maxIters</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Sets the maximal number of iterations allowed. </p> <p>References <a class="el" href="classEigen_1_1RealQZ.html#a1b369841b0e39a1ac80a6c32b721d242">RealQZ< _MatrixType >::setMaxIterations()</a>.</p> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="GeneralizedEigenSolver_8h_source.html">GeneralizedEigenSolver.h</a></li> </ul> </div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="navelem"><a class="el" href="namespaceEigen.html">Eigen</a></li><li class="navelem"><a class="el" href="classEigen_1_1GeneralizedEigenSolver.html">GeneralizedEigenSolver</a></li> <li class="footer">Generated on Mon Oct 28 2013 11:04:29 for Eigen by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li> </ul> </div> <!-- Piwik --> <!-- <script type="text/javascript"> var pkBaseURL = (("https:" == document.location.protocol) ? "https://stats.sylphide-consulting.com/piwik/" : "http://stats.sylphide-consulting.com/piwik/"); document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E")); </script><script type="text/javascript"> try { var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 20); piwikTracker.trackPageView(); piwikTracker.enableLinkTracking(); } catch( err ) {} </script><noscript><p><img src="http://stats.sylphide-consulting.com/piwik/piwik.php?idsite=20" style="border:0" alt="" /></p></noscript> --> <!-- End Piwik Tracking Code --> </body> </html>