[scilab-Users] inversion of a huge block diagonal matrix

Collette yann yann.collette at scilab.org
Tue Mar 16 15:59:04 CET 2010


This only other solution I see is to write a C-interface, to transfer 
all the blocks from the diagonal and to perform the computation using C 
functions.
Do you have a script which produce such a matrix ?

YC

Collewet Guylaine a écrit :
>
> >Stupid question first: do you have tested to store your big matrix in a
> >sparse matrix ?
> >stacksize('max')
> >B = spzeros(1e6,1e6);
> >// Store the matrix
> >Binv = inv(B);
>
>
>
> Yes, I have already tested this solution
> But Binv = inv(B) is time consuming too when the size of the matrix is 
> high
> I guess that this way does not take advantage of the fact that the 
> matrix is block diagonal
>
>
> Guylaine
>
>
>
> -------- Message d'origine--------
> De: Collette yann [mailto:yann.collette at scilab.org]
> Date: mar. 16/03/2010 15:41
> À: users at lists.scilab.org
> Objet : Re: [scilab-Users] inversion of a huge block diagonal matrix
>
> Collewet Guylaine a écrit :
> >
> > Hello,
> >
> > I would like to compute the inverse of a huge block diagonal matrix
> > using an efficient way.
> >
> > Each block is a square matrix with NxN dimension and the block
> > diagonal matrix dimension is NLxNL
> > N is small (5 or 6)  and L is big (1e6)
> >
> > One way is to build a loop and to compute L times the inversion of the
> > NxN matrixes
> > However, as L is big (for example 1e6) this is too much time consuming
> >
> > Does anyone has an idea to compute this using scilab ?
> >
> > Thank you for your help
> >
> > Guylaine Collewet
> > guylaine.collewet at cemagref.fr
> > +33223482167
> >
> >
> Stupid question first: do you have tested to store your big matrix in a
> sparse matrix ?
> stacksize('max')
> B = spzeros(1e6,1e6);
> // Store the matrix
> Binv = inv(B);
>
> YC
>
>




More information about the users mailing list