getMatrix() public méthode

public getMatrix ( int r, int c ) : Matrix
r int
c int
Résultat Matrix
Exemple #1
0
        /**
         * Solve A*X = B
         *
         * @param B
         *            A Matrix with as many rows as A and any number of columns.
         * @return X so that L*U*X = B(piv,:)
         * @exception IllegalArgumentException
         *                Matrix row dimensions must agree.
         * @exception ApplicationException
         *                Matrix is singular.
         */
        public Matrix solve(Matrix B)
        {
            if (B.getRowDimension() != m)
            {
                throw new ArgumentException(
                          "Matrix row dimensions must agree.");
            }
            if (!this.isNonsingular())
            {
                throw new ApplicationException("Matrix is singular.");
            }

            // Copy right hand side with pivoting
            int    nx   = B.getColumnDimension();
            Matrix Xmat = B.getMatrix(piv, 0, nx - 1);

            double[][] X = Xmat.getArray();

            // Solve L*Y = B(piv,:)
            for (int k = 0; k < n; k++)
            {
                for (int i = k + 1; i < n; i++)
                {
                    for (int j = 0; j < nx; j++)
                    {
                        X[i][j] -= X[k][j] * LU[i][k];
                    }
                }
            }
            // Solve U*X = Y;
            for (int k = n - 1; k >= 0; k--)
            {
                for (int j = 0; j < nx; j++)
                {
                    X[k][j] /= LU[k][k];
                }
                for (int i = 0; i < k; i++)
                {
                    for (int j = 0; j < nx; j++)
                    {
                        X[i][j] -= X[k][j] * LU[i][k];
                    }
                }
            }
            return(Xmat);
        }
        /**
         * Solve A*X = B
         * 
         * @param B
         *            A Matrix with as many rows as A and any number of columns.
         * @return X so that L*U*X = B(piv,:)
         * @exception IllegalArgumentException
         *                Matrix row dimensions must agree.
         * @exception ApplicationException
         *                Matrix is singular.
         */
        public Matrix solve(Matrix B)
        {
            if (B.getRowDimension() != m)
            {
                throw new ArgumentException(
                        "Matrix row dimensions must agree.");
            }
            if (!this.isNonsingular())
            {
                throw new ApplicationException("Matrix is singular.");
            }

            // Copy right hand side with pivoting
            int nx = B.getColumnDimension();
            Matrix Xmat = B.getMatrix(piv, 0, nx - 1);
            double[][] X = Xmat.getArray();

            // Solve L*Y = B(piv,:)
            for (int k = 0; k < n; k++)
            {
                for (int i = k + 1; i < n; i++)
                {
                    for (int j = 0; j < nx; j++)
                    {
                        X[i][j] -= X[k][j] * LU[i][k];
                    }
                }
            }
            // Solve U*X = Y;
            for (int k = n - 1; k >= 0; k--)
            {
                for (int j = 0; j < nx; j++)
                {
                    X[k][j] /= LU[k][k];
                }
                for (int i = 0; i < k; i++)
                {
                    for (int j = 0; j < nx; j++)
                    {
                        X[i][j] -= X[k][j] * LU[i][k];
                    }
                }
            }
            return Xmat;
        }