public void solve(DoubleMatrix1D b) { if (b.size() != n) { throw new IllegalArgumentException("b.size() != A.rows()"); } if (!isNonsingular()) { throw new IllegalArgumentException("A is singular"); } DoubleProperty.DEFAULT.checkDense(b); double[] y = new double[n]; double[] x; if (b.isView()) { x = (double[]) b.copy().elements(); } else { x = (double[]) b.elements(); } Dcs_ipvec.cs_ipvec(N.pinv, x, y, n); /* y = b(p) */ Dcs_lsolve.cs_lsolve(N.L, y); /* y = L\y */ Dcs_usolve.cs_usolve(N.U, y); /* y = U\y */ Dcs_ipvec.cs_ipvec(S.q, y, x, n); /* b(q) = x */ if (b.isView()) { b.assign(x); } } }
public void solve(DoubleMatrix1D b) { if (b.size() != n) { throw new IllegalArgumentException("b.size() != A.rows()"); } if (!isNonsingular()) { throw new IllegalArgumentException("A is singular"); } DoubleProperty.DEFAULT.checkDense(b); double[] y = new double[n]; double[] x; if (b.isView()) { x = (double[]) b.copy().elements(); } else { x = (double[]) b.elements(); } Dcs_ipvec.cs_ipvec(N.pinv, x, y, n); /* y = b(p) */ Dcs_lsolve.cs_lsolve(N.L, y); /* y = L\y */ Dcs_usolve.cs_usolve(N.U, y); /* y = U\y */ Dcs_ipvec.cs_ipvec(S.q, y, x, n); /* b(q) = x */ if (b.isView()) { b.assign(x); } } }
Dcs_usolve.cs_usolve(N.U, x); /* x = U\x */
Dcs_usolve.cs_usolve(N.U, y); /* y = R\y */
Dcs_usolve.cs_usolve(N.U, y); /* y = R\y */
Dcs_usolve.cs_usolve(N.U, y); /* y = R\y */
Dcs_usolve.cs_usolve(N.U, x); /* x = R\x */