Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sol:
Para encontrar las races del polinomio debemos primero ver en que intervalo se
encuentran. El intervalo se puede encontrar por medio de un anillo, dado por la
siguiente frmula:
Al aplicarla resulta:
--Primera iteracin:
6 5 3 1
-2.7 0.18
6 -0.4 2.145=S
( . )
= 0.45 ( . )
= 0.5039627039627
= 0.5039627039627
--Segunda iteracin:
6 5 3 1
x -3.02377622378 0.527927364013
6 -1.04755244756 2.5319842861=S
( . )
x = 0.5039627039627 ( . )
= 0.500025102371
x = 0.50002510237065
--Tercera iteracin:
6 5 3 1
x -3.000015061422 0.500175724154
6 -1.00030122844 2.5002008303=S
( . )
x = 0.50002510237065 ( . )
= 0.5000000010083
x = 0.5000000010083
--Cuarta iteracin:
6 5 3 1
x -3.00000000605 0.500000007058
6 -1.0000000121 2.50000000807=S
( 0.000000002521)
x = 0.50002510237065 ( . )
= 0.5
x = 0.5
x = 0.5
E (x ) = |x x| = | 0.5 0.5000000010083|=1.0083*10
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
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;
system("color 1f");//esta en la libreria stdlib.h
//Mensaje para el usuario
printf("**********************************************\n");
printf("***ALGORITMO DE HORNER (Division sintetica)***\n");
printf("**********************************************\n\n");
//polinomio tipo a analizar
printf("Pn(x)=a5x^5+a4x^4+a3x^3+a2x^2+a1x^1+a0 \n\n");
printf("Para cualquier polonomio con grado menor o igual a 5\n");
printf("escriba sus coeficientes:\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);
//Verificacion de si A0 es el coeficiente mayor (AM)
if(A0 != 0){//fabs() genera el valor absoluto para valores float
if(fabs(A0)>=fabs(A1) && fabs(A0)>=fabs(A2) && fabs(A0)>=fabs(A3) &&
fabs(A0)>=fabs(A4) && fabs(A0)>=fabs(A5)){
AM=fabs(A0);
}
}
//Verificacion de si A1 es el coeficiente mayor (AM)
if(A1 != 0){
if(fabs(A1)>=fabs(A0) && fabs(A1)>=fabs(A2) && fabs(A1)>=fabs(A3) &&
fabs(A1)>=fabs(A4) && fabs(A1)>=fabs(A5)){
AM=fabs(A1);
}
}
//Verificacion de si A2 es el coeficiente mayor (AM)
if(A2 != 0){
if(fabs(A2)>=fabs(A0) && fabs(A2)>=fabs(A1) && fabs(A2)>=fabs(A3) &&
fabs(A2)>=fabs(A4) && fabs(A2)>=fabs(A5)){
AM=fabs(A2);
}
}
//Verificacion de si A3 es el coeficiente mayor (AM)
if(A3 != 0){
if(fabs(A3)>=fabs(A0) && fabs(A3)>=fabs(A1) && fabs(A3)>=fabs(A2) &&
fabs(A3)>=fabs(A4) && fabs(A3)>=fabs(A5)){
AM=fabs(A3);
}
}
//Verificacion de si A4 es el coeficiente mayor (AM)
if(A4 != 0){
if(fabs(A4)>=fabs(A0) && fabs(A4)>=fabs(A1) && fabs(A4)>=fabs(A2) &&
fabs(A4)>=fabs(A3) && fabs(A4)>=fabs(A5)){
AM=fabs(A4);
}
}
//Verificacion de si A5 es el coeficiente mayor (AM)
if(A5 != 0){
if(fabs(A5)>=fabs(A0) && fabs(A5)>=fabs(A1) && fabs(A5)>=fabs(A2) &&
fabs(A5)>=fabs(A3) && fabs(A5)>=fabs(A4)){
AM=fabs(A5);
}
}
//Caso en que A0 sea 0
aux0=A0;
if(A0==0){
auxn=A1;
if(A1==0){
auxn=A2;
}
}
//Caso en que A5 sea 0
auxn=A5;
if(A5==0){
auxn=A4;
if(A4==0){
auxn=A3;
}
}
//Cotas por anillo de polinomio
x1=(float)fabs(aux0)/(fabs(aux0)+AM);
x2=(float)(fabs(auxn)+AM)/fabs(auxn);
printf("Las raices del polinomio se encuentran es estos intervalos");
printf("\n[-%.3f ,-%.3f] y [%.3f ,%.3f]",x2,x1,x1,x2);
printf("\n\nElija algun punto de inicio para el algoritmo:");
scanf("%f",&x0);
printf("Cuantas iteraciones quiere realizar?:");
scanf("%d",&n);
printf("\n Iteraciones Error entre ellas");
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("\nX%d=%0.9f Er(X%d)=%0.9f ",i,x0,i-1,Er);
}
printf("\n\n");
system("pause");
}