Example #1
0
#pragma warning disable CA1822  // Mark members as static
#pragma warning disable IDE0051 // Remove unused private members
        private void RunGauElim(Matrix mat1, Matrix mat2)
#pragma warning restore IDE0051 // Remove unused private members
#pragma warning restore CA1822  // Mark members as static
        {
            for (int i = 0; i < interval; i++)
            {
                _ = MatrixMethods.GaussianElimination(mat1, mat2);
            }
        }
Example #2
0
        public void GaussianEliminationTest()
        {
            var mat1 = new Matrix(new[, ] {
                { 1936.0 / 45, 692.0 / 15 },
                { 692.0 / 15, 324.0 / 5 }
            });
            var polyu       = KtPolynomial.Create(1);
            var poly1       = KtPolynomial.Create(0, 572.0 / 45, 0, -11.0 / 90);
            var poly2       = KtPolynomial.Create(-32.0 / 3, 932.0 / 45, -2, 2.0 / 45);
            var expression1 = new Expression(
                ((poly1, polyu), Limit.Create(0, 4)),
                ((poly2, polyu), Limit.Create(4, 9)),
                ((poly2, polyu), Limit.Create(9, 15)));
            var poly3       = KtPolynomial.Create(0, 63.0 / 5, 0, -1 / 15.0);
            var poly4       = KtPolynomial.Create(-243 / 2.0, 531.0 / 10, -9.0 / 2, 1.0 / 10);
            var expression2 = new Expression(
                ((poly3, polyu), Limit.Create(0, 4)),
                ((poly3, polyu), Limit.Create(4, 9)),
                ((poly4, polyu), Limit.Create(9, 15)));
            var mat2 = new Matrix(new[, ] {
                { expression1 }, { expression2 }
            });

            var actual = MatrixMethods.GaussianElimination(mat1, mat2);
            //GetEllapsedTime(mat1, mat2);
            var expPoly1a = KtPolynomial.Create(0, 2727.0 / 7420, 0, -109.0 / 14840);
            var expPoly1b = KtPolynomial.Create(-1944.0 / 1855, 8559.0 / 7420, -729.0 / 3710, 67.0 / 7420);
            var expPoly1c = KtPolynomial.Create(3159.0 / 424, -24921.0 / 14840, 351.0 / 2968, -39.0 / 14840);
            var expPoly2a = KtPolynomial.Create(0, -374.0 / 5565, 0, 187.0 / 44520);
            var expPoly2b = KtPolynomial.Create(1384.0 / 1855, -3488.0 / 5565, 519.0 / 3710, -83.0 / 11130);
            var expPoly2c = KtPolynomial.Create(-761.0 / 106, 22427.0 / 11130, -57.0 / 371, 19.0 / 5565);
            var expected1 = new Expression(
                ((expPoly1a, polyu), Limit.Create(0, 4)),
                ((expPoly1b, polyu), Limit.Create(4, 9)),
                ((expPoly1c, polyu), Limit.Create(9, 15)));
            var expected2 = new Expression(
                ((expPoly2a, polyu), Limit.Create(0, 4)),
                ((expPoly2b, polyu), Limit.Create(4, 9)),
                ((expPoly2c, polyu), Limit.Create(9, 15)));
            var expected = new Matrix(new[, ] {
                { expected1 }, { expected2 }
            });

            Assert.AreEqual(expected1, actual[0, 0]);
            Assert.AreEqual(expected2, actual[1, 0]);
            Assert.AreEqual(expected, actual);
        }
Example #3
0
        public void MatrixNotSquareExceptionTest()
        {
            var d = new double[, ]
            {
                { 0.0, 1.0, 1 },
                { 0, 1, 1 }
            };
            var e = new double[, ]
            {
                { 0.0, 1.0, 1 },
                { 0, 1, 1 }
            };
            var ex = Assert.ThrowsException <MatrixNotSquareExeption>(() =>
            {
                var x = MatrixMethods.GaussianElimination(new Matrix(d), new Matrix(e));
            }
                                                                      );

            Console.WriteLine(ex.Message);
        }
Example #4
0
#pragma warning disable IDE0051 // Remove unused private members
        private static void GetEllapsedTime(Matrix mat1, Matrix mat2)
#pragma warning restore IDE0051 // Remove unused private members
        {
            Console.WriteLine(DiagnosticsExtensions.ElapsedTime(() => { for (int i = 0; i < interval; i++)
                                                                        {
                                                                            var actual2 = MatrixMethods.GaussianElimination(mat1, mat2);
                                                                        }
                                                                }));
            Console.WriteLine(DiagnosticsExtensions.ElapsedTime(() => { for (int i = 0; i < interval; i++)
                                                                        {
                                                                            var actual2 = MatrixMethods.GaussianElimination2(mat1, mat2);
                                                                        }
                                                                }));
            Console.WriteLine(DiagnosticsExtensions.ElapsedTime(() => { for (int i = 0; i < interval; i++)
                                                                        {
                                                                            var actual2 = MatrixMethods.GaussianElimination2(mat1, mat2);
                                                                        }
                                                                }));
            Console.WriteLine(DiagnosticsExtensions.ElapsedTime(() => { for (int i = 0; i < interval; i++)
                                                                        {
                                                                            var actual1 = MatrixMethods.GaussianElimination(mat1, mat2);
                                                                        }
                                                                }));
            Console.WriteLine(DiagnosticsExtensions.ElapsedTime(() => { for (int i = 0; i < interval; i++)
                                                                        {
                                                                            var actual1 = MatrixMethods.GaussianElimination(mat1, mat2);
                                                                        }
                                                                }));
            Console.WriteLine(DiagnosticsExtensions.ElapsedTime(() => { for (int i = 0; i < interval; i++)
                                                                        {
                                                                            var actual2 = MatrixMethods.GaussianElimination2(mat1, mat2);
                                                                        }
                                                                }));
            Console.WriteLine(DiagnosticsExtensions.ElapsedTime(() => { for (int i = 0; i < interval; i++)
                                                                        {
                                                                            var actual2 = MatrixMethods.GaussianElimination2(mat1, mat2);
                                                                        }
                                                                }));
            Console.WriteLine(DiagnosticsExtensions.ElapsedTime(() => { for (int i = 0; i < interval; i++)
                                                                        {
                                                                            var actual1 = MatrixMethods.GaussianElimination(mat1, mat2);
                                                                        }
                                                                }));
            Console.WriteLine(DiagnosticsExtensions.ElapsedTime(() => { for (int i = 0; i < interval; i++)
                                                                        {
                                                                            var actual1 = MatrixMethods.GaussianElimination(mat1, mat2);
                                                                        }
                                                                }));
            Console.WriteLine(DiagnosticsExtensions.ElapsedTime(() => { for (int i = 0; i < interval; i++)
                                                                        {
                                                                            var actual2 = MatrixMethods.GaussianElimination2(mat1, mat2);
                                                                        }
                                                                }));
            Console.WriteLine(DiagnosticsExtensions.ElapsedTime(() => { for (int i = 0; i < interval; i++)
                                                                        {
                                                                            var actual2 = MatrixMethods.GaussianElimination2(mat1, mat2);
                                                                        }
                                                                }));
            Console.WriteLine(DiagnosticsExtensions.ElapsedTime(() => { for (int i = 0; i < interval; i++)
                                                                        {
                                                                            var actual1 = MatrixMethods.GaussianElimination(mat1, mat2);
                                                                        }
                                                                }));
        }