Vous êtes sur la page 1sur 3

Algoritmo de Horner

Entradas: Grado del polinomio (n), coeficientes del polinomio (cof), punto para evaluar el
polinomio (x)

Salida: Suma de todos los términos del polinomio en el punto a evaluar (sum).

Paso 1: Hacer

Sum= cofn*x (Iniciar la Suma con el ultimo valor evaluado)

Paso 2: para j= N-1 hasta 1 hacer

sum = (sum +cofi) *x (seguir haciendo las sumas y multiplicar con el valor a evaluar hasta
llegar al penúltimo elemento)

Paso 3: Hacer

sum= cof0 (sumar el último elemento)

Implementacion
import java.util.Scanner;

public class Horner

{
private int sum;

//Constructor

public Horner(int[] cof, int x)// Constructor para volver a llamar a las
funciones

{
sum = 0; // inicializar la suma
calcSum(cof, x, cof.length - 1); // Calcular la Suma
display();// Mostrar el valor final
}

//Calcula la suma

private void calcSum(int[] cof, int x, int N)// Entrada el array de


coeficientes, el valor a evaluar y el numero de coeficientes
{
sum = cof[N] * x; // Ingresar el primer valor del metodo a la suma
for (int i = N - 1; i >= 1; i--)
sum = (sum + cof[i]) * x; //Se divide en muchos problemas iguales
sum += cof[0];// Se suma el ultimo elemento
}

public void display()


{
System.out.println("La suma del polinomio en el punto evaluado es: "+
sum);// Imprimir el resultado
}

//metodo main

public static void main(String[] args)


{ //Ingreso de Datos por teclado
Scanner scan = new Scanner(System.in);
System.out.println("Algoritmo Horner\n");
System.out.println("Grado del Polinomio");
int n = scan.nextInt(); // Ingreso del Grado del Polinomio
int[] arr = new int[n + 1]; // almacena los coeficientes
System.out.println("\nIngrese "+ (n + 1) +" los coeficientes en orden
ascendente del grado");
for (int i = 0; i <= n; i++)
arr[i] = scan.nextInt();
System.out.println("\nIngrese X (El numero donde evaluar el
polinomio)");
int x = scan.nextInt(); // Valor a evaluar
Horner h = new Horner(arr, x); //Llama al procedimiento

Análisis de Resultados

Para una ecuación:

3𝑥 2 + 6𝑥 + 4

El Resultado de la suma evaluado en 2 es

3(2)2 + 6(2) + 4 = 3(4) + 12 + 4 = 12 + 12 + 4 = 28

En el programa:
Este algoritmo simplifica el número de sumas y multiplicaciones que se realizan al resolver este
problema porque se realizan N multiplicaciones y N sumas siendo N grado del polinomio.

Vous aimerez peut-être aussi