public static Vector operator +(Vector v1, Vector v2) { if (v1.Count != v2.Count) { throw new Exception("Vector is not compatible"); } else { Vector result = new Vector(v1.Count); for (int i = 0; i < v2.Count; i++) { result[i] = v1[i] + v2[i]; } return result; } }
public void TestMethodVector() { Vector v1 = new Vector(3); v1[0] = 0; v1[1] = 1; v1[2] = 2; Vector v2 = new Vector(3); v2[0] = 1; v2[1] = 2; v2[2] = 3; Vector v3 = new Vector(new double[] { 1, 3, 5 }); Assert.AreEqual(v3 - v2, v1); Assert.AreEqual(v1[0], 0, 0.0001); Assert.AreEqual(v1[2], 2, 0.0001); Assert.AreEqual(v1.Count, 3); Vector v4 = v1 + v2; Assert.AreEqual(v4.GetHashCode(), v3.GetHashCode()); Assert.IsTrue(v3.Equals(v4)); Assert.IsTrue(v3 == v4); Assert.IsFalse(v1.Equals(v3)); Assert.IsTrue(v1 + v2 == v3); v1.ResetVector(new double[] { 1, 3, 5 }); Assert.AreEqual(v1, v3); Assert.AreEqual(v1.SubVector(1, 2), new Vector(new double[] { 3, 5 })); Assert.AreEqual(v1.GetMaxValueIndex(), 2); Assert.AreEqual(v1.GetMinValueIndex(), 0); v1.ResetVector(new double[] { -1, 1, 3 }); Assert.AreEqual(v1.GetPositiveMinValueIndex(), 1); Assert.IsTrue(v1.IsAllNoLessThanTarget(-1)); Assert.IsFalse(v1.IsAllNoLessThanTarget(-0.5)); Assert.IsTrue(v1.IsAllNoGreatThanTarget(3)); Assert.IsFalse(v1.IsAllNoGreatThanTarget(2.5)); Assert.IsTrue(v1.Contains(1)); Assert.IsTrue(v1.IsAllInteger()); Assert.IsFalse(new Vector(new double[] { 0.5, 0.3, 1 }).IsAllInteger()); string output = v1.ToString(); v1.Resize(2); Assert.AreEqual(v1, new Vector(new double[] { -1, 1 })); v1.Resize(4); Assert.AreEqual(v1, new Vector(new double[] { -1, 1, 0, 0 })); }
public void AddNewRowToEnd(Vector newRow) { if (newRow.Count != Column) { throw new Exception("Matrix is not compatible"); } this.Resize(Row + 1, Column); for (int j = 0; j < Column; j++) { values[Row - 1, j] = newRow[j]; } }
public Vector SubVector(int startIndex, int length) { Vector result = new Vector(length); for (int i = startIndex; i < startIndex + length; i++) { result[i - startIndex] = this[i]; } return result; }