コード例 #1
0
    public static void Test()
    {
        int blocks = 4, order = 3;

        //solve linear system using C# classes
        {
            try
            {
                BlockMatrix   b     = new BlockMatrix(blocks, order);
                List <double> diag1 = new List <double> {
                    1, 2, 3
                };
                List <double> diag2 = new List <double> {
                    3, 4, 5
                };
                List <double> diag3 = new List <double> {
                    2, 5, 11
                };
                List <double> diag4 = new List <double> {
                    6, 2, 8
                };

                DiagMatrix        d1       = new DiagMatrix(order, diag1);
                DiagMatrix        d2       = new DiagMatrix(order, diag2);
                DiagMatrix        d3       = new DiagMatrix(order, diag3);
                DiagMatrix        d4       = new DiagMatrix(order, diag4);
                List <DiagMatrix> mainDiag = new List <DiagMatrix> {
                    d1, d2, d1, d2
                };
                List <DiagMatrix> upDiag = new List <DiagMatrix> {
                    d3, d4, d3
                };
                List <DiagMatrix> downDiag = new List <DiagMatrix> {
                    null, d4, d3, d4
                };

                b.setMainDiag(mainDiag);
                b.setUpDiag(upDiag);
                b.setDownDiag(downDiag);

                List <double> f1 = new List <double> {
                    5, 6, 7
                };
                List <List <double> > f = new List <List <double> > {
                    f1, f1, f1, f1
                };

                StreamWriter          sw       = new StreamWriter("outSharp.txt");
                List <List <double> > solution = b.solveAndSave(f, sw);

                sw.WriteLine("BlockMatrix * solution: \n");
                List <List <double> > f_new = b * solution;
                foreach (List <double> list in f_new)
                {
                    foreach (double elem in list)
                    {
                        sw.Write(elem + " ");
                    }
                }
                sw.WriteLine();
                sw.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Ошибка в тесте на C#: " + ex);
            }
        }

        //using C++ function from DLL
        {
            try
            {
                double[] mainDiag = new double[] { 1, 2, 3, 3, 4, 5, 1, 2, 3, 3, 4, 5 };
                double[] upDiag   = new double[] { 2, 5, 11, 6, 2, 8, 2, 5, 11 };
                double[] downDiag = new double[] { 6, 2, 8, 2, 5, 11, 6, 2, 8 };
                double[] f        = new double[] { 5, 6, 7, 5, 6, 7, 5, 6, 7, 5, 6, 7 };
                double[] solution = new double[12];
                double   time     = 0;
                GlobalExportFunction(mainDiag, upDiag, downDiag, f, solution, blocks, order, ref time, "OutPlus.txt", true);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Ошибка в тесте на C++: " + ex);
            }
        }
    }