예제 #1
0
        public Vector.Vector MultiplyByVector(Vector.Vector vector)
        {
            if (vector.GetSize() != GetColumnsNumber())
            {
                throw new ArgumentException("Матрица и вектор не согласованы", nameof(vector));
            }

            var wSize = vector.GetSize();
            var hSize = _rows.Length;

            var resultComponents = new double[hSize];

            for (var i = 0; i < hSize; i++)
            {
                for (var j = 0; j < wSize; j++)
                {
                    resultComponents[i] += _rows[i][j] * vector[j];
                }
            }

            return(new Vector.Vector(resultComponents));
        }
예제 #2
0
        public Vec MultiplyByVector(Vec vector)
        {
            if (GetСolumnsCount() != vector.GetSize())
            {
                throw new ArgumentException("Количество столбцов матрицы должно быть равно длинне вектора ");
            }

            Vec vectorResult = new Vec(vector.GetSize());

            for (int i = 0; i < vector.GetSize(); i++)
            {
                double sum = 0;

                for (int j = 0; j < Rows.Length; j++)
                {
                    sum += Rows[i].GetComponent(j) * vector.GetComponent(j);
                }

                vectorResult.SetComponent(i, sum);
            }

            return(vectorResult);
        }
예제 #3
0
        public void SetRow(int index, Vec vector)
        {
            if (vector.GetSize() != GetСolumnsCount())
            {
                throw new ArgumentOutOfRangeException("размер вектора должен быть " + Rows[index].GetSize(), nameof(vector));
            }

            if (index < 0 || index > Rows.Length)
            {
                throw new IndexOutOfRangeException("index должен быть от 0 до " + Rows.Length);
            }

            Rows[index] = new Vec(vector);
        }
예제 #4
0
        public void SetRow(Vector.Vector vector, int index)
        {
            if (index < 0 || index >= GetRowsNumber())
            {
                throw new IndexOutOfRangeException("Индекс выходит за пределы размерности матрицы");
            }

            if (vector.GetSize() > GetColumnsNumber())
            {
                throw new ArgumentException("Размерность вектора превышает ширину матрицы", nameof(vector));
            }

            var resultVector = new Vector.Vector(GetColumnsNumber(), vector.GetComponents());

            _rows[index] = resultVector;
        }
예제 #5
0
        public void SetColumn(Vector.Vector vector, int index)
        {
            if (index < 0 || index >= GetColumnsNumber())
            {
                throw new IndexOutOfRangeException("Индекс выходит за пределы размерности матрицы");
            }

            if (vector.GetSize() > GetRowsNumber())
            {
                throw new ArgumentException("Размерность вектора превышает высоту матрицы", nameof(vector));
            }

            for (var i = 0; i < _rows.Length; i++)
            {
                _rows[i][index] = vector[i];
            }
        }