Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2004
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2004

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

Search the Archive

Re: problem with very slow matrix function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg50943] Re: problem with very slow matrix function
  • From: drbob at bigfoot.com (Bobby R. Treat)
  • Date: Wed, 29 Sep 2004 03:15:04 -0400 (EDT)
  • References: <cj86j8$782$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

A simple dynamic programming trick speeds this up by about 1,000 to one:

digits=19;
M={{0,1},{1,1}};
Det[M];
Clear[a,b]
a[n_]:=If[Max@Eigenvalues@a[n-1]<12,M.a[n-1],a[Floor[(n-1)/2]]];
a[0]:={{0,1},{1,1}};
b[n_]:=b[n]=If[Max@Eigenvalues@b[n-1]<12,M.b[n-1],b[Floor[(n-1)/2]]];
b[0]:={{0,1},{1,1}};
Timing[c=Flatten[Table[a[n],{n,0,digits}]]]
Timing[d=Flatten[Table[b[n],{n,0,digits}]]]
c==d
First@%%%/First@%%

{17.437 Second,{0,1,1,1,1,1,1,
  2,1,2,2,3,2,3,3,5,3,5,5,8,5,8,8,13,1,2,2,3,2,3,3,5,3,5,5,8,5,8,8,13,3,5,5,
    8,5,8,8,13,5,8,8,13,1,2,2,3,2,3,3,5,3,5,5,8,5,8,8,13,3,5,5,8,5,8,8,13,5,8,
    8,13}}

{0.016 Second,{0,1,1,1,1,1,1,2,1,2,2,3,2,3,3,5,3,5,5,8,5,8,8,13,1,2,2,3,2,3,3,
    5,3,5,5,8,5,8,8,13,3,5,5,8,5,8,8,13,5,8,8,13,1,2,2,3,2,3,3,5,3,5,5,8,5,8,
    8,13,3,5,5,8,5,8,8,13,5,8,8,13}}

True

1089.81

Bobby

Roger Bagula <tftn at earthlink.net> wrote in message news:<cj86j8$782$1 at smc.vnet.net>...
> Mathematica will do this function, but only very slowly...
> Thsat limits the number of values and how big I can make my critical point.
> I'd like a better , faster expression to do this kind of matrix 
> switching function.
> I'm also looking for a way to make the switch depend on a random
> level as well (&& / And).  
> I tried a version and it ignorred the second "and" implicit
> and did it on only the first implicit expression.
> As I want to do this on higher matrix level Bonacci/ Pisot
> systems, I would appreciate any help.
> 
> (*  2by2 Markov sequence Critical Eigenvalue collapse of   golden mean*)
> digits=19
> M={{0,1},{1,1}}
> Det[M]
> A[n_]:=If[(Max[Eigenvalues[A[n-1]]])<12, M.A[n-1],A[Floor[(n-1)/2]]];
> A[0]:={{0,1},{1,1}};
> (* Critical Eigenvalue collapse at 12 of 2by2 matrices made with  golden 
> mean  recurrence*)
> b=Flatten[Table[A[n],{n,0,digits}]]
> ListPlot[b,PlotJoined->True,PlotRange->All]
> 
> {0,1,1,1,1,1,1,2,1,2,2,3,2,3,3,5,3,5,5,8,5,8,8,13,1,2,2,3,2,3,3,5,3,5,5,8,5,8,
>   
> 8,13,3,5,5,8,5,8,8,13,5,8,8,13,1,2,2,3,2,3,3,5,3,5,5,8,5,8,8,13,3,5,5,8,5,8,
>   8,13,5,8,8,13}
> Respectfully, Roger L. Bagula
> 
> tftn at earthlink.net, 11759Waterhill Road, Lakeside,Ca 92040-2905,tel: 619-5610814 :
> URL :  http://home.earthlink.net/~tftn
> URL :  http://victorian.fortunecity.com/carmelita/435/


  • Prev by Date: Re: Error with NDSolve
  • Next by Date: Re: problem with very slow matrix function
  • Previous by thread: Re: problem with very slow matrix function
  • Next by thread: Re: Q: Symbolize: How to create a table of indexed symbols?