java数组转矩阵及部分操作

import Jama.Matrix;
/**
 * Created by Tao on 2017/2/10.
 */
public class toMatrix {
    private Matrix matrix;
    public toMatrix(double[][] x) {
        Matrix m = new Matrix(x);
        this.matrix = m;
    }
    //行列式
    public double toDet() {
        double detNum = matrix.det();
        detNum = Math.sqrt(detNum);
        return detNum;
    }
    //转置
    public double[][] transport() {
        Matrix m1 = matrix.transpose();
        double[][] array = m1.getArray();   
        return array;
    }
    public double[][] minus(double[][] B) {
        Matrix m2 = new Matrix(B);
        Matrix m1 = matrix.minus(m2);
        double[][] array = m1.getArray();   
        return array;
    }
    public double[][] time(double[][] B) {
        Matrix m2 = new Matrix(B);
        Matrix m1 = matrix.times(m2);
        double[][] array = m1.getArray();   
        return array;
    }
    public double[][] plus(double[][] B) {
        Matrix m1 = new Matrix(B);
        Matrix m2 = matrix.plus(m1);
        double[][] array = m2.getArray();   //
        return array;
    }
    //求逆矩阵
    public double[][] inverse() {
        System.out.println("m2的秩:" + matrix.rank());
        Matrix m1 = matrix.inverse();
        double[][] array = m1.getArray();   //
        return array;
    }
    public double[][] QRinverse() {
        Matrix Q = matrix.qr().getQ();
        Matrix R = matrix.qr().getR();
        Matrix Q_trans = Q.transpose();
        Matrix R_trans = R.transpose();
        Matrix InvR = R_trans.times(R);
        InvR = InvR.inverse().times(R_trans);
        Matrix qrInv = InvR.times(Q_trans);
        double[][] array = qrInv.getArray();   //
        return array;
    }
    public double[][] getS() {
        Matrix m1 = matrix.svd().getS();
        double[][] array = m1.getArray();
        return array;
    }
    public double[][] getU() {
        Matrix m1 = matrix.svd().getU();
        double[][] array = m1.getArray();
        return array;
    }
    public double[][] getV() {
        Matrix m1 = matrix.svd().getV();
        double[][] array = m1.getArray();
        return array;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值