Re: "large" matrices, Eigenvalues, determinants, characteristic polynomials
- To: mathgroup at smc.vnet.net
- Subject: [mg56489] Re: "large" matrices, Eigenvalues, determinants, characteristic polynomials
- From: "Jens-Peer Kuska" <kuska at informatik.uni-leipzig.de>
- Date: Tue, 26 Apr 2005 21:52:49 -0400 (EDT)
- Organization: Uni Leipzig
- References: <d4kktj$ed3$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi, you know that all determinat calculations are very sensitive against rounding errors ? This become more and more critical when the size of the matrix increase. The main task of all eigensystem-solvers is to avoid the computation of the determinant of of the characteristic polynomial. So you should try to increase the precision of your input data. Regards Jens "Grischa Stegemann" <grix7-usenet at yahoo.de> schrieb im Newsbeitrag news:d4kktj$ed3$1 at smc.vnet.net... > Dear group > > What is the difference between calculating > Eigenvalues of a matrix M by > a) Eigenvalues[M] > b) Solve[CharacteristicPolynomial[M,x]==0,x] > c) Solve[Det[M - x IdentityMatrix[n]]==0,x] > ? > > Have a look at the following setting: > > n = 12; > M = Table[Table[Random[Real, {0, 100}], {n}], > {n}] > > In this case all the 3 methods a, b and c give > the same set of Eigenvalues > (neglecting small numerical differences and > maybe using Chop). > > As soon as I increase n to at least 13 the > result of method c gives a different > set of solutions. In particular method c gives > 18 solutions instead of the > expected 13, where the 5 new ones always lay > close together with small > imaginary parts. > > As far as I can see the problem occurs already > when calculating the > characteristic polynomial: > h[x_] = Det[M - x IdentityMatrix[n]] > looks good up to n=12, for n>=13 this function > looks very strange, including a > fraction and orders of x larger than n. > > This is particularly annoying since the actual > problem I am dealing with > involves the calculation of a characteristic > function like this: > h2[lambda_]=Det[M[lambda] - lambda > IdentityMatrix[31]] > > where M[lambda] is a sparse 31x31 matrix having > only the last row and the last > column as well as the main diagonal and the > first secondary diagonals unequal > to zero. The dependence of lambda is an > Exp[-lambda] in M[[31,31]]. > Of course I want to solve the transcendental > equation > FindRoot[h2[lambda]==0,{lambda,...}] afterwards. > But since the calculation of > the determinant already "fails" (giving really > high order terms in lambda) I > have no chance to get any sane results out of > FindRoot. > In this case it also doesn't make a difference > whether I use > h2[lambda_]=Det[M[lambda] - lambda > IdentityMatrix[31]] > or > h2[lambda_]=CharacteristicPolynomial[M[lambda],lambda] > which is only available in Mathematica 5 whereas > I am using 4.0 or 4.1 very > often. > > Any suggestions, clarifications or hints are > really appreciated. > Thank you, > Grischa > > > >