Beispiel #1
0
        public void EigenValsTest()
        {
            var matrix1 = new NRealMatrix(2, 2);
            matrix1[0, 0] = 1;
            matrix1[0, 1] = 2;
            matrix1[1, 0] = 3;
            matrix1[1, 1] = 4;

            var w = new MCJCMatrix(2, 2);
            var vl = new MCJCMatrix(2, 2);
            var vr = new MCJCMatrix(2, 2);

            var lib = new MLapackLib();

            lib.eigenVals(matrix1.ManagedMatrix, w, vl, vr);

            Console.WriteLine("w");
            PrintComplexMatrix(w);

            Console.WriteLine("vl");
            PrintComplexMatrix(vl);

            Console.WriteLine("vr");
            PrintComplexMatrix(vr);
        }
Beispiel #2
0
        public double SlezTestBig(int size)
        {
            var mat1 = new MCJCMatrix(size, size);
            var mat2 = new MCJCMatrix(size, size);

            var random = new Random();

            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    mat1.setAt(i, j, random.NextDouble(), 0);
                    mat2.setAt(i, j, random.NextDouble(), 0);
                }
            }

            var time = DateTime.Now;
            var lib  = new MLapackLib();

            var result = new MCJCMatrix(size, size);

            Console.WriteLine("multiplication started...");


            lib.solveSLE(mat1, mat2, result);


            Console.WriteLine("multiplication completed.");

            double ms = (DateTime.Now - time).TotalMilliseconds;

            Console.WriteLine("time = " + ms);
            return(ms);
        }
Beispiel #3
0
        public double SvdzTestBig(int size)
        {
            var mat1 = new MCJCMatrix(size, size);

            var random = new Random();

            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    mat1.setAt(i, j, random.NextDouble(), 0);
                }
            }

            var lib = new MLapackLib();

            Console.WriteLine("multiplication started...");

            var s  = new MCJRMatrix();
            var u  = new MCJCMatrix();
            var vt = new MCJCMatrix();

            var time = DateTime.Now;

            lib.SVDDecomposition(mat1, s, u, vt);

            double ms = (DateTime.Now - time).TotalMilliseconds;

            Console.WriteLine("time = " + ms);
            return(ms);
        }
Beispiel #4
0
        public void EigenValsTest()
        {
            var matrix1 = new NRealMatrix(2, 2);

            matrix1[0, 0] = 1;
            matrix1[0, 1] = 2;
            matrix1[1, 0] = 3;
            matrix1[1, 1] = 4;

            var w  = new MCJCMatrix(2, 2);
            var vl = new MCJCMatrix(2, 2);
            var vr = new MCJCMatrix(2, 2);

            var lib = new MLapackLib();

            lib.eigenVals(matrix1.ManagedMatrix, w, vl, vr);

            Console.WriteLine("w");
            PrintComplexMatrix(w);

            Console.WriteLine("vl");
            PrintComplexMatrix(vl);

            Console.WriteLine("vr");
            PrintComplexMatrix(vr);
        }
Beispiel #5
0
        public static NComplexMatrix operator *(NComplexMatrix a, NComplexMatrix b)
        {
            var c = new MCJCMatrix();

            NLapackSingleton.Instance.multiply(a.ManagedMatrix, b.ManagedMatrix, c);
            return(new NComplexMatrix(c));
        }
Beispiel #6
0
        public void PrintComplexMatrix(MCJCMatrix matrix)
        {
            int cols = matrix.cols();
            int rows = matrix.rows();

            for (int i = 0; i < rows; i++)
            {
                for (int j = 0; j < cols; j++)
                {
                    double re = matrix.getAt(i, j);
                    double im = matrix.getAtIm(i, j);

                    Console.Write("({0};{1})  ", re, im);
                }
                Console.WriteLine();
            }
        }
