public class Hilb {
public static void MathOne(double[][] a, int n) {
for (int k = 0; k
< n; k++) {
a[k][k] =
Math.sqrt(a[k][k]);
for (int i =
k + 1; i < n; i++)
a[i][k] /= a[k][k];
for (int j =
k + 1; j < n; j++)
for (int i = j; i < n; i++)
a[i][j] -= a[i][k] * a[j][k];
}
}
public static void MathTwo(double[][] a, double[] b, double[]
result, int n) {
MathOne(a, n);
for (int i = 0; i
< n; i++)
result[i] =
b[i];
for (int j = 0; j
< n; j++) {
if (a[j][j]
== 0) {
System.out.println("ErrorOne");
System.exit(0);
}
result[j] /=
a[j][j];
for (int i =
j + 1; i < n; i++)
result[i] -= a[i][j] * result[j];
}
for (int j = n - 1; j
>= 0; j--) {
if (a[j][j]
== 0) {
System.out.println("ErrorTwo");
System.exit(0);
}
result[j] /=
a[j][j];
for (int i =
0; i < j - 1; i++) {
result[i] -= a[j][i] * result[j];
}
}
System.out.println("**********************************************");
System.out.println("This is
L:");
for (int i = 0; i
< n; i++) {
for (int j =
0; j <=i; j++)
System.out.print(a[i][j] + "\t");
System.out.println();
}
}
public static void fun(double[][] a, double[] b, int n) {
for (int i = 0; i
< n; i++)
for (int j =
0; j <= i; j++)
a[i][j] = 1.0 / (i + j + 1);
for (int i = 0; i
< n; i++) {
b[i] =
0;
for (int j =
n + i; j > i; j--)
b[i] += 1.0 / j;
}
System.out.println("**********************************************");
System.out.println("This is
a:");
for (int i = 0; i
< n; i++) {
for (int j =
0; j <= i; j++)
System.out.print(a[i][j] + "\t");
System.out.println();
}
System.out.println("**********************************************");
System.out.println("This is
b:");
for (int i = 0; i
< n; i++)
System.out.println(b[i]);
}
public static void main(String[] args) {
System.out.println("Please
enter the value of n:");
int
m=SavitchIn.readLineInt();
int n = m;
double[][] a = new
double[n][n];
double[] b = new
double[n];
double[][] c = new
double[n][n];
fun(a, b, n);
for (int i = 0; i
< n; i++)
for (int j =
0; j < n; j++)
c[i][j] = a[i][j];
double[] r = new
double[n];
double[] result = new
double[n];
MathTwo(a, b, result,
n);
System.out.println("**********************************************");
System.out.println("Solution:");
for (int i = 0; i
< n; i++)
System.out.println(result[i]);
for (int i = 0; i
< n; i++) {
double x =
0;
for (int j =
0; j < n; j++)
x += c[i][j] * result[j];
r[i] = b[i]
- x;
}
System.out.println("**********************************************");
System.out.println("Residual:");
for (int i = 0; i
< n; i++)
System.out.println(r[i]);
}
}