2017-09-12 1 views
1

Les meilleures histoires commencent avec ma matrice A.Comment extraire la matrice triangulaire supérieure w ou w/o diagonal dans la chapelle

var A: [{1..4,1..4}] real = (
    (4, -30, 60, -35), 
    (-30, 300, -675, 420), 
    (60, -675, 1620, -1050), 
    (-35, 420, -1050, 700) 
); 

Je me souviens quelque part, vous pouvez obtenir le triangle supérieur, mais je ne peux pas le trouver dans le Chapel docs Pouvez-vous le mettre dans/exclure la diagonale?

+1

Voulez-vous le triangle supérieur gauche ou d'un triangle en haut à droite? – saruftw

+0

Par convention, je pense d'habitude tri droite supérieure. Je suppose que cela pourrait aussi être un changement. –

Répondre

1

Utilisation de la bibliothèque LinearAlgebra:

use LinearAlgebra; 

var A: [{1..4,1..4}] real = (
    (4, -30, 60, -35), 
    (-30, 300, -675, 420), 
    (60, -675, 1620, -1050), 
    (-35, 420, -1050, 700) 
); 

var upperTriangle = triu(A); 

// Confirm it worked 
writeln(isTriu(upperTriangle)); 
+0

C'est ce dont j'avais besoin, il s'avère que c'était [ici] (http://chapel.cray.com/docs/master/modules/packages/LinearAlgebra.html?highlight=upper#LinearAlgebra.triu) mais je ne me souvenais pas le nom. –