示例#1
0
        public MatrixMethod MatrixMultiplication(MatrixMethod matrixB)
        {
            if (size != matrixB.size)
            {
                MessageBox.Show("Неверное кол-во сток в матрицах!");
                return(null);
            }


            Normal matrixC = new Normal(size, false);

            matrixC.StopWatchReset();
            matrixC.sw.Start();
            for (var i = 0; i < size; i++)
            {
                for (var j = 0; j < size; j++)
                {
                    matrixC.Fulldata[i, j] = 0;

                    for (var k = 0; k < size; k++)
                    {
                        matrixC.Fulldata[i, j] += this.ReadFromMatrix(i, k) * matrixB.ReadFromMatrix(k, j);
                    }
                }
            }
            matrixC.sw.Stop();
            return(matrixC);
        }
示例#2
0
        public override MatrixMethod Subtract(MatrixMethod matrix)
        {
            if (matrix.GetType() != typeof(Triangle))
            {
                base.Add(matrix);
            }
            Triangle triangle = new Triangle(size, UsePointers);

            triangle.StopWatchReset();
            triangle.sw.Start();
            for (int i = 0; i < data.Length; i++)
            {
                triangle.data[i] = data[i] - matrix.data[i];
            }
            triangle.sw.Stop();
            return(triangle);
        }
示例#3
0
        public override MatrixMethod Add(MatrixMethod matrix)
        {
            if (matrix.GetType() != typeof(Block))
            {
                base.Add(matrix);
            }
            Block triangle = new Block(size, UsePointers);

            triangle.StopWatchReset();
            triangle.sw.Start();
            for (int i = 0; i < data.Length; i++)
            {
                triangle.data[i] = data[i] + matrix.data[i];
            }
            triangle.sw.Stop();
            return(triangle);
        }
示例#4
0
        public virtual MatrixMethod Subtract(MatrixMethod matrixB)
        {
            if (size != matrixB.size)
            {
                MessageBox.Show("Неверное кол-во сток в матрицах!");
                return(null);
            }

            sw.Start();
            Normal matrixC = new Normal(size, false);

            matrixC.StopWatchReset();
            for (var i = 0; i < size; i++)
            {
                for (var j = 0; j < size; j++)
                {
                    matrixC.Fulldata[i, j] = this.ReadFromMatrix(i, j) - matrixB.ReadFromMatrix(i, j);
                }
            }
            sw.Stop();
            return(matrixC);
        }