<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7650.28">
<TITLE>RE : [scilab-Users]  inversion of a huge block diagonal matrix</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->
<BR>

<P><FONT SIZE=2>yes,<BR>
please find attached the script which produces a block diagonal matrix<BR>
<BR>
GC<BR>
<BR>
<BR>
-------- Message d'origine--------<BR>
De: Collette yann [<A HREF="mailto:yann.collette@scilab.org">mailto:yann.collette@scilab.org</A>]<BR>
Date: mar. 16/03/2010 15:59<BR>
À: users@lists.scilab.org<BR>
Objet : [scilab-Users] Re: RE : [scilab-Users] inversion of a huge block diagonal matrix<BR>
<BR>
This only other solution I see is to write a C-interface, to transfer<BR>
all the blocks from the diagonal and to perform the computation using C<BR>
functions.<BR>
Do you have a script which produce such a matrix ?<BR>
<BR>
YC<BR>
<BR>
Collewet Guylaine a écrit :<BR>
><BR>
> >Stupid question first: do you have tested to store your big matrix in a<BR>
> >sparse matrix ?<BR>
> >stacksize('max')<BR>
> >B = spzeros(1e6,1e6);<BR>
> >// Store the matrix<BR>
> >Binv = inv(B);<BR>
><BR>
><BR>
><BR>
> Yes, I have already tested this solution<BR>
> But Binv = inv(B) is time consuming too when the size of the matrix is<BR>
> high<BR>
> I guess that this way does not take advantage of the fact that the<BR>
> matrix is block diagonal<BR>
><BR>
><BR>
> Guylaine<BR>
><BR>
><BR>
><BR>
> -------- Message d'origine--------<BR>
> De: Collette yann [<A HREF="mailto:yann.collette@scilab.org">mailto:yann.collette@scilab.org</A>]<BR>
> Date: mar. 16/03/2010 15:41<BR>
> À: users@lists.scilab.org<BR>
> Objet : Re: [scilab-Users] inversion of a huge block diagonal matrix<BR>
><BR>
> Collewet Guylaine a écrit :<BR>
> ><BR>
> > Hello,<BR>
> ><BR>
> > I would like to compute the inverse of a huge block diagonal matrix<BR>
> > using an efficient way.<BR>
> ><BR>
> > Each block is a square matrix with NxN dimension and the block<BR>
> > diagonal matrix dimension is NLxNL<BR>
> > N is small (5 or 6)  and L is big (1e6)<BR>
> ><BR>
> > One way is to build a loop and to compute L times the inversion of the<BR>
> > NxN matrixes<BR>
> > However, as L is big (for example 1e6) this is too much time consuming<BR>
> ><BR>
> > Does anyone has an idea to compute this using scilab ?<BR>
> ><BR>
> > Thank you for your help<BR>
> ><BR>
> > Guylaine Collewet<BR>
> > guylaine.collewet@cemagref.fr<BR>
> > +33223482167<BR>
> ><BR>
> ><BR>
> Stupid question first: do you have tested to store your big matrix in a<BR>
> sparse matrix ?<BR>
> stacksize('max')<BR>
> B = spzeros(1e6,1e6);<BR>
> // Store the matrix<BR>
> Binv = inv(B);<BR>
><BR>
> YC<BR>
><BR>
><BR>
<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>