4 votos

Transposición de una matriz cuadrada de código

Sé que no es área de programación , pero creo que es más relacionadas con las matemáticas.

Tengo la siguiente función:

public void transpose()
    {
        for(int i = 0; i < mat_size; ++i) {
            for(int j = 0; j < i ; ++j) {
                double tmpJI = get(j, i);
                put(j, i, get(i, j));
                put(i, j, tmpJI);
            }
        }
    }

O en la llanura inglés, supongamos que el tamaño de la matriz = matix del número de filas = matriz del num cols.


de $i = 0 $ $size$hacer:

--> por $j = 0$ $i$hacer:

\begin{matrix} 1 & 0 & 0 \\ 5 & 1 & 0 \\ 6 & 5 & 1 \\ \end> reemplace $mat_{i,j}$ $mat_{j,i}$

-- > $j$ más grande en 1

hacer $i$ más grande en 1.


Para la siguiente matriz:

$$\begin{matrix} 1 & 0 & 6 \\ 5 & 1 & 0 \\ 0 & 5 & 1 \\ \end{de la matriz}$$

the transpose output is:

$$\begin{matrix} 1 & 5 & 6 \\ 0 & 1 & 5 \\ 0 & 0 & 1 \\ \end{matriz}$$

when the correct transpose is:

$$-#-#-{matriz}$$

¿Cuál es mi problema?

2voto

Sebastian Good Puntos 3146

He implementado el código en Java (añadiendo el código necesario para alimentar en la matriz que dio como ejemplo, implementar el get y put, métodos e impresión de resultados) y funciona muy bien para mí, así que debe haber un problema en otra parte del código. He puesto mi código de abajo. No es un libro de texto, pero demuestra el punto: no hay nada malo con su método transponer. Ejecutar y Dios lo permite, se verá que.

// program which transposes a matrix M and prints M and its transpose

public class Matrix {

    double[][] M = new double[3][3];

    static int mat_size=3;

    public Matrix()
    {
        M[0][0]=1;
        M[0][1]=0;
        M[0][2]=0;
        M[1][0]=5;
        M[1][1]=1;
        M[1][2]=0;
        M[2][0]=6;
        M[2][1]=5;
        M[2][2]=1;

        System.out.println("M");

        printMatrix();

        transpose();

        System.out.println("M'");

        printMatrix();

    }

    public static void main(String[] args) {

        new Matrix();

    }

    public void transpose()
    {
        System.out.println();

        for(int i = 0; i < mat_size; ++i) {
            for(int j = 0; j < i ; ++j) {
                double tmpJI = get(j, i);
                put(j, i, get(i, j));
                put(i, j, tmpJI);
            }
        }
    }



    public void printMatrix()
    {

        System.out.println();

        for(int i = 0; i < mat_size; ++i) {
            for(int j = 0; j < mat_size ; ++j) {
                System.out.print((int)get(i,j)+" ");
            }
            System.out.println();
        }

    }

    private void put(int i, int j, double d) {

        M[i][j]=d;

    }

    private double get(int i, int j) 

        return M[i][j];

    }

}

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X