Exemplo n.º 1
0
        /// <summary>
        /// 9. Создание комбинированной матрицы
        /// </summary>
        private static async Task SparseMatrixRepSeqCreateAndReadTests()
        {
            using (SparseMatrixRepSeq sparseMatrixRepSeq = new SparseMatrixRepSeq("9"))
            {
                await sparseMatrixRepSeq.ClearAsync();

                await sparseMatrixRepSeq.AddRowAsync(new double[] { 0.11, 1.11, 2.22, 0, 0, -5.55, 0, 0, -8.88, -9.99 });

                await sparseMatrixRepSeq.PrintMatrix();

                Console.WriteLine("-------------------\n");
                double[] seq0   = new double[] { -5.55, 0, 15, 211, 0.09 };
                var      tuple0 = await sparseMatrixRepSeq.AddRowsSequenceBandAsync(seq0,
                                                                                    5, 2, 15);

                await sparseMatrixRepSeq.PrintMatrix();

                Console.WriteLine("-------------------\n");
                double[] seq1   = new double[] { -1, -2, -3 };
                var      tuple1 = await sparseMatrixRepSeq.AddRowsSequenceAsync(seq1,
                                                                                new int[] { 1, 2 },
                                                                                new int[] { 1, 1 });

                await sparseMatrixRepSeq.PrintMatrix();
            }
            Console.WriteLine("---Successful end of method---");
        }
