### 1.48.3 Παραγοντοποίηση LU : lu

lu παίρνει ως όρισμα έναν τετραγωνικό πίνακα A μεγέθους n (αριθμητικό ή συμβολικό).
lu επιστρέφει μια μετάθεση (διάταξη) p των στοιχείων 0..n−1, έναν κάτω τριγωνικό πίνακα L, με 1 στη διαγώνιο, και έναν άνω τριγωνικό πίνακα U, έτσι ώστε :

- P*A=L*U, όπου P είναι ο πίνακας μεταθέσεων που παράγεται από την p (υπολογίζεται με P:=permu2mat(p)),
- η εξίσωση A*x=B είναι ισοδύναμη με :

  L*U*x=P*B=p(B)  όπουp(B)=[bp(0),bp(1)..bp(n−1)],B=[b0,b1..bn−1]

Ο πίνακας μεταθέσεων P ορίζεται από την p ως :

P[i,p(i)]=1,P[i,j]=0  εάνj≠p(i)

Με άλλα λόγια, είναι ο ταυτοτικός πίνακας όπου οι γραμμές μετατίθενται σύμφωνα με την μετάθεση p. Η συνάρτηση permu2mat χρησιμοποιείται για τον υπολογισμό του P ( permu2mat(p) επιστρέφει τον πίνακα P).
Είσοδος :

[p,L,U]:=lu([[3.,5.],[4.,5.]])

Έξοδος :

[1,0],[[1,0],[0.75,1]],[[4.0,5.0],[0,1.25]]

Εδώ n=2, και επομένως :

P[0,p(0)]=P[0,1]=1,P[1,p(1)]=P[1,0]=1, P=[[0,1],[1,0]]

Επαλήθευση :
Είσοδος (όπου A:=[[3.,5.],[4.,5.]]) :

permu2mat(p)*A; L*U

Έξοδος:

[[4.0,5.0],[3.0,5.0]],[[4.0,5.0],[3.0,5.0]]

Να σημειωθεί ότι η μετάθεση είναι διαφορετική για ακριβή είσοδο (ως οδηγός επιλέγεται ο απλούστερος αντί για τον μεγαλύτερο σε απόλυτη τιμή).
Είσοδος :

lu([[1,2],[3,4]])

Έξοδος :

[1,0],[[1,0],[3,1]],[[1,2],[0,-2]]

Είσοδος :

lu([[1.0,2],[3,4]])

Έξοδος :

[1,0],[[1,0],[0.333333333333,1]],[[3,4], [0,0.666666666667]]