//Operador que permite sumar polinomios
        public static Polinomio operator +(Polinomio p1, Polinomio p2)
        {
            Polinomio s;
            Polinomio t = new Polinomio(p1.grado);
            Polinomio q = new Polinomio(p2.grado);

            if (p1.grado >= p2.grado)
            {
                for (int i = 0; i <= p1.grado; i++)
                {
                    if (p2.grado == 0)
                    {
                        double[] arr = new double[p1.coeficiente.Length];

                        for (i = 0; i < p1.coeficiente.Length; i++)
                        {
                            arr[i] = p1.coeficiente[i];
                        }
                        arr[0] += p2.coeficiente[0];

                        t.coeficiente = arr;
                    }
                    else

                    if (i <= p2.coeficiente.Length)
                    {
                        t.coeficiente[i] = (p1.coeficiente[i] + p2.coeficiente[i]);
                    }
                }
                s = new Polinomio(t.coeficiente);
            }
            else
            {
                for (int i = 0; i <= p2.grado; i++)
                {
                    ////////////////
                    if (p1.grado == 0)
                    {
                        double[] arr = new double[p2.coeficiente.Length];

                        for (i = 0; i < p2.coeficiente.Length; i++)
                        {
                            arr[i] = p2.coeficiente[i];
                        }
                        arr[0]       += p1.coeficiente[0];
                        q.coeficiente = arr;
                    }
                    else
                    ////////////////
                    if (i <= p1.coeficiente.Length)
                    {
                        q.coeficiente[i] = (p2.coeficiente[i] + p1.coeficiente[i]);
                    }
                }

                s = new Polinomio(q.coeficiente);
            }
            return(s);
        }
        //Operador que permite restar un polinomio  y un escalar
        public static Polinomio operator -(Polinomio poli, double escalar)
        {
            double[] temp = new double[poli.coeficiente.Length];
            temp[0] = escalar;
            Polinomio aux1 = new Polinomio(temp);

            return(poli - aux1);
        }
        //Operador que permite restar dos polinomios
        public static Polinomio operator -(Polinomio pol1, Polinomio pol2)
        {
            Polinomio temp = new Polinomio(pol2.grado);

            for (int i = 0; i <= pol2.grado; i++)
            {
                temp.coeficiente[i] = pol2.coeficiente[i] * -1;
            }
            return(pol1 + temp);
        }
//----------------------------------------------------------------------------------------------
        //Operadores

        //Operador que permite multiplicar polinomios
        public static Polinomio operator *(Polinomio pol1, Polinomio pol2)
        {
            double[] a = new double[(pol1.grado + pol2.grado) + 1];
            for (int i = 0; i <= pol1.grado; i++)
            {
                for (int j = 0; j <= pol2.grado; j++)
                {
                    a[i + j] += pol1.coeficiente[i] * pol2.coeficiente[j];
                }
            }
            Polinomio nuevo = new Polinomio(a);

            return(nuevo);
        }
예제 #5
0
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
        static void asignacion_de_variables(ExpressionContext contenido, string v)
        {
            int var1 = 0;

            if (v.Contains("("))
            {
                string[] temp = v.Split(new Char[] { ':', '=', '(', ' ', ')' });

                while (temp[var1].Trim() == "")
                {
                    var1++;
                }

                int var2 = var1 + 1;
                while (temp[var2].Trim() == "")
                {
                    var2++;
                }

                double[] arr = new double[temp.Length - var2 - 1];
                for (int i = temp.Length - 2; i >= var2; i--)
                {
                    arr[(temp.Length - 2) - i] = double.Parse(temp[i]);
                }
                Polinomio poly = new Polinomio(arr);
                contenido.Variables[temp[var1]] = poly;
            }
            else//-----------------------------------------------
            {
                string[] arreglo = v.Split(new Char[] { ' ', '=', ':' });
                while (arreglo[var1].Trim() == "")
                {
                    var1++;
                }
                int var2 = var1 + 1;
                while (arreglo[var2].Trim() == "")
                {
                    var2++;
                }
                contenido.Variables[arreglo[var1]] = double.Parse(arreglo[var2]);
            }
        }