Metodo de Horner

METODO DE HORNER En el campo matemático de análisis numérico, el Algoritmo de Horner, llamado así por William George Hom

Views 170 Downloads 6 File size 82KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

METODO DE HORNER En el campo matemático de análisis numérico, el Algoritmo de Horner, llamado así por William George Homer, es un algoritmo para evaluar de forma eficiente funciones polinómicas de una forma monomial. APLICACIÓN El algoritmo de Horner se usa a menudo para convertir entre distintos sistemas numéricos posicionales en cuyo caso x es la base del sistema numérico, y los coeficientes ai son los dígitos de la representación del número dado en la base x -y puede usarse también si x es una matriz, en cuyo caso la carga computacional se reduce aún más. EFICIENCIA La evaluación usando la forma monomial del polinomio de grado-n requiere al menos n sumas y (n2+n)/2 multiplicaciones, si las potencias se calculan mediante la repetición de multiplicaciones. El algoritmo de Horner sólo requiere n sumas y n multiplicaciones. (Minimizar el número de multiplicaciones es lo más deseable porque necesitan mucha carga computacional y son inestables comparadas con la suma). Se ha demostrado que el algoritmo de Horner es óptimo, de modo que cualquier algoritmo que se use para evaluar un polinomio requerirá como mínimo el mismo número de operaciones. EN GENERAL: Este es el método general para dividir polinomios. Consideremos los polinomios completos y ordenados: 4

3

2

D ( x )=a0 x +a1 x + a2 x +a3 x+ a4 d ( x ) =b0 x2 +b 1 x +b2 Donde: a0 ≠ 0 y b 0 ≠ 0

Esquema de Horner.

PROCEDIMIENTO 1) Se completa y se ordena los polinomios dividendo y divisor con respecto a una sola variable(llamada ordenatriz). En caso de que halla dos variables se asume a una de ellas como tal y las demás hacen el papel de números o constantes. 2) Se distribuyen en forma horizontal los coeficientes del dividendo. Y en forma vertical los coeficientes del divisor con signo cambiando a excepción del primero. 3) Se traza una línea vertical separando tantas columnas a partir de la derecha, indicado por el grado del divisor; de esta manera se marca la separación entre el cociente y residuo. 4) Se divide el primer coeficiente del dividendo entre el primero del divisor y se obtiene el primero del cociente. Luego este se multiplica por cada uno de los coeficientes del divisor que han cambiado de signo y el resultado se coloca en la segunda fila, corriéndose un lugar a la derecha. 5) Se reduce la siguiente columna(se suman los coeficientes), y se repite el paso anterior tantas veces hasta que la ultima operación efectuada caiga debajo del ultimo coeficiente del dividendo. 6) Se suman directamente los números que están en su signo, los demás coeficientes van con signo cambiado. 7) La línea(punteada) vertical que separa los coeficientes del cociente del resto se traza contando desde el ultimo coeficiente del dividendo, un numero de espacios igual al grado del divisor. EJEMPLO Dividir:

6 x 5 +5 x 4−4 x 2−8 x 3−6 x +4 2 x 3 +3 x2 −1

Resolución:

Aplicando el criterio general: D ( x )=6 x5 +5 x 4−8 x 3 −4 x 2−6 x +4 d ( x ) =2 x 3 +3 x 2+0 x−1

Luego:

Q ( x )=3 x 2−2 x−1 ; R ( x )=2 x 2−8 x +3

PROGRAMA DEL METODO DE HORNER #include float evaluar(float *, int, float); int main(void) { int n, i; float x, coef[11], p; printf("\nGrado del polinomio: "); scanf("%d", &n); printf("\nPunto en el que se quiere evaluar x = "); scanf("%f", &x); printf("\n\nIngreso de coeficientes:"); for(i=n; i >= 0; i--) { printf("\nCoeficiente de grado %d: ", i); scanf("%f", &coef[i]); } p = evaluar(coef, n, x); printf("\n\np(%.2f) = %f\n\n", x, p); return 1; } float evaluar(float *coef, int n, float x) { int i;

float p; for(p=coef[n], i=n; i>0; i--) p = p*x + coef[i-1]; return p; }