/// <summary> /// Adding and Substraction method /// </summary> /// <param name="p1"></param> /// <param name="p2"></param> /// <param name="operation"></param> /// <returns></returns> private static CustomPolinomial SummatorOfPolinomials(CustomPolinomial p1, CustomPolinomial p2, Func <double, double, double> operation) { int countOfElements = p1.polinomialElements.Count + p2.polinomialElements.Count; int[] powers = new int[countOfElements]; double[] coefficient = new double[countOfElements]; for (int i = 0; i < p1.polinomialElements.Count; i++) { int position = p1.polinomialElements.Keys.ElementAt(i); powers[i] = position; if (p2.polinomialElements.Keys.Contains(position)) { coefficient[i] = operation(p1.polinomialElements.Values.ElementAt(i), p2.polinomialElements[position]); } else { coefficient[i] = p1.polinomialElements.Values.ElementAt(i); } } int adder = p1.polinomialElements.Count; for (int i = 0; i < p2.polinomialElements.Count; i++) { int power = p2.polinomialElements.Keys.ElementAt(i); if (!p1.polinomialElements.Keys.Contains(power)) { powers[i + adder] = power; coefficient[i + adder] = operation(0, p2.polinomialElements[power]); } } return(new CustomPolinomial(powers, coefficient)); }
public bool Equals(CustomPolinomial polinomial) { if (this.polinomialElements.Count != polinomial.polinomialElements.Count) { return(false); } foreach (var element in polinomial.polinomialElements) { if (this.polinomialElements[element.Key] != element.Value) { return(false); } } return(true); }
/// <summary> /// Multiplication of 2 polynoms /// </summary> /// <param name="p1"></param> /// <param name="p2"></param> /// <returns></returns> private static CustomPolinomial MultiplyOfPolinomials(CustomPolinomial p1, CustomPolinomial p2) { int countOfElements = p1.polinomialElements.Count * p2.polinomialElements.Count + 1; int[] powers = new int[countOfElements]; double[] coefficient = new double[countOfElements]; for (int i = 0; i < p1.polinomialElements.Count; i++) { for (int j = 0; j < p2.polinomialElements.Count; j++) { int resultPower = p1.polinomialElements.Keys.ElementAt(i) + p2.polinomialElements.Keys.ElementAt(j); double resultCoefficieent = p1.polinomialElements.Values.ElementAt(i) * p2.polinomialElements.Values.ElementAt(j); powers[i * p2.polinomialElements.Count + j] = resultPower; coefficient[i * p2.polinomialElements.Count + j] += resultCoefficieent; } } return(new CustomPolinomial(powers, coefficient)); }