/// <summary> /// Calculate dot product of two vectors /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> public static int DotProduct(VectorNInt a, VectorNInt b) { if (a.Dimensions != b.Dimensions) { return(0); } int sum = 0; for (int i = 0; i < a.Dimensions; i++) { sum += a.GetDimension(i) * b.GetDimension(i); } return(sum); }
/// <summary> /// Manhattan distance between 2 vectors /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> public static int DistanceManhattan(VectorNInt a, VectorNInt b) { if (a.Dimensions != b.Dimensions) { return(0); } int sum = 0; for (int i = 0; i < a.Dimensions; i++) { sum += Math.Abs(a.GetDimension(i) - b.GetDimension(i)); } return(sum); }
/// <summary> /// Distance between 2 vectors /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> public static double Distance(VectorNInt a, VectorNInt b) { if (a.Dimensions != b.Dimensions) { return(0); } double sum = 0; for (int i = 0; i < a.Dimensions; i++) { sum += Math.Pow(a.GetDimension(i) - b.GetDimension(i), 2); } return(Math.Sqrt(sum)); }
public bool Equals(VectorNInt other) { // check dimension count if (Dimensions != other.Dimensions) { return(false); } // check if each dimension is close for (int i = 0; i < Dimensions; i++) { // stop after first which differs if (Math.Abs(GetDimension(i) - other.GetDimension(i)) > 0.000001) { return(false); } } return(true); }