public void CheckGaussWithRowChoiceForSquareMatrix()
        {
            double[,] table = { { 4, -2, 4, -2 }, { 3, 1, 4, 2 }, { 2, 4, 2, 1 }, { 2, -2, 4, 2 } };
            double[] bVector = { 8, 7, 10, 2 };

            MyMatrix doubleMatrix = new MyMatrix(4, 4);

            doubleMatrix.ComplementMatrix(table);
            double[] xVector = doubleMatrix.GaussWithRowChoice(bVector, true);
            double[] expect  = { -1, 2, 3, -2 };

            Assert.Equal(expect, xVector);
        }
示例#2
0
 public static void WriteVectorWithoutZero(double[] vector)
 {
     using (System.IO.StreamWriter file =
                new System.IO.StreamWriter(@"C:\Users\Patryk\Desktop\Data\VectorWithoutZeros.txt", true))
     {
         for (int i = 0; i < vector.Length; i++)
         {
             if (!MyMatrix.CheckIsDoubleZero(vector[i]))
             {
                 file.WriteLine(String.Format("{0} {1:N16}", i, vector[i]));
             }
         }
     }
 }
示例#3
0
 private static void WriteMatixWithoutZerosToFile(double[,] test)
 {
     using (System.IO.StreamWriter file =
                new System.IO.StreamWriter(@"C:\Users\Patryk\Desktop\Data\DataRangeNew.txt", true))
     {
         for (int i = 0; i < test.GetLength(0); i++)
         {
             if (!MyMatrix.CheckIsDoubleZero(test[i, 2]))
             {
                 file.Write(String.Format("{0} {1} {2:N16}", test[i, 0], test[i, 1], test[i, 2]));
                 file.Write("\n");
             }
         }
     }
 }
示例#4
0
        public static double[] ComputeAll()
        {
            Stan[] tableOfStans    = CreateTableOfStans();
            int    numberOfColumns = tableOfStans.Length;

            FillTableOfStans(tableOfStans);

            double[,] tableForMatrix = new double[numberOfColumns, numberOfColumns];
            double[] bVector      = new double[numberOfColumns];
            double[] resultVector = new double[3];

            FillTableForMatrixAndBVectorWithZeros(tableForMatrix, bVector, numberOfColumns);
            FillTableForMatrixWithStans(tableOfStans, numberOfColumns, tableForMatrix, bVector);

            MyMatrix matrix = new MyMatrix(numberOfColumns, numberOfColumns);

            matrix.ComplementMatrix(tableForMatrix);
            matrix.WriteMatrixToFile();
            WriteVectorToFile((double[])bVector.Clone());

            var stopwatch = new Stopwatch();

            stopwatch.Reset();
            stopwatch.Start();
            double[] gVector = matrix.GaussWithRowChoice((double[])bVector.Clone());
            stopwatch.Stop();
            gaussTime       = stopwatch.Elapsed.TotalMilliseconds;
            resultVector[0] = gVector[0];

            stopwatch.Reset();
            stopwatch.Start();
            double[] jVector = matrix.Jacobi((double[])bVector.Clone(), 100);
            stopwatch.Stop();
            jacobiTime      = stopwatch.Elapsed.TotalMilliseconds;
            resultVector[1] = jVector[0];
            stopwatch.Reset();
            stopwatch.Start();
            double[] sVector = matrix.Seidel((double[])bVector.Clone(), 100);
            stopwatch.Stop();
            resultVector[2] = sVector[0];
            seidelTime      = stopwatch.Elapsed.TotalMilliseconds;
            return(resultVector);
        }
示例#5
0
        public static double[] ComputeAll()
        {
            Stan[] tableOfStans    = CreateTableOfStans();
            int    numberOfColumns = tableOfStans.Length;

            var stopwatch = new Stopwatch();

            stopwatch.Reset();
            stopwatch.Start();
            FillTableOfStans(tableOfStans);

            double[,] tableForMatrix = new double[numberOfColumns, numberOfColumns];
            double[] bVector      = new double[numberOfColumns];
            double[] resultVector = new double[3];

            double[,] matrixPoints = new double[numberOfColumns * Stan.numberOfCubeWalls + numberOfColumns, 3];
            double[,] vectorPoints = new double[numberOfColumns, 3];

            FillTableForMatrixAndBVectorWithZeros(tableForMatrix, bVector, numberOfColumns);
            FillTableForMatrixWithStans(tableOfStans, numberOfColumns, tableForMatrix, bVector, matrixPoints, vectorPoints);

            MyMatrix matrix = new MyMatrix(numberOfColumns, numberOfColumns);

            matrix.ComplementMatrix(tableForMatrix);

            buildMatrixTime = stopwatch.Elapsed.TotalMilliseconds;

            matrix.WriteMatrixToFile();
            WriteVectorToFile((double[])bVector.Clone());
            MyMatrix.PrintVector(bVector);
            WriteVectorWithoutZero((double[])bVector.Clone());

            stopwatch.Reset();
            stopwatch.Start();
            double[] sVector = matrix.Seidel((double[])bVector.Clone(), 100);
            stopwatch.Stop();
            resultVector[2] = sVector[0];
            seidelTime      = stopwatch.Elapsed.TotalMilliseconds;
            return(resultVector);
        }
        public void CheckSeidel()
        {
            double[,] table =
            {
                { 10.0,   -1,    2,  0 },
                {   -1, 11.0, -1.0,  3 },
                {  2.0, -1.0, 10.0, -1 },
                {    0,    3,   -1,  8 }
            };
            double[] bVector1      = { 6, 25.0, -11.0, 15 };
            MyMatrix doubleMatrix1 = new MyMatrix(4, 4);

            doubleMatrix1.ComplementMatrix(table);

            double[] xVector1 = doubleMatrix1.Seidel(bVector1, 5);

            double[] expect1 = { 1.0001, 2.0000, -1.0000, 1.0000 };


            Assert.Equal(expect1[0], Math.Round(xVector1[0], 4));
            Assert.Equal(expect1[1], Math.Round(xVector1[1], 4));
            Assert.Equal(expect1[2], Math.Round(xVector1[2], 4));
            Assert.Equal(expect1[3], Math.Round(xVector1[3], 4));
        }