¿Cómo puedo formar una nueva matriz a partir de una dada eligiendo algunas de sus columnas, utilizando MAGMA?
Respuestas
¿Demasiados anuncios?Suponga que tiene un $m\times n$ matriz $A=[A_{i,j}]$ definido en MAGMA. ¿Estoy en lo cierto al pensar que quieres definir un $m\times l$ matriz $B=[B_{r,s}]$ en MAGMA de forma que las columnas de $B$ son todas copias de columnas de $A$ . Esto se hace fácilmente utilizando bucles. Primero defina $B$ para ser la matriz cero sobre el anillo elegido $R$ :
B:=ZeroMatrix(R,m,l);
Entonces suponga que quiere la primera columna de $B$ para que sea igual a la $a$ -en la columna de $A$ ? Entonces utiliza el siguiente bucle:
for i in {1..m} do
B[i,1]:=A[i,a];
end for;
Repitiendo esto para todas las columnas de $B$ le dará su resultado.
En realidad puedes hacer esto muy fácilmente en Magma usando el comando ColumnSubmatrix, sin necesidad de hacer un bucle. Usted puede utilizar esto de varias maneras.
Por ejemplo, si tiene una matriz $A$ y quieres $B$ que se compone de una selección de columnas:
1º, 2º, $\ldots$ , 5ª columna:
B := ColumnSubmatrix(A, 5);
3ª, 4ª, $\ldots$ , 7ª columna:
B := ColumnSubmatrix(A, 3, 4);
(ya que 7=3+4) O
ColumnSubmatrixRange(A, 3, 7);
2ª, 5ª y 8ª columnas: Esto es más complicado. Magma no te permite hacer esto de forma limpia. Pero puedes seleccionar las filas 2, 5 y 8 de una matriz individualmente. Obviamente puedes sustituir [2,5,8] por cualquier secuencia arbitraria.
Transpose(Matrix(Transpose(A)[[2,5,8]]));