Beispiel #7
0
        public void SlezTest()
        {
            const int size = 2;
            var       mat1 = new MCJCMatrix(2, 2);
            var       mat2 = new MCJCMatrix(2, 2);

            mat1.setAt(0, 0, 1, 1);
            mat1.setAt(0, 1, 2, 2);
            mat1.setAt(1, 0, 3, 3);
            mat1.setAt(1, 1, 4, 4);

            mat2.setAt(0, 0, 1, 0);
            mat2.setAt(0, 1, 2, 0);
            mat2.setAt(1, 0, 3, 0);
            mat2.setAt(1, 1, 4, 0);


            Console.WriteLine(new NComplexMatrix(mat1));

            /* mat1.setAt(0, 0, 1);
             * mat1.setAt(0, 1, 2);
             * mat1.setAt(1, 0, 3);
             * mat1.setAt(1, 1, 4);
             *
             * mat2.setAt(0, 0, 1);
             * mat2.setAt(0, 1, 2);
             * mat2.setAt(1, 0, 3);
             * mat2.setAt(1, 1, 4);*/

            var time = DateTime.Now;
            var lib  = new MLapackLib();

            var result = new MCJCMatrix(size, size);

            lib.solveSLE(mat1, mat2, result);

            Console.WriteLine(new NComplexMatrix(result));

            double ms = (DateTime.Now - time).TotalMilliseconds;

            Console.WriteLine("time = " + ms);
        }
Beispiel #8
0
        public void TestMultZ()
        {
            var lib = new MLapackLib();

            var mat1 = new MCJCMatrix(2, 2);

            mat1.setAt(0, 0, 1, 0);
            mat1.setAt(0, 1, 2, 0);
            mat1.setAt(1, 0, 3, 0);
            mat1.setAt(1, 1, 4, 0);

            var mat2 = new MCJCMatrix(2, 2);

            mat2.setAt(0, 0, 1, 0);
            mat2.setAt(0, 1, 2, 0);
            mat2.setAt(1, 0, 3, 0);
            mat2.setAt(1, 1, 4, 0);

            var mat3 = new MCJCMatrix();

            lib.multiply(mat1, mat2, mat3);
            Console.WriteLine(new NComplexMatrix(mat3));
        }
Beispiel #9
0
        public double TestMultZBig(int size)
        {
            var mat1 = new MCJCMatrix(size, size);
            var mat2 = new MCJCMatrix(size, size);

            var random = new Random();

            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    mat1.setAt(i, j, random.NextDouble(), random.NextDouble());
                    mat2.setAt(i, j, random.NextDouble(), random.NextDouble());
                }
            }



            var mat3 = new MCJCMatrix();

            var time = DateTime.Now;

            Console.WriteLine("multiplication started...");

            var lib = new MLapackLib();

            lib.multiply(mat1, mat2, mat3);

            double elapsedTime = (DateTime.Now - time).TotalMilliseconds;

            Console.WriteLine("multiplication completed.");

            Console.WriteLine("size = " + size + "time = " + (DateTime.Now - time).TotalMilliseconds);

            return(elapsedTime);
        }
Beispiel #10
0
        public void TestMultZ()
        {
            var lib = new MLapackLib();

            var mat1 = new MCJCMatrix(2, 2);
            mat1.setAt(0, 0, 1, 0);
            mat1.setAt(0, 1, 2 ,0);
            mat1.setAt(1, 0, 3, 0);
            mat1.setAt(1, 1, 4, 0);

            var mat2 = new MCJCMatrix(2, 2);
            mat2.setAt(0, 0, 1, 0);
            mat2.setAt(0, 1, 2, 0);
            mat2.setAt(1, 0, 3, 0);
            mat2.setAt(1, 1, 4, 0);

            var mat3 = new MCJCMatrix();
            lib.multiply(mat1, mat2, mat3);
            Console.WriteLine(new NComplexMatrix(mat3));
        }
Beispiel #11
0
        public double TestMultZBig(int size)
        {
            var mat1 = new MCJCMatrix(size, size);
            var mat2 = new MCJCMatrix(size, size);

            var random = new Random();

            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    mat1.setAt(i, j, random.NextDouble(), random.NextDouble());
                    mat2.setAt(i, j, random.NextDouble(), random.NextDouble());
                }
            }

            var mat3 = new MCJCMatrix();

            var time = DateTime.Now;
            Console.WriteLine("multiplication started...");

            var lib = new MLapackLib();

            lib.multiply(mat1, mat2, mat3);

            double elapsedTime = (DateTime.Now - time).TotalMilliseconds;

            Console.WriteLine("multiplication completed.");

            Console.WriteLine("size = " + size + "time = " + (DateTime.Now - time).TotalMilliseconds);

            return elapsedTime;
        }
