MathGroup Archive 2012

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

Search the Archive

Re: Eigenvalues works very slow

  • To: mathgroup at smc.vnet.net
  • Subject: [mg128513] Re: Eigenvalues works very slow
  • From: Michael Weyrauch <michael.weyrauch at gmx.de>
  • Date: Thu, 25 Oct 2012 23:36:07 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net
  • References: <k685fc$m70$1@smc.vnet.net>

Hello,

     there is a very simple solution to this:

  Eigenvalues[N[q4 + h0]]

Reason: If you want to use numerical algorithms as most likely
the other system does automatically (because it doesen't know better),
then you need to give numerical input to the function Eigenvalues.

Unlike most other systems, Mathematica is smart enough to
chose different algorithms depending on the input it receives.

Michael

Am 24.10.2012 09:30, schrieb jure lapajne:
> Hello,
> I'm trying to calculate eigenvalues of different sized matrices (from 10x10 to 1000x1000) using mathematica's built-in function - Eigenvalues. For smaller matrices it works ok, but for larger matrices it's just too slow. I tried writing the code in another system and it finds eigenvalues very quickly (in a second or two at most) even for big matrices. I'm not sure whether am I doing something wrong or is the speed difference really this big.
> My code (you only need to change d to change the size of matrix):
> d = 25;
> q = Table[Table[1/2*Sqrt[i + j + 1]*KroneckerDelta[Abs[i - j], 1], {j, 0, d-1}],{i, 0, d - 1}];
> h0 = Table[Table[(i + 1/2)*KroneckerDelta[i, j], {j, 0, d - 1}], {i, 0,d-1}];
> lambda = 1/2;
> q4 = lambda*q.q.q.q;
> N[Eigenvalues[q4 + h0]]
>
> Thanks for help.
>




  • Prev by Date: Re: OutputResponse gives funny results
  • Next by Date: Re: Fourier Transform of a "step" function
  • Previous by thread: Re: Eigenvalues works very slow
  • Next by thread: Creating a recursive function which returns a sequence