MathGroup Archive 2010

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

Search the Archive

Re: issue with LinearSolve[] when using SparseArray

  • To: mathgroup at smc.vnet.net
  • Subject: [mg113753] Re: issue with LinearSolve[] when using SparseArray
  • From: Virgil Stokes <vs at it.uu.se>
  • Date: Wed, 10 Nov 2010 06:30:08 -0500 (EST)

On 09-Nov-2010 09:55, Oliver Ruebenkoenig wrote:
> $MinPrecision=$MachinePrecision;$MaxPrecision=$MachinePrecision;
> >  Share[];
> >
> >  (* make sparse A*)
> >  makeA[n_?(IntegerQ[#]&&Positive[#]&)]:=Module[{r,off,block},
> >  r=Table[-4,{i,n}];
> >  off=Table[1,{i,n-1}];
> >
> >  block =DiagonalMatrix[r,0]+DiagonalMatrix[off,1]+DiagonalMatrix[off,-1];
> >
> >  SparseArray[{Band[{1,1}]->ConstantArray[block,{n}],Band[{1,n+1}]->1,Band[{n+1,1}]->1}]
> >  ];
> >
> >  (* f(x,y) *)
> >  force[i_?(IntegerQ[#]&),j_?(IntegerQ[#]&),h_?(NumericQ[#]&&Positive[#]
> >  &)]:=Module[{x=i*h,y=j*h},
> >  N@Exp[-(x-0.25)2-(y-0.6)2]
> >  ];
> >
> >  (*n=127; h=2-7;*)    (*these values are OK *)
> >  (*n=255; h=2-8;*)    (*these values are OK *)
> >  n=511; h=2-9;  (*these cause problem *)
> >
> >  A=N[makeA[n]];
> >
> >  (* fill in f vector, in correct order for problem*)
> >  f=Table[0,{i,n2}];
> >  For[j=1,j<=n,j++,
> >  For[i=1,i<=n,i++,
> >  f[[j+n*(i-1)]]=force[i,j,h]
> >  ]
> >  ];
> >
> >  Print["before solver, MemoryInUse[]=",MemoryInUse[]];
> >  {cpu,sol}=Timing[LinearSolve[A,f]];
> >  Print["after solver, MemoryInUse[]=",MemoryInUse[]];
> >  Print["after solver, cpu=",cpu];
Ok Oliver,
I got the following message after a few seconds when I executed this code:

*No more memory available.
Mathematica kernel has shut down.
Try quitting other applications and then retry.*

This is a summary of the relevant features of my system:
*Processor:* Inter(R) Core(TM)2 Duo CPU  E8500 @ 3.16GHz  3.17 GHz
*Memory (RAM):* 4.00 GB
*System type:* 32-bit Windows Vista
*Mathematica:* "7.0 for Microsoft Windows (32-bit) (February 18, 2009)"

--V


  • Prev by Date: Re: Default Value for SetterBar
  • Next by Date: Find max of a Find root function
  • Previous by thread: Set::pspec error in parallelized loop in Unix
  • Next by thread: Find max of a Find root function