El mtodo de Horner se usa para el clculo de races de polinomios con el mtodo de Newton
Raphson. Mediante la divisin sinttica se calcula P(x)=Q(x) y se evala en un valor dado P(x)
y Q(x). Es un algoritmo poderoso para evaluar de forma muy eficiente a los polinomios de una
forma monomial.
Sea
P(x) = anxn + an-1xn-1 + ... +a1x + a0
Si bn = an y
bk = ak + bk+1x0 para k = n 1, n 2, ..., 1, 0
Por tanto b0 = P(x0). Ms an, si
Q(x) = bnxn1 + bn-1xn-2 + ... +b2x + b1
Entonces
P(x) = (x x0) Q(x) + b0
Para la derivada
Dado que:
P(x) = (x x0) Q(x) + b0
donde
Q(x) = bnxn1 + bn-1xn-2 + ... +b2x + b1
Derivando
P(x) = Q(x)+(x x0)Q(x)
En x = x0,
P(x0) = Q(x0)
Ejemplo:
Xi
Xr1
Xr2
Paso 1:
Para () = 4 2 3 12 2 + 16 10
1 -2 -12 16 -10
4 4 8 -16 0
1 2 -4 0 -10
a4 a3 a2 a1 a0
Para () = 4 3 6 2 24 + 16
4 -6 -24 16
4 16 40 64
4 10 16 80
a3 a2 a1 a0
Paso 2:
Mtodo de Newton-Raphson
()
() =
()
V.V=4.11484
n= 5 c.s
Es=5x10-4
() = 4 3 6 2 24 + 16
Formulas en Excel.
Cdigo c++:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int i,n;
float A0,A1,A2,A3,A4,A5,AM,B5,B4,B3,B2,B1,C5,C4,C3,C2;
float x0,x1,x2,y1,R,S,aux0,auxn,Er;
printf("**********************************************\n");
printf("**********************************************\n\n");
printf("Pn(x)=a5x^5+a4x^4+a3x^3+a2x^2+a1x^1+a0 \n\n");
printf(" a5=");scanf("%f",&A5);
printf(" a4=");scanf("%f",&A4);
printf(" a3=");scanf("%f",&A3);
printf(" a2=");scanf("%f",&A2);
printf(" a1=");scanf("%f",&A1);
printf(" a0=");scanf("%f",&A0);
AM=fabs(A0);
if(A1 != 0){
AM=fabs(A1);
if(A2 != 0){
AM=fabs(A2);
}
}
if(A3 != 0){
AM=fabs(A3);
if(A4 != 0){
AM=fabs(A4);
if(A5 != 0){
AM=fabs(A5);
aux0=A0;
if(A0==0){
auxn=A1;
if(A1==0){
auxn=A2;
auxn=A5;
if(A5==0){
auxn=A4;
if(A4==0){
auxn=A3;
x1=(float)fabs(aux0)/(fabs(aux0)+AM);
x2=(float)(fabs(auxn)+AM)/fabs(auxn);
scanf("%f",&x0);
scanf("%d",&n);
for(i=1;i<=n;i++){
B5=x0*A5;
B4=(B5+A4)*x0;
B3=(B4+A3)*x0;
B2=(B3+A2)*x0;
B1=(B2+A1)*x0;
R=(B1+A0);
C5=x0*A5;
C4=(B5+A4+C5)*x0;
C3=(B4+A3+C4)*x0;
C2=(B3+A2+C3)*x0;
S=(B2+A1+C2);
y1=x0-R/S;
Er=fabs(y1-x0);
x0=y1;
printf("\n\n");
system("pause");
https://www.easycalculation.com/es/algebra/quartic-equation.php
https://www.youtube.com/watch?v=DzUH6-VyjUY
Programa:
http://lineaalinea.blogspot.mx/2008/01/mtodo-de-horner-en-lenguaje-c.html