Exemplo n.º 2
0
        /// <summary>
        /// 3. Тестирование класса SparseMatrixRepSeq
        /// </summary>
        private static async Task CreateSparceMatrixRepSeqWith0Elements()
        {
            using (SparseMatrixRepSeq sparseMatrixRepSeq = new SparseMatrixRepSeq("3"))
            {
                Console.WriteLine(sparseMatrixRepSeq.ToString());
                Console.WriteLine(sparseMatrixRepSeq.GetPathToDescriptionFile);
                Console.WriteLine(sparseMatrixRepSeq.GetPathToDataFile);
                Console.WriteLine(sparseMatrixRepSeq.GetPathToRowIndexFile);
                Console.WriteLine(sparseMatrixRepSeq.GetPathToColIndexFile);

                // 0. Очистка матрицы
                Console.WriteLine("0. Очистка матрицы");
                await sparseMatrixRepSeq.ClearAsync();

                await sparseMatrixRepSeq.PrintMatrixDescription();

                Console.WriteLine();

                #region Добавление отдельных строк

                // Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
                Console.WriteLine("Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |");
                // Добавление строки index:              0    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
                //                   value:              0    | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
                await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });

                await sparseMatrixRepSeq.PrintMatrixDescription();

                await sparseMatrixRepSeq.PrintRowsFromNnzSeparateElements();

                Console.WriteLine();

                // Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
                Console.WriteLine("Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |");
                // Добавление строки index:              0    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
                //                   value:              0    | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
                await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });

                await sparseMatrixRepSeq.PrintMatrixDescription();

                await sparseMatrixRepSeq.PrintRowsFromNnzSeparateElements();

                Console.WriteLine();

                // Добавление строки  | 0.11 | 1.11 | 2.22 | 0 | 0 | -5.55 | 0 | 0 | -8.88 | -9.99 |
                Console.WriteLine("1. Добавление строки  | 0.11 | 1.11 | 2.22 | 0 | 0 | -5.55 | 0 | 0 | -8.88 | -9.99 |");
                // Добавление строки index:              0    | 1    | 2    | 3 | 4 |  5    | 6 | 7 |  8    |  9    |
                //                   value:              0.11 | 1.11 | 2.22 | 0 | 0 | -5.55 | 0 | 0 | -8.88 | -9.99 |
                await sparseMatrixRepSeq.AddRowAsync(new double[] { 0.11, 1.11, 2.22, 0, 0, -5.55, 0, 0, -8.88, -9.99 });

                await sparseMatrixRepSeq.PrintMatrixDescription();

                await sparseMatrixRepSeq.PrintRowsFromNnzSeparateElements();

                Console.WriteLine();

                // Добавление строки  | 0 | 0 | 2.55 | 0 | -1000 | 0 | 50.0001 | 0 | 0 | 0 |
                Console.WriteLine("Добавление строки  | 0 | 0 | 2.55 | 0 | -1000 | 0 | 50.01 | 0 | 0 | 0 |");
                // Добавление строки index:              0    | 1    | 2    | 3 | 4     | 5   |       6 | 7 | 8 | 9 |
                //                   value:              0    | 0    | 2.55 | 0 | -1000 | 0   | 50.01 | 0 | 0 | 0 |
                await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 0, 2.55, 0, -1000, 0, 50.01, 0, 0, 0 });

                await sparseMatrixRepSeq.PrintMatrixDescription();

                await sparseMatrixRepSeq.PrintRowsFromNnzSeparateElements();

                Console.WriteLine();

                // Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
                Console.WriteLine("Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |");
                // Добавление строки index:              0    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
                //                   value:              0    | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
                await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });

                await sparseMatrixRepSeq.PrintMatrixDescription();

                await sparseMatrixRepSeq.PrintRowsFromNnzSeparateElements();

                Console.WriteLine();


                // Добавление строки  | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
                Console.WriteLine("Добавление строки  | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |");
                // Добавление строки index:              | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
                //                   value:              | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
                await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 });

                await sparseMatrixRepSeq.PrintMatrixDescription();

                await sparseMatrixRepSeq.PrintRowsFromNnzSeparateElements();

                Console.WriteLine();

                sWatch.Start();
                int N = 100;
                for (int i = 0; i < N; i++)
                {
                    await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
                }
                sWatch.Stop();
                Console.WriteLine($"Время добавления {N} строк с 10 ненулевыми элементами: { sWatch.ElapsedMilliseconds.ToString()} мс");

                sWatch.Start();
                N = 100;
                for (int i = 0; i < N; i++)
                {
                    await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 });
                }
                sWatch.Stop();
                Console.WriteLine($"Время добавления {N} строк с 20 ненулевыми элементами: { sWatch.ElapsedMilliseconds.ToString()} мс");

                sWatch.Restart();
                N = 1000;
                for (int i = 0; i < N; i++)
                {
                    await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 });
                }
                sWatch.Stop();
                Console.WriteLine($"Время добавления {N} строк: { sWatch.ElapsedMilliseconds.ToString()} мс");
                #endregion
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Создание тестовой матрицы
        /// </summary>
        /// <param name="sparseMatrixRepSeq"></param>
        /// <returns></returns>
        private static async Task CreateTestMatrix(SparseMatrixRepSeq sparseMatrixRepSeq)
        {
            // Очистка матрицы
            await sparseMatrixRepSeq.ClearAsync();

            // Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
            Console.WriteLine("Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |");
            // Добавление строки index:              0    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
            //                   value:              0    | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
            await sparseMatrixRepSeq.AddRowAsync(new double[] { 0 }, 0);

            // Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
            Console.WriteLine("Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |");
            // Добавление строки index:              0    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
            //                   value:              0    | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
            await sparseMatrixRepSeq.AddRowAsync(new double[] { 0 }, 5);

            // Добавление строки  | 0.11 | 1.11 | 2.22 | 0 | 0 | -5.55 | 0 | 0 | -8.88 | -9.99 |
            Console.WriteLine("Добавление строки  | 0.11 | 1.11 | 2.22 | 0 | 0 | -5.55 | 0 | 0 | -8.88 | -9.99 |");
            // Добавление строки index:              0    | 1    | 2    | 3 | 4 |  5    | 6 | 7 |  8    |  9    |
            //                   value:              0.11 | 1.11 | 2.22 | 0 | 0 | -5.55 | 0 | 0 | -8.88 | -9.99 |
            await sparseMatrixRepSeq.AddRowAsync(new double[] { 0.11, 1.11, 2.22, 0, 0, -5.55, 0, 0, -8.88, -9.99 });

            // Добавление строки  | 0 | 0 | 2.55 | 0 | -1000 | 0 | 50.0001 | 0 | 0 | 0 |
            Console.WriteLine("Добавление строки  | 0 | 0 | 2.55 | 0 | -1000 | 0 | 50.01 | 0 | 0 | 0 |");
            // Добавление строки index:              0    | 1    | 2    | 3 | 4     | 5   |       6 | 7 | 8 | 9 |
            //                   value:              0    | 0    | 2.55 | 0 | -1000 | 0   | 50.01 | 0 | 0 | 0 |
            await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 0, 2.55, 0, -1000, 0, 50.01, 0, 0, 0 });


            // Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
            Console.WriteLine("Добавление строки  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |");
            // Добавление строки index:              0    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
            //                   value:              0    | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
            await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });



            // Добавление строки  | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
            Console.WriteLine("Добавление строки  | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |");
            // Добавление строки index:              | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
            //                   value:              | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
            await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 });

            // Добавление строки  | 0 | 1 | 2  |
            Console.WriteLine("Добавление строки  | 0 | 1 | 2  |");
            // Добавление строки index:              | 0 | 1 | 2 |
            //                   value:              | 0 | 1 | 2 |
            await sparseMatrixRepSeq.AddRowAsync(new double[] { 0, 1, 2 }, 5);

            // Добавление строки  | 0 |
            Console.WriteLine("Добавление строки  | 0 |");
            // Добавление строки index:              | 0 |
            //                   value:              | 0 |
            await sparseMatrixRepSeq.AddRowAsync(new double[] { 0 });

            await sparseMatrixRepSeq.PrintMatrixDescription();

            await sparseMatrixRepSeq.PrintRowsFromNnzSeparateElements();

            Console.WriteLine();
        }