private static void test04() //****************************************************************************80 // // Purpose: // // TEST04 tests L1DD_INVERSE and similar routines. // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 30 October 2013 // // Author: // // John Burkardt // { const int n = 5; int test; Console.WriteLine(""); Console.WriteLine("TEST04"); Console.WriteLine(" The inverse of a full-storage matrix is returned by:"); Console.WriteLine(" L1DD_INVERSE: Dirichlet/Dirichlet BC;"); Console.WriteLine(" L1DN_INVERSE: Dirichlet/Neumann BC;"); Console.WriteLine(" L1ND_INVERSE: Neumann/Dirichlet BC;"); for (test = 1; test <= 2; test++) { double h = test switch { 1 => 1.0, _ => 1.0 / (n + 1) }; Console.WriteLine(""); Console.WriteLine(" Using spacing H = " + h + ""); double[] l = L1DD.l1dd(n, h); typeMethods.r8mat_print(n, n, l, " L1DD:"); double[] linv = L1DD.l1dd_inverse(n, h); typeMethods.r8mat_print(n, n, linv, " L1DD_INVERSE:"); double err = Inverse.inverse_error(n, l, linv); Console.WriteLine(""); Console.WriteLine(" L1DD inverse error = " + err + ""); l = L1DN.l1dn(n, h); typeMethods.r8mat_print(n, n, l, " L1DN:"); linv = L1DN.l1dn_inverse(n, h); typeMethods.r8mat_print(n, n, linv, " L1DN_INVERSE:"); err = Inverse.inverse_error(n, l, linv); Console.WriteLine(""); Console.WriteLine(" L1DN inverse error = " + err + ""); l = L1ND.l1nd(n, h); typeMethods.r8mat_print(n, n, l, " L1ND:"); linv = L1ND.l1nd_inverse(n, h); typeMethods.r8mat_print(n, n, linv, " L1ND_INVERSE:"); err = Inverse.inverse_error(n, l, linv); Console.WriteLine(""); Console.WriteLine(" L1ND inverse error = " + err + ""); } }