Esempio n. 1
0
        /// <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));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        /// <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));
        }