MathGroup Archive 2011

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

Search the Archive

Re: gives different result compared to 1/Diagonal[Normal@A] when A is sparse

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123305] Re: gives different result compared to 1/Diagonal[Normal@A] when A is sparse
  • From: Leonid Shifrin <lshifr at gmail.com>
  • Date: Thu, 1 Dec 2011 05:49:45 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com

I think this is the same bug as discussed in this thread:

http://groups.google.com/group/comp.soft-sys.math.mathematica/browse_thread/thread/37935f55b291ed2

where in my answer there I also indicated what the origin of that behavior
might be.

Cheers,
Leonid

On Wed, Nov 30, 2011 at 3:50 PM, Oliver Ruebenkoenig
<ruebenko at wolfram.com>wrote:

>
>
> I filed this as a bug.
>
> One small side note: You might want to use
>
> A[[r, r + 1]] = 0.;
> A[[r + 1, r]] = 0.;
>
> instead of A[[..]]=0.& /@ r. Extraction/Setting of SA componets is
> vectoriezed.
>
> Oliver
>
> On Wed, 30 Nov 2011, Nasser M. Abbasi wrote:
>
> > I found this strange behavior, and I do not think it is correct.
> >
> > This is version 8.04.
> >
> > 1/Diagonal[A]  gives a divide by zero error, but 1/Diagonal[Normal@A]
> does
> > not. This is when A is sparse.
> >
> > ------------------------------
> > Clear["Global`*"]
> >
> > makeMatrix[n_]:=Module[{numberOfUnknowns=n^2,r,A},
> >
> > A=SparseArray[
> > {
> >  Band[{1,1}]->4.0,
> >  Band[{2,1}]->-1,
> >  Band[{1,2}]->-1,
> >  Band[{1,n+1}]->-1,
> >  Band[{n+1,1}]->-1
> > },{numberOfUnknowns,numberOfUnknowns},0.
> > ];
> >
> > r=Range[n,n^2-n,n];
> > (A[[#,#+1]]=0.)&/@r;
> > (A[[#+1,#]]=0.)&/@r;
> >
> > A
> > ];
> >
> > (A = makeMatrix[3])//MatrixForm
> >
> > (Diagonal[A])//Normal
> >
> > 1/Diagonal[Normal@A]  (* ===> OK *)
> > 1/Diagonal[A]         (* error *)
> >
> > ----------------------------------------
> >
> > So, 1/Diagonal[Normal@A]  gives
> > {0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25}
> >
> > but 1/Diagonal[A]  gives 1/0
> >
> > In another system I use, both operations give
> > {0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25}
> >
> > i.e. if the matrix is sparse or not, 1/Diagonal[A] should work
> > regardless.  I think sparse matrices need to be more integrated into
> > all Mathemaitca matrix operations.
> >
> > Or Am I missing something here?
> >
> > Thanks,
> > --Nasser
> >
> >
>
>


  • Prev by Date: Re: How to simplify ArcSin formula
  • Next by Date: FindShortestTour Function- Roundtrip & Constructive Heuristic
  • Previous by thread: Re: How to simplify ArcSin formula
  • Next by thread: Re: gives different result compared to 1/Diagonal[Normal@A] when A is sparse