Beispiel #12
0
        public double SvdzTestBig(int size)
        {
            var mat1 = new MCJCMatrix(size, size);

            var random = new Random();

            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    mat1.setAt(i, j, random.NextDouble(), 0);
                }
            }

            var lib = new MLapackLib();

            Console.WriteLine("multiplication started...");

            var s = new MCJRMatrix();
            var u = new MCJCMatrix();
            var vt = new MCJCMatrix();

            var time = DateTime.Now;
            lib.SVDDecomposition(mat1, s, u, vt);

            double ms = (DateTime.Now - time).TotalMilliseconds;
            Console.WriteLine("time = " + ms);
            return ms;
        }
Beispiel #13
0
 public NComplexMatrix()
 {
     _mat = new MCJCMatrix();
 }
Beispiel #14
0
        public double SlezTestBig(int size)
        {
            var mat1 = new MCJCMatrix(size, size);
            var mat2 = new MCJCMatrix(size, size);

            var random = new Random();

            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    mat1.setAt(i, j, random.NextDouble(), 0);
                    mat2.setAt(i, j, random.NextDouble(), 0);
                }
            }

            var time = DateTime.Now;
            var lib = new MLapackLib();

            var result = new MCJCMatrix(size, size);

            Console.WriteLine("multiplication started...");

            lib.solveSLE(mat1, mat2, result);

            Console.WriteLine("multiplication completed.");

            double ms = (DateTime.Now - time).TotalMilliseconds;
            Console.WriteLine("time = " + ms);
            return ms;
        }
Beispiel #15
0
        public void SlezTest()
        {
            const int size = 2;
            var mat1 = new MCJCMatrix(2, 2);
            var mat2 = new MCJCMatrix(2, 2);

            mat1.setAt(0, 0, 1, 1);
            mat1.setAt(0, 1, 2, 2);
            mat1.setAt(1, 0, 3, 3);
            mat1.setAt(1, 1, 4, 4);

            mat2.setAt(0, 0, 1, 0);
            mat2.setAt(0, 1, 2, 0);
            mat2.setAt(1, 0, 3, 0);
            mat2.setAt(1, 1, 4, 0);

            Console.WriteLine(new NComplexMatrix(mat1));

            /* mat1.setAt(0, 0, 1);
             mat1.setAt(0, 1, 2);
             mat1.setAt(1, 0, 3);
             mat1.setAt(1, 1, 4);

             mat2.setAt(0, 0, 1);
             mat2.setAt(0, 1, 2);
             mat2.setAt(1, 0, 3);
             mat2.setAt(1, 1, 4);*/

            var time = DateTime.Now;
            var lib = new MLapackLib();

            var result = new MCJCMatrix(size, size);

            lib.solveSLE(mat1, mat2, result);

            Console.WriteLine(new NComplexMatrix(result));

            double ms = (DateTime.Now - time).TotalMilliseconds;
            Console.WriteLine("time = " + ms);
        }
Beispiel #16
0
        public void PrintComplexMatrix(MCJCMatrix matrix)
        {
            int cols = matrix.cols();
            int rows = matrix.rows();

            for (int i = 0; i < rows; i++)
            {
                for (int j = 0; j < cols; j++)
                {
                    double re = matrix.getAt(i, j);
                    double im = matrix.getAtIm(i, j);

                    Console.Write("({0};{1})  ", re, im);
                }
                Console.WriteLine();
            }
        }
Beispiel #17
0
 public NComplexMatrix(int rows, int cols)
 {
     _mat = new MCJCMatrix(rows, cols);
 }
Beispiel #18
0
 public NComplexMatrix(MCJCMatrix mat)
 {
     _mat = mat;
 }