// ---------------------------------------- // ------- object methods overriding ------ // ---------------------------------------- public object Clone() { LagrangePolynom <T, C> newObject = new LagrangePolynom <T, C>(this.points, false, false); newObject.difMatrix = this.difMatrix; return(newObject); }
public override bool Equals(object obj) { if (obj is LagrangePolynom <T, C> ) { LagrangePolynom <T, C> poly = obj as LagrangePolynom <T, C>; // Если количество точек совпадает, проверяем поточечно. if (poly.points.Length == this.points.Length) { for (int i = 0; i < poly.points.Length; i++) { if (!calc.eqv(this.points[i].X, poly.points[i].X) || !calc.eqv(this.points[i].Y, poly.points[i].Y)) { return(false); } } return(true); } // Если количество точек не совпадает, то... // К сожалению, может иметь место линейная зависимость. // Например, параболу тоже при желании можно определить по пяти точкам. // Единственный выход - приводить все к канонической форме и сравнивать по коэффициентам. return(this.AsStandardPolynom.Equals(poly.AsStandardPolynom)); } else if (obj is Polynom <T, C> ) { return(this.AsStandardPolynom.Equals(obj as Polynom <T, C>)); } return(false); }
/// <summary> /// Tests whether the current polynom is equal /// to a certain LagrangePolynom by converting the latter /// to canonical polynomial form and comparing the coefficients. /// </summary> /// <param name="polynom">The object to test equality with.</param> /// <returns>True if the current polynom is equal to the passed object, false otherwise.</returns> public bool Equals(LagrangePolynom <T, C> polynom) { return(this.Equals(polynom.AsStandardPolynom)); }