public MultiDimensionalVector ToMultiDimensionalVector()
        {
            MultiDimensionalVector rezult = new MultiDimensionalVector();
            var newVector = this.ToList();

            foreach (var v in newVector)
            {
                rezult.Add(v);
            }

            return(rezult);
        }
        //выполнение операции над вектором и числом, операция задается строкой и должна быть задана в operations для элементов типа double
        public static MultiDimensionalVector MathOperationMultiDimensionalVectorWithNumber(MultiDimensionalVector mdVector, double number, String operation)
        {
            MultiDimensionalVector rezultMdVector = new MultiDimensionalVector();

            if (operations.ContainsKey(operation) && mdVector.Count >= 0)
            {
                int countElements = mdVector.Count;
                for (int i = 0; i < countElements; ++i)
                {
                    rezultMdVector.Add(operations[operation](mdVector.ElementAt(i), number));
                }
            }
            else
            {
                throw new ArgumentException("Невозможно выполнить операцию");
            }
            return(rezultMdVector);
        }
        //выполнение операции над двумя векторми поэлементно, операция задается строкой и должна быть задана в operations для элементов типа double
        public static MultiDimensionalVector MathOperationMultiDimensionalVectorElementWise(MultiDimensionalVector mdVector1, MultiDimensionalVector mdVector2, String operation)
        {
            MultiDimensionalVector rezultMdVector = new MultiDimensionalVector();

            if (operations.ContainsKey(operation) && mdVector1.Count == mdVector2.Count && mdVector1.Count > 0)
            {
                int countElements = mdVector1.Count;
                // MathOperation mathOper = operations[operation];
                for (int i = 0; i < countElements; ++i)
                {
                    rezultMdVector.Add(operations[operation](mdVector1.ElementAt(i), mdVector2.ElementAt(i)));
                }
            }
            else
            {
                throw new ArgumentException("Невозможно выполнить операцию");
            }
            return(rezultMdVector);
        }