Esempio n. 1
0
        //матрица на матрицу
        private void button2_Click(object sender, EventArgs e)
        {
            int M = 3;
            int N = 4;
            int Q = 2;
            var A = new double[M * N];
            var B = new double[N * Q];

            double[] C;

            for (int i = 0; i < M; i++)
            {
                for (int j = 0; j < N; j++)
                {
                    A[i * N + j] = i + j;
                }
            }

            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < Q; j++)
                {
                    B[i * Q + j] = j * 3.1;
                }
            }

            MathFuncsMatrix myfunc = new MathFuncsMatrix();

            C = myfunc.Mult(A, B, M, N, Q);
        }
Esempio n. 2
0
        //матрица на вектор
        private void button1_Click_1(object sender, EventArgs e)
        {
            int N = 4;
            int M = 10;

            double[] a = new double[M * N];
            double[] b = new double[N];
            double[] c;
            for (int i = 0; i < M; i++)
            {
                for (int j = 0; j < N; j++)
                {
                    a[i * N + j] = i + j;
                }
            }

            for (int j = 0; j < N; j++)
            {
                b[j] = j;
            }

            MathFuncsMatrix myfunc = new MathFuncsMatrix();

            c = myfunc.MultVector(a, b, M, N);
        }
Esempio n. 3
0
        public void MatrixTransp()
        {
            MathFuncsMatrix    mymatr1 = new MathFuncsMatrix();
            MathFuncsMatrixSeq mymatr2 = new MathFuncsMatrixSeq();
            int N = 1000;
            int M = 500;

            double[] a = new double[N * M];
            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < M; j++)
                {
                    a[i * M + j] = i + j;
                }
            }

            Stopwatch sw1 = new Stopwatch();

            sw1.Start();
            mymatr1.Transp(a, N, M);
            sw1.Stop();
            double secPar = sw1.ElapsedMilliseconds / 1000.0;


            Stopwatch sw2 = new Stopwatch();

            sw2.Start();
            mymatr2.Transp(a, N, M);
            sw2.Stop();
            double secSeq = sw2.ElapsedMilliseconds / 1000.0;

            Assert.IsTrue(secPar < secSeq, "последовательный вариант быстрее!");
        }
Esempio n. 4
0
        public void MatrixMult()
        {
            MathFuncsMatrix    mymatr1 = new MathFuncsMatrix();
            MathFuncsMatrixSeq mymatr2 = new MathFuncsMatrixSeq();

            int M = 1000;
            int N = 2000;
            int Q = 100;
            var A = new double[M * N];
            var B = new double[N * Q];

            for (int i = 0; i < M; i++)
            {
                for (int j = 0; j < N; j++)
                {
                    A[i * N + j] = i + j;
                }
            }

            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < Q; j++)
                {
                    B[i * Q + j] = j * 3.1;
                }
            }

            Stopwatch sw1 = new Stopwatch();

            sw1.Start();
            mymatr1.Mult(A, B, M, N, Q);
            sw1.Stop();
            double secPar = sw1.ElapsedMilliseconds / 1000.0;


            Stopwatch sw2 = new Stopwatch();

            sw2.Start();
            mymatr2.Mult(A, B, M, N, Q);
            sw2.Stop();
            double secSeq = sw2.ElapsedMilliseconds / 1000.0;

            Assert.IsTrue(secPar < secSeq, "последовательный вариант быстрее!");
        }
Esempio n. 5
0
        public void MatrixVector()
        {
            MathFuncsMatrix    mymatr1 = new MathFuncsMatrix();
            MathFuncsMatrixSeq mymatr2 = new MathFuncsMatrixSeq();
            int N = 1000;
            int M = 500;

            double[] a = new double[M * N];
            double[] b = new double[N];
            for (int i = 0; i < M; i++)
            {
                for (int j = 0; j < N; j++)
                {
                    a[i * N + j] = i + j;
                }
            }

            for (int j = 0; j < N; j++)
            {
                b[j] = j;
            }

            Stopwatch sw1 = new Stopwatch();

            sw1.Start();
            mymatr1.MultVector(a, b, M, N);
            sw1.Stop();
            double secPar = sw1.ElapsedMilliseconds / 1000.0;


            Stopwatch sw2 = new Stopwatch();

            sw2.Start();
            mymatr2.MultVector(a, b, M, N);
            sw2.Stop();
            double secSeq = sw2.ElapsedMilliseconds / 1000.0;

            Assert.IsTrue(secPar < secSeq, "последовательный вариант быстрее!");
        }
Esempio n. 6
0
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        //матрицы

        //транспонирование
        private void btnMatrix_Click(object sender, EventArgs e)
        {
            int N = 4;
            int M = 5;

            double[] a = new double[N * M];
            double[] c;
            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < M; j++)
                {
                    a[i * M + j] = i + j;
                }
            }

            MathFuncsMatrix myfunc = new MathFuncsMatrix();

            c = myfunc.Transp(a, N, M);

            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < M; j++)
                {
                    rtbMatrix.Text += String.Format("{0:f2} ", a[i * M + j]);
                }
                rtbMatrix.Text += Environment.NewLine;
            }

            for (int j = 0; j < M; j++)
            {
                for (int i = 0; i < N; i++)
                {
                    rtbResult.Text += String.Format("{0:f2} ", c[j * N + i]);
                }
                rtbResult.Text += Environment.NewLine;
            }
        }