//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); }
//----------------------------------------------------------------------------- //----------------------------------------------------------------------------- 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]); } }