/// <summary> /// Build a new vector as a copy of an existing one /// </summary> /// <param name="O">The existing vector</param> public Vector(Vector O) : this(O.data) { }
/// <summary> /// Reset all elements with ransom values from the given range /// </summary> /// <param name="MinMax">MinMax[0] - Min /// MinMax[1] - Max</param> public void Randomize(Vector[] MinMax) { int i; for(i=0;i<data.Length;i++) { this[i] = MinMax[0][i] + (MinMax[1][i] - MinMax[0][i]) * MathF.R.NextDouble(); } }
/// <summary> /// Add another vector /// </summary> /// <param name="V">V</param> public void Add(Vector V) { int i; for(i=0;i<data.Length;i++) { this[i] += V[i]; } }
/// <summary> /// Get the distance of two vectors /// </summary> public static double Dist(Vector V1, Vector V2) { if(V1.Dim != V2.Dim) return -1; int i; double E = 0,D; for(i=0;i<V1.Dim;i++) { D=(V1[i]-V2[i]); E+=D*D; } return E; }
/// <summary> /// Subtract two vectors /// </summary> public static Vector operator -(Vector A, Vector B) { if(A.Dim!=B.Dim) throw new Exception("Vectors of different dimension!"); Vector Erg = new Vector(A.Dim); int i; for(i=0;i<A.Dim;i++) Erg[i]=A[i]-B[i]; return Erg; }
/// <summary> /// Scale one vector /// </summary> public static Vector operator *(Vector A, double B) { Vector Erg = new Vector(A.Dim); int i; for(i=0;i<A.Dim;i++) Erg[i]=A[i]*B; return Erg; }