Exemplo n.º 1
0
    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 + "");
        }
    }