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); }