예제 #1
0
        /// <summary>
        /// Операция умножения числа на вектор
        /// </summary>
        public static DVector operator *(double c, DVector v1)
        {
            var v3 = new DVector(v1.Size);

            for (var i = 0; i < v1.Size; i++)
            {
                v3.Vector[i] = c * v1.Vector[i];
            }

            return(v3);
        }
예제 #2
0
        /// <summary>
        /// Операция сложения векторов
        /// </summary>
        public static DVector operator +(DVector v1, DVector v2)
        {
            var v3 = new DVector(v1.Size);

            for (var i = 0; i < v1.Size; i++)
            {
                v3.Vector[i] = v1.Vector[i] + v2.Vector[i];
            }

            return(v3);
        }
예제 #3
0
        /// <summary>
        /// Операция разности векоторв
        /// </summary>
        public static DVector operator -(DVector v1, DVector v2)
        {
            var v3 = new DVector(v1.Size);

            for (var i = 0; i < v1.Size; i++)
            {
                v3[i] = v1[i] - v2[i];
            }

            return(v3);
        }
예제 #4
0
        public static DVector operator /(DVector v1, double c)
        {
            var v3 = new DVector(v1.Size);

            for (var i = 0; i < v3.Size; i++)
            {
                v3[i] = v1[i] / c;
            }

            return(v3);
        }
예제 #5
0
        /// <summary>
        /// Умножение вектора на транспонированный вектор
        /// </summary>
        public static Matrix Multiplication(DVector v1, DVector v2)
        {
            var m = new Matrix(v1.Size);

            if (v1.Size != v2.Size)
            {
                throw new ArgumentException("Число столбцов матрицы А не равно числу строк матрицы В.");
            }

            for (var i = 0; i < m.Size; i++)
            {
                for (var j = 0; j < m.Size; j++)
                {
                    m[i, j] = v1[i] * v2[j];
                }
            }

            return(m);
        }