private static void toR(TridiagonalMatrix tm) { System.out.print("tridiag(c("); for (int i = 0; i < tm.alpha().length; i++) { System.out.print(tm.alpha()[i]); if (i + 1 != tm.alpha().length) { System.out.print(","); } } System.out.print("),c("); for (int i = 0; i < tm.beta().length; i++) { System.out.print(tm.beta()[i]); if (i + 1 != tm.beta().length) { System.out.print(","); } } System.out.println("))"); }
double lambda1, lambda2; lambda1 = lambda2 = tridiag.alpha()[0] + tridiag.alpha()[1]; double t = Math.sqrt((tridiag.alpha()[0] + tridiag.alpha()[1]) * (tridiag.alpha()[0] + tridiag.alpha()[1]) - 4.0 * (tridiag.alpha()[0] * tridiag.alpha()[1] - tridiag.beta()[0] * tridiag.beta()[0])); lambda1 = (lambda1 + t) / 2.0; lambda2 = (lambda2 - t) / 2.0; double u = (lambda1 + tridiag.alpha()[1]) / tridiag.beta()[0]; double c = Math.sqrt(1.0 / (1.0 + u * u)); double s = c / u; if (Math.abs(tridiag.beta()[i]) < epsilon) { if (!qFound) { q++; wilkinsonShift(tridiag.alpha(), tridiag.beta(), p, n - p - q, givensSeq); } else { q++;