MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

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
>
>
>
> 



  • Prev by Date: Re: can Mathematica be useful for this?
  • Next by Date: Re: Re: simplifying ulam spiral code
  • Previous by thread: Re: "large" matrices, Eigenvalues, determinants, characteristic polynomials
  • Next by thread: MathKernel Crash on NonlinearRegress