MCPcopy Create free account
hub / github.com/WinVector/Logistic / solve

Method solve

src/com/winvector/opt/impl/APISolver.java:21–48  ·  view source on GitHub ↗
(final double[][] a, final double[] b)

Source from the content-addressed store, hash-verified

19 private final double epsilon = 1.0e-5;
20
21 @Override
22 public double[] solve(final double[][] a, final double[] b) {
23 final int dim = b.length;
24 final DoubleMatrix2D mb = new DenseDoubleMatrix2D(dim,1);
25 for(int i=0;i<dim;++i) {
26 final double bi = b[i];
27 mb.set(i,0,bi);
28 }
29 final DoubleMatrix2D ab = new DenseDoubleMatrix2D(a);
30 final DoubleMatrix2D ta = algebra.transpose(ab);
31 final DoubleMatrix2D taa = algebra.mult(ta,ab);
32 double sumAbs = 0.0;
33 for(int i=0;i<dim;++i) {
34 for(int j=0;j<dim;++j) {
35 sumAbs += Math.abs(taa.get(i,j));
36 }
37 }
38 final double escale = epsilon*sumAbs/(1.0+((double)dim)*((double)dim));
39 for(int i=0;i<dim;++i) {
40 taa.set(i, i, taa.get(i,i) + escale);
41 }
42 final DoubleMatrix2D mx = algebra.solve(taa,algebra.mult(ta,mb));
43 final double[] x = new double[dim];
44 for(int i=0;i<dim;++i) {
45 x[i] = mx.get(i,0);
46 }
47 return x;
48 }
49
50}

Callers

nothing calls this directly

Calls 3

multMethod · 0.80
solveMethod · 0.65
getMethod · 0.45

Tested by

no test coverage detected