2016-03-14 3 views
0

Je veux donner les valeurs d'un paramètre matriciel mat_ZZ_p A pour le type mat_ZZ_p dans NTL. La dimension de mon vecteur est grande. Donc, je regarde une grande matrice carrée comme paramètre. Donc, je ne peux pas attribuer les valeurs manuellement. Un avantage ici pour moi est que les colonnes de ma matrice ne sont que des rotations de la première colonne. Il est de la formeRotation des matrices dans Z_p

p_0  p_(n-1) p_(n-2) .... p_1 
    p_1  p_0  p_(n-1) .... p_2 
    . 
    . 
    p_(n-1) p_(n-2) p_(n-3) .... p_0 

et I ont une variable p qui est un vecteur avec les valeurs p_0, p_1, ..., P_ (n-1). J'ai assigné la 1ère colonne de la matrice en utilisant une boucle à travers le vecteur p. mais je ne suis pas sûr de savoir comment faire la rotation pour les autres colonnes. J'ai essayé d'utiliser que les valeurs vues diagonalement sont les mêmes mais dans ce cas, je ne suis pas sûr de savoir comment lier la boucle. J'ai essayé d'utiliser le fait qu'il y a un décalage diagonal des éléments lorsque nous passons d'une colonne à l'autre. Mais encore une fois dans ce cas, je ne suis pas en mesure d'attribuer la valeur pour la 1ère ligne, 2ème colonne en se référant à la colonne précédente. Existe-t-il un moyen standard de faire une telle rotation de colonnes?

Puisque j'essaie de résoudre le système d'équations dans Z_p, je pense que les commentaires dans ce post ne m'aident pas. pour désigner tout Best way to solve a linear equation in code

Répondre

1

Si vous faites référence à m[i][j] pour l'élément générique de la matrice nxn alors ce que vous avez besoin est

m[i][j] = m[(i + n - 1) % n][j-1] pour chaque j > 0

+0

Merci, fonctionne parfaitement! – Saras

-1

Pour une matrice carrée avec des dimensions n * n, élément et non dans la première colonne ou la première ligne, utilisez m[i - 1][j - 1], avec i et j étant la ligne et les colonnes.

+0

pour 'i = 0', cela donnera un défaut de segmentation. – uSeemSurprised

+0

"pour désigner tout élément ne figurant ni dans la première colonne ni dans la première rangée". Par première colonne et première rangée, je me réfère aux zéro rangées, pas à l'index réel mais à l'ordre logique. – hamzamuhammad

+0

mais nous devons trouver les premiers éléments de chaque colonne qui est le dernier élément de la colonne précédente, une réponse correcte a été posté ci-dessus qui prend soin de tous les cas. – uSeemSurprised