Difference between revisions of "ApCoCoA-1:Num.EigenValuesAndVectors"

From ApCoCoAWiki
(Updated the Doku)
Line 3: Line 3:
 
     <short_description>Computes the eigenvalues and eigenvectors of a matrix</short_description>
 
     <short_description>Computes the eigenvalues and eigenvectors of a matrix</short_description>
 
<syntax>
 
<syntax>
$numerical.EigenValuesAndVectors(A:Matrix):List
+
Num.EigenValuesAndVectors(A:Matrix):[B:Matrix, C:Matrix, D:Matrix]
 
</syntax>
 
</syntax>
 
     <description>
 
     <description>
 
{{ApCoCoAServer}} Please also note that you will have to use an ApCoCoAServer with enabled BLAS/LAPACK support.
 
{{ApCoCoAServer}} Please also note that you will have to use an ApCoCoAServer with enabled BLAS/LAPACK support.
  
This function returns a List of two matrices, containing numerical approximation to A's eigenvalues and (right hand) eigenvectors.  
+
This function returns a list of three matrices, containing numerical approximation to A's eigenvalues and (right hand) eigenvectors.  
Therefore the input matrix A has to be rectangular!
+
The input matrix A has to be a square matrix!
It is implemented in the ApCoCoA server, so you need a running server. It was not implemented in version 0.99.4 or previous. Also please keep in mind this method is based on blas/Lapack's eigenvalue solver and uses floating point arithmetic. This is not an exact, algebraic method!
+
The output [B:Matrix, C:Matrix, D:Matrix] contains a matrix B, where each column contains one of A's eigenvalues. The first row contains the eigenvalue's real part, the second row the imaginary.
The output contains first a matrix B, where each column contains one of A's eigenvalues. The first row contains the eigenvalue's real part, the second the imaginary.
+
The matrices C and B have both the same dimensions as A. Column j of matrix C contains the real part of the eigenvector corresponding to eigenvalue j and column j of matrix D contains the imaginary part of the eigenvector correspsonding to eigenvalue j.
The second element C of the returned list is a matrix of the size of A, containing the (right hand) eigenvectors of A. Column j contains the eigenvector corresponding to eigenvalue j if the imaginary part of j is zero. If eigenvalue j had also an imaginary part, then eigenvalue j+1 is the complex conjugate of j and the eigenvector of j is composed of the real part stored in column j and the imaginary part stored in column j+1 of matrix C. The eigenvector of j+1 is the complex conjugate of eigenvector j.
 
 
To compute only the left hand's eigenvectors apply this method to Transposed(A).
 
To compute only the left hand's eigenvectors apply this method to Transposed(A).
 
<example>
 
<example>
 
A:=Mat([[1,2,7,18],[2,4,9,12],[23,8,9,10],[7,5,3,2]]);  
 
A:=Mat([[1,2,7,18],[2,4,9,12],[23,8,9,10],[7,5,3,2]]);  
Numerical.EigenValuesAndVectors(A);  
+
Dec(Num.EigenValuesAndVectors(A),3);  
-- CoCoAServer: computing Cpu Time = 0.0038
+
 
 +
-- CoCoAServer: computing Cpu Time = 0.016
 
-------------------------------
 
-------------------------------
 
[Mat([
 
[Mat([
   [4077234895954899/140737488355328, -3850002255576291/281474976710656, 3186113456591853/9007199254740992, 3186113456591853/9007199254740992],
+
   ["28.970", "-13.677", "0.353", "0.353"],
   [0, 0, 6871934657603045/2251799813685248, -6871934657603045/2251799813685248]
+
   ["0", "0", "3.051", "-3.051"]
 
]), Mat([
 
]), Mat([
   [1777559794020963/4503599627370496, 5241040126502889/9007199254740992, -4553859282588877/144115188075855872, 4695168387448585/18014398509481984],
+
   ["0.394", "-0.581", "0.260", "0.260"],
   [7846388397589841/18014398509481984, 3981313256671163/9007199254740992, -5438845171485265/18014398509481984, -4930385173711607/9007199254740992],
+
   ["0.435", "-0.442", "-0.547", "-0.547"],
   [6875189208942329/9007199254740992, -5600762787593733/9007199254740992, 11970674168303/17592186044416, 0],
+
  ["0.763", "0.621", "0", "0"],
   [2414763704612135/9007199254740992, -5076115741924331/18014398509481984, -2469130937097749/9007199254740992, 3322230315885151/72057594037927936]
+
  ["0.268", "0.281", "0.046", "0.046"]
 +
]), Mat([
 +
   ["0", "0", "-0.031", "0.031"],
 +
  ["0", "0", "-0.301", "0.301"],
 +
   ["0", "0", "0.680", "-0.680"],
 +
  ["0", "0", "-0.274", "0.274"]
 
])]
 
])]
-------------------------------
+
--------------------------------------------------------------
 
</example>
 
</example>
 
     </description>
 
     </description>
Line 41: Line 46:
 
       <type>cocoaserver</type>
 
       <type>cocoaserver</type>
 
     </types>
 
     </types>
     <key>heldt</key>
+
     <key>Num.EigenValuesAndVectors</key>
     <key>numerical.eigenvaluesandvectors</key>
+
     <key>EigenValuesAndVectors</key>
 
     <wiki-category>Package_Numerical</wiki-category>
 
     <wiki-category>Package_Numerical</wiki-category>
 
   </command>
 
   </command>

Revision as of 13:33, 30 March 2009

Numerical.EigenValuesAndVectors

Computes the eigenvalues and eigenvectors of a matrix

Syntax

Num.EigenValuesAndVectors(A:Matrix):[B:Matrix, C:Matrix, D:Matrix]

Description

Please note: The function(s) explained on this page is/are using the ApCoCoAServer. You will have to start the ApCoCoAServer in order to use

it/them. Please also note that you will have to use an ApCoCoAServer with enabled BLAS/LAPACK support.

This function returns a list of three matrices, containing numerical approximation to A's eigenvalues and (right hand) eigenvectors.

The input matrix A has to be a square matrix!

The output [B:Matrix, C:Matrix, D:Matrix] contains a matrix B, where each column contains one of A's eigenvalues. The first row contains the eigenvalue's real part, the second row the imaginary. The matrices C and B have both the same dimensions as A. Column j of matrix C contains the real part of the eigenvector corresponding to eigenvalue j and column j of matrix D contains the imaginary part of the eigenvector correspsonding to eigenvalue j. To compute only the left hand's eigenvectors apply this method to Transposed(A).

Example

A:=Mat([[1,2,7,18],[2,4,9,12],[23,8,9,10],[7,5,3,2]]); 
Dec(Num.EigenValuesAndVectors(A),3); 

-- CoCoAServer: computing Cpu Time = 0.016
-------------------------------
[Mat([
  ["28.970", "-13.677", "0.353", "0.353"],
  ["0", "0", "3.051", "-3.051"]
]), Mat([
  ["0.394", "-0.581", "0.260", "0.260"],
  ["0.435", "-0.442", "-0.547", "-0.547"],
  ["0.763", "0.621", "0", "0"],
  ["0.268", "0.281", "0.046", "0.046"]
]), Mat([
  ["0", "0", "-0.031", "0.031"],
  ["0", "0", "-0.301", "0.301"],
  ["0", "0", "0.680", "-0.680"],
  ["0", "0", "-0.274", "0.274"]
])]
--------------------------------------------------------------

See also

Introduction to CoCoAServer

Numerical.QR

Numerical.SVD

Numerical.EigenValues

Numerical.EigenValuesAndAllVectors