Está en la página 1de 2

1

2 #include <stdio.h>
3 #include <conio.h>
4 #include <math.h>
5
6 void Lee_Datos(void);
7 double Funcion(double X);
8
9 double a, b, Error;
10 int Max_Iter;
11
12 int main(void)
13 {
14 double Error_Aprox, Prod;
15 double Xr, Xn;
16 int Ciclos = 0;
17
18 Lee_Datos();
19 if(Funcion(a)*Funcion(b)>0)
20 {
21 printf("\n No Existe Raiz en el intervalo ???");
22 }
23 else
24 {
25 Xr=(a+b)/2;
26 printf("\n-----------------------------------------");
27 Error_Aprox = 1;
28 printf("\n Ciclo a b Xn Error");
29 printf("\n-----------------------------------------");
30 printf("\n%3d%10.4f%10.4f%10.4f",Ciclos,a,b,Xr);
31
32 while (Ciclos<=Max_Iter && Error<Error_Aprox)
33 {
34 Prod=Funcion(a)*Funcion(b);
35 if (Prod==0)
36 {
37 printf("La raiz es %lf",Xr);
38 }
39 else
40 {
41 if(Prod<0)
42 {
43 b=Xr;
44 }
45 else
46 {
47 a=Xr;
48 }
49 }
50 Xn=(a+b)/2;
51 Ciclos+=1;
52 Error_Aprox=fabs((Xn-Xr)/Xn);
53 printf("\n%3d%10.4f%10.4f%10.4f",Ciclos,a,b,Xn,Error_Aprox);
54 Xr=Xn;
55 }
56 if(Ciclos<Max_Iter)
57 {
58 printf("\n--------------------------------------");
59 printf("\n\n La Raiz de la Ecuacion es => %lf",Xn);
60 printf("\n Se encontro en %d Iteraciones",Ciclos);
61 }
62 else
63 {
64 printf("\n No se encontro raiz en %d Iteraciones",Ciclos);
65 }
66 }
67 getch();
68 return 0;
69 }
70
71 void Lee_Datos(void)
72 {
73 printf("\nDar el valor de Xi .......... ");
74 scanf("%lf",&a);
75 printf("\nDar el valor de Xf .......... ");
76 scanf("%lf",&b);
77 printf("\nCual es el Error Permitido ... ");
78 scanf("%lf",&Error);
79 printf("\nCual es el Maximo de Ciclos .. ");
80 scanf("%d",&Max_Iter);
81 }
82
83 double Funcion(double X)
84 {
85 return(-12-21*X+18*X*X-2.75*X*X*X);
86 }
87

También podría gustarte