コード例 #1
0
ファイル: Program.cs プロジェクト: sakovski/Studies-PL-
        private static void performGaussianFullpivotingOnFraction(MyMatrix <Fraction> matrix, TextWriter timeWriter)
        {
            matrix.printMatrix();
            var watch = System.Diagnostics.Stopwatch.StartNew();

            matrix.gaussianEliminationCompletePivoting();
            watch.Stop();
            matrix.printVectorX();
            double elapsedMs = watch.Elapsed.TotalMilliseconds;

            Console.WriteLine(elapsedMs);
            timeWriter.Write(elapsedMs);
            timeWriter.Write(";");
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: sakovski/Studies-PL-
 public static MyMatrix <T> operator +(MyMatrix <T> x, MyMatrix <T> y)
 {
     if (x._rows == y._rows && x._columns == y._columns)
     {
         MyMatrix <T> result = new MyMatrix <T>(x._rows, x._columns);
         for (int i = 0; i < result._rows; ++i)
         {
             for (int j = 0; j < result._columns; ++j)
             {
                 result[i, j] = (dynamic)x[i, j] + y[i, j];
             }
         }
         return(result);
     }
     else
     {
         throw new ArgumentException("Matrixes don`t match operator+ requirements!");
     }
 }
コード例 #3
0
ファイル: Program.cs プロジェクト: sakovski/Studies-PL-
        private static void performThirdOperationOnMyFraction(MyMatrix <Fraction> matrixA, MyMatrix <Fraction> matrixB, MyMatrix <Fraction> matrixC, TextWriter timeWriter)
        {
            matrixA.printMatrix();
            Console.WriteLine("*************");
            matrixB.printMatrix();
            Console.WriteLine("**************");
            matrixC.printMatrix();
            Console.WriteLine("==============");
            var watch = System.Diagnostics.Stopwatch.StartNew();
            MyMatrix <Fraction> matrixTemp = matrixB * matrixC;

            matrixTemp = matrixA * matrixTemp;
            watch.Stop();
            double elapsedMs = watch.Elapsed.TotalMilliseconds;

            matrixTemp.printMatrix();
            Console.WriteLine(elapsedMs);
            timeWriter.Write(elapsedMs);
            timeWriter.Write(";");
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: sakovski/Studies-PL-
        private static void performFirstOperationOnMyFraction(MyMatrix <Fraction> matrix, TextWriter timeWriter)
        {
            matrix.printMatrix();
            Console.WriteLine("***************");
            matrix.printVectorB();
            Console.WriteLine("==============");
            Fraction[] vector;
            var        watch = System.Diagnostics.Stopwatch.StartNew();

            vector = matrix * matrix.VectorB;
            watch.Stop();
            double elapsedMs = watch.Elapsed.TotalMilliseconds;

            foreach (Fraction element in vector)
            {
                Console.WriteLine(element);
            }
            Console.WriteLine(elapsedMs);
            timeWriter.Write(elapsedMs);
            timeWriter.Write(";");
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: sakovski/Studies-PL-
 public static MyMatrix <T> operator *(MyMatrix <T> x, MyMatrix <T> y)
 {
     if (x._columns == y._rows)
     {
         MyMatrix <T> result = new MyMatrix <T>(x._columns, y._rows);
         for (int i = 0; i < y._rows; i++)
         {
             for (int j = 0; j < y._columns; j++)
             {
                 for (int k = 0; k < y._rows; k++)
                 {
                     result[i, j] += (dynamic)x[i, k] * y[k, j];
                 }
             }
         }
         return(result);
     }
     else
     {
         throw new ArgumentException("Matrixes don`t match operator* requirements!");
     }
 }
コード例 #6
0
ファイル: Program.cs プロジェクト: sakovski/Studies-PL-
        private static void performSecondOperationOnDouble(MyMatrix <double> matrixA, MyMatrix <double> matrixB, MyMatrix <double> matrixC, TextWriter timeWriter)
        {
            matrixA.printMatrix();
            Console.WriteLine("+++++++++++++");
            matrixB.printMatrix();
            Console.WriteLine("+++++++++++++");
            matrixC.printMatrix();
            Console.WriteLine("************");
            matrixA.printVectorB();
            Console.WriteLine("==============");
            var watch = System.Diagnostics.Stopwatch.StartNew();
            MyMatrix <double> matrixTemp = matrixA + matrixB;

            matrixTemp = matrixTemp + matrixC;
            double[] vector = matrixTemp * matrixA.VectorB;
            watch.Stop();
            double elapsedMs = watch.Elapsed.TotalMilliseconds;

            foreach (double element in vector)
            {
                Console.WriteLine(element);
            }
            Console.WriteLine(elapsedMs);
            timeWriter.Write(elapsedMs);
            timeWriter.Write(";");
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: sakovski/Studies-PL-
        static void Main(string[] args)
        {
            using (TextReader tw = File.OpenText("daneFloat.txt"))
            {
                TextWriter czasyFloatWriter = new StreamWriter("czasyMojeFloat.csv");

                for (int i = 2; i <= 29; i++)
                {
                    int size = Int32.Parse(tw.ReadLine());

                    MyMatrix <float> matrixA = new MyMatrix <float>(size, size);
                    for (int j = 0; j < size; j++)
                    {
                        string   row    = tw.ReadLine();
                        string[] values = row.Split(null);
                        for (int k = 0; k < size; k++)
                        {
                            matrixA[j, k] = float.Parse(values[k], CultureInfo.InvariantCulture);
                        }
                    }
                    tw.ReadLine();

                    MyMatrix <float> matrixB = new MyMatrix <float>(size, size);
                    for (int j = 0; j < size; j++)
                    {
                        string   row    = tw.ReadLine();
                        string[] values = row.Split(null);
                        for (int k = 0; k < size; k++)
                        {
                            matrixB[j, k] = float.Parse(values[k], CultureInfo.InvariantCulture);
                        }
                    }
                    tw.ReadLine();

                    MyMatrix <float> matrixC = new MyMatrix <float>(size, size);
                    for (int j = 0; j < size; j++)
                    {
                        string   row    = tw.ReadLine();
                        string[] values = row.Split(null);
                        for (int k = 0; k < size; k++)
                        {
                            matrixC[j, k] = float.Parse(values[k], CultureInfo.InvariantCulture);
                        }
                    }
                    tw.ReadLine();

                    float[]  VectorB = new float[size];
                    string   vecB    = tw.ReadLine();
                    string   vecX    = tw.ReadLine();
                    string[] valuesB = vecB.Split(null);
                    for (int k = 0; k < size; k++)
                    {
                        matrixA.VectorB[k] = float.Parse(valuesB[k], CultureInfo.InvariantCulture);
                    }

                    performFirstOperationOnFloat(matrixA, czasyFloatWriter);
                    performSecondOperationOnFloat(matrixA, matrixB, matrixC, czasyFloatWriter);
                    performThirdOperationOnFloat(matrixA, matrixB, matrixC, czasyFloatWriter);
                    performGaussianpivotingOnFloat(matrixA, czasyFloatWriter);
                    performGaussianPartialpivotingOnFloat(matrixA, czasyFloatWriter);
                    performGaussianFullpivotingOnFloat(matrixA, czasyFloatWriter);
                    czasyFloatWriter.Write("\r\n");
                }
                czasyFloatWriter.Close();
            }

            using (TextReader tw = File.OpenText("daneDouble.txt"))
            {
                TextWriter czasyDoubleWriter = new StreamWriter("czasyMojeDouble.csv");

                for (int i = 2; i <= 29; i++)
                {
                    int size = int.Parse(tw.ReadLine());

                    MyMatrix <double> matrixA = new MyMatrix <double>(size, size);
                    for (int j = 0; j < size; j++)
                    {
                        string   row    = tw.ReadLine();
                        string[] values = row.Split(null);
                        for (int k = 0; k < size; k++)
                        {
                            matrixA[j, k] = Double.Parse(values[k], CultureInfo.InvariantCulture);
                        }
                    }
                    tw.ReadLine();

                    MyMatrix <double> matrixB = new MyMatrix <double>(size, size);
                    for (int j = 0; j < size; j++)
                    {
                        string   row    = tw.ReadLine();
                        string[] values = row.Split(null);
                        for (int k = 0; k < size; k++)
                        {
                            matrixB[j, k] = Double.Parse(values[k], CultureInfo.InvariantCulture);
                        }
                    }
                    tw.ReadLine();

                    MyMatrix <double> matrixC = new MyMatrix <double>(size, size);
                    for (int j = 0; j < size; j++)
                    {
                        string   row    = tw.ReadLine();
                        string[] values = row.Split(null);
                        for (int k = 0; k < size; k++)
                        {
                            matrixC[j, k] = Double.Parse(values[k], CultureInfo.InvariantCulture);
                        }
                    }
                    tw.ReadLine();

                    double[] VectorB = new double[size];
                    string   vecB    = tw.ReadLine();
                    string   vecX    = tw.ReadLine();
                    string[] valuesB = vecB.Split(null);
                    for (int k = 0; k < size; k++)
                    {
                        matrixA.VectorB[k] = Double.Parse(valuesB[k], CultureInfo.InvariantCulture);
                    }


                    performFirstOperationOnDouble(matrixA, czasyDoubleWriter);
                    performSecondOperationOnDouble(matrixA, matrixB, matrixC, czasyDoubleWriter);
                    performThirdOperationOnDouble(matrixA, matrixB, matrixC, czasyDoubleWriter);
                    performGaussianpivotingOnDouble(matrixA, czasyDoubleWriter);
                    performGaussianPartialpivotingOnDouble(matrixA, czasyDoubleWriter);
                    performGaussianFullpivotingOnDouble(matrixA, czasyDoubleWriter);
                    czasyDoubleWriter.Write("\r\n");
                }
                czasyDoubleWriter.Close();
            }

            using (TextReader tw = File.OpenText("daneFraction.txt"))
            {
                TextWriter czasyFractionWriter = new StreamWriter("czasyMojeFraction.csv");

                for (int i = 2; i <= 29; i++)
                {
                    int size = Int32.Parse(tw.ReadLine());

                    MyMatrix <Fraction> matrixA = new MyMatrix <Fraction>(size, size);
                    for (int j = 0; j < size; j++)
                    {
                        string   row    = tw.ReadLine();
                        string[] values = row.Split(null);
                        for (int k = 0; k < size; k++)
                        {
                            string[] fraction = values[k].Split('/');
                            matrixA[j, k] = new Fraction(int.Parse(fraction[0]), int.Parse(fraction[1]));
                        }
                    }
                    tw.ReadLine();

                    MyMatrix <Fraction> matrixB = new MyMatrix <Fraction>(size, size);
                    for (int j = 0; j < size; j++)
                    {
                        string   row    = tw.ReadLine();
                        string[] values = row.Split(null);
                        for (int k = 0; k < size; k++)
                        {
                            string[] fraction = values[k].Split('/');
                            matrixB[j, k] = new Fraction(int.Parse(fraction[0]), int.Parse(fraction[1]));
                        }
                    }
                    tw.ReadLine();

                    MyMatrix <Fraction> matrixC = new MyMatrix <Fraction>(size, size);
                    for (int j = 0; j < size; j++)
                    {
                        string   row    = tw.ReadLine();
                        string[] values = row.Split(null);
                        for (int k = 0; k < size; k++)
                        {
                            string[] fraction = values[k].Split('/');
                            matrixC[j, k] = new Fraction(int.Parse(fraction[0]), int.Parse(fraction[1]));
                        }
                    }
                    tw.ReadLine();

                    double[] VectorB = new double[size];
                    string   vecB    = tw.ReadLine();
                    string   vecX    = tw.ReadLine();
                    string[] valuesB = vecB.Split(null);
                    for (int k = 0; k < size; k++)
                    {
                        string[] fraction = valuesB[k].Split('/');
                        matrixA.VectorB[k] = new Fraction(int.Parse(fraction[0]), int.Parse(fraction[1]));
                    }

                    performFirstOperationOnMyFraction(matrixA, czasyFractionWriter);
                    performSecondOperationOnMyFraction(matrixA, matrixB, matrixC, czasyFractionWriter);
                    performThirdOperationOnMyFraction(matrixA, matrixB, matrixC, czasyFractionWriter);
                    performGaussianpivotingOnFraction(matrixA, czasyFractionWriter);
                    performGaussianPartialpivotingOnFraction(matrixA, czasyFractionWriter);
                    performGaussianFullpivotingOnFraction(matrixA, czasyFractionWriter);
                    czasyFractionWriter.Write("\r\n");
                }
                czasyFractionWriter.Close();
            }


            Console.WriteLine("TESTS FINISHED");
            Console.ReadKey();
        }