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); }
public double EuclideanDistance(MultiDimensionalVector mdVector) { double distance = 0; if (this.Count == mdVector.Count && this.Count > 0) { int countElements = this.Count(); for (int i = 0; i < countElements; ++i) { distance += Math.Pow(this.ElementAt(i) - mdVector.ElementAt(i), 2); } distance = Math.Sqrt(distance); } else { throw new ArgumentException("Невозможно вычислить расстояние между векторами"); } return(distance); }
public Cluster(MultiDimensionalVector Centroid, List <MultiDimensionalVector> Elements) { this.Centroid = Centroid; this.Elements = Elements; this.color = new Color(); }
public Cluster(MultiDimensionalVector Centroid) : this(Centroid, new List <MultiDimensionalVector>()) { }