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); }
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])); } } } }
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"); } } } }
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); }
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)); }