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.

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/85dbeb00-ec87-4012-b0fc-06baff9cef6dn%40googlegroups.com.

Reply via email to