Thank you for reminding
I went through. 
We need to Decompose  A11 only and rest can be calculated via taking 
inverse of L11 or U11.
Here A11 is square matrix and we can use scipy to decompose square matrices.
Am I correct?

New and only problem that I see is the returned LU decomposition of scipy's 
splu is calculated by full permutation of row and column as pointed out by 
*Nils 
Bruin*. We will be returning row and col permutation array/matrix separately 
instead of single row permutation which sage usage generally for plu 
decomposition.
User will have to manage row and col permutations. 
or else
We can return handler function for reconstruction of matrix from  L, U & 
p={perm_r, 
perm_c}
or
We can leave that to user
User will have to permute its input data according to perm_c (like : perm_c 
* input) before using the perm_r^(-1) * L * U
as perm_r^(-1) * L * U is PLU decomposition of Original_matrix*perm_c
https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.linalg.SuperLU.html
>>> A = Pr^(-1) *L*U * Pc^(-1) # as told by *Nils Bruin*
or
scipy's splu will not do.

On Tuesday, February 27, 2024 at 11:57:02 PM UTC+5:30 Dima Pasechnik wrote:

>
>
> On 27 February 2024 17:25:51 GMT, 'Animesh Shree' via sage-devel <
> sage-...@googlegroups.com> wrote:
> >This works good if input is square and I also checked on your idea of 
> >padding zeros for non square matrices.
> >I am currently concerned about the permutation matrix and L, U in case of 
> >padded 0s. Because if we pad then how will they affect the outputs, so 
> that 
> >we can extract p,l,u for unpadded matrix.
>
> please read details I wrote on how to deal with the non-square case. There 
> is no padding needed.
>
>
> >
> >On Tuesday, February 27, 2024 at 10:03:25 PM UTC+5:30 Dima Pasechnik 
> wrote:
> >
> >>
> >>
> >> On 27 February 2024 15:34:20 GMT, 'Animesh Shree' via sage-devel <
> >> sage-...@googlegroups.com> wrote:
> >> >I tried scipy which uses superLU. We get the result but there is 
> little 
> >> bit 
> >> >of issue.
> >> >
> >> >
> >> >--For Dense--
> >> >The dense matrix factorization gives this output using permutation 
> matrix
> >> >sage: a = Matrix(RDF, [[1, 0],[2, 1]], sparse=True)
> >> >sage: a
> >> >[1.0 0.0]
> >> >[2.0 1.0]
> >> >sage: p,l,u = a.dense_matrix().LU()
> >> >sage: p
> >> >[0.0 1.0]
> >> >[1.0 0.0]
> >> >sage: l
> >> >[1.0 0.0]
> >> >[0.5 1.0]
> >> >sage: u
> >> >[ 2.0 1.0]
> >> >[ 0.0 -0.5]
> >> >
> >>
> >> you'd probably want to convert the permutation matrix into a 
> permutation.
> >>
> >>
> >> >--For Sparse--
> >> >But the scipy LU decomposition uses permutations which involves taking 
> >> >transpose, also the output permutations are represented as array.
> >>
> >> It is very normal to represent permutations as arrays.
> >> One can reconstruct the permutation matrix from such an array trivially 
> >> (IIRC, Sage even has a function for it)
> >>
> >> I am not sure what you mean by "taking transpose".
> >>
> >> >sage: p,l,u = a.LU(force=True)
> >> >sage: p
> >> >{'perm_r': [1, 0], 'perm_c': [1, 0]}
> >> >sage: l
> >> >[1.0 0.0]
> >> >[0.0 1.0]
> >> >sage: u
> >> >[1.0 2.0]
> >> >[0.0 1.0]
> >> >
> >> >
> >> >Shall I continue with this?
> >>
> >> sure, you are quite close to getting it all done it seems.
> >>
> >>
> >> >On Tuesday, February 6, 2024 at 11:29:07 PM UTC+5:30 Dima Pasechnik 
> wrote:
> >> >
> >> >> Non-square case for LU is in fact easy. Note that if you have A=LU as
> >> >> a block matrix
> >> >> A11 A12
> >> >> A21 A22
> >> >>
> >> >> then its LU-factors L and U are
> >> >> L11 0 and U11 U12
> >> >> L21 L22 0 U22
> >> >>
> >> >> and A11=L11 U11, A12=L11 U12, A21=L21 U11, A22=L21 U12+L22 U22
> >> >>
> >> >> Assume that A11 is square and full rank (else one may apply
> >> >> permutations of rows and columns in the usual way). while A21=0 and
> >> >> A22=0. Then one can take L21=0, L22=U22=0, while A12=L11 U12
> >> >> implies U12=L11^-1 A12.
> >> >> That is, we can first compute LU-decomposition of a square matrix 
> A11,
> >> >> and then compute U12 from it and A.
> >> >>
> >> >> Similarly, if instead A12=0 and A22=0, then we can take U12=0,
> >> >> L22=U22=0, and A21=L21 U11,
> >> >> i.e. L21=A21 U11^-1, and again we compute LU-decomposition of A11, 
> and
> >> >> then L21=A21 U11^-1.
> >> >>
> >> >> ----------------
> >> >>
> >> >> Note that in some cases one cannot get LU, but instead must go for an
> >> >> PLU,with P a permutation matrix.
> >> >> For non-square matrices this seems a bit more complicated, but, well,
> >> >> still doable.
> >> >>
> >> >> HTH
> >> >> Dima
> >> >>
> >> >>
> >> >>
> >> >>
> >> >> On Mon, Feb 5, 2024 at 6:00 PM Nils Bruin <nbr...@sfu.ca> wrote:
> >> >> >
> >> >> > On Monday 5 February 2024 at 02:31:04 UTC-8 Dima Pasechnik wrote:
> >> >> >
> >> >> >
> >> >> > it is the matter of adding extra zero rows or columns to the 
> matrix 
> >> you 
> >> >> want to decompose. This could be a quick fix.
> >> >> >
> >> >> > (in reference to computing LU decompositions of non-square 
> matrices) 
> >> -- 
> >> >> in a numerical setting, adding extra zero rows/columns may not be 
> such 
> >> an 
> >> >> attractive option: if previously you know you had a maximal rank 
> >> matrix, 
> >> >> you have now ruined it by the padding. It's worth checking the 
> >> >> documentation and literature if padding is appropriate/desirable for 
> >> the 
> >> >> target algorithm/implementation.
> >> >> >
> >> >> > --
> >> >> > You received this message because you are subscribed to the Google 
> >> >> Groups "sage-devel" group.
> >> >> > To unsubscribe from this group and stop receiving emails from it, 
> >> send 
> >> >> an email to sage-devel+...@googlegroups.com.
> >> >> > To view this discussion on the web visit 
> >> >> 
> >> 
> https://groups.google.com/d/msgid/sage-devel/622a01e0-9197-40c5-beda-92729c4e4a32n%40googlegroups.com
> >> >> .
> >> >>
> >> >
> >>
> >
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/fcb4ba2a-4d2e-4c4b-9ce0-99c0bd26eb91n%40googlegroups.com.

Reply via email to