Está en la página 1de 3

/* NOMBRE: David Madrid Velazquez } Biseccion: Calcule la raiz para la ecuacion: x^3+6x+8 #include <cstdlib> #include <iostream> #include

<cmath> using namespace std; int main(int argc, char *argv[]) { // declaracion de variables float pa, pb, pc, fa, fb, fc, error; int n, itera, exito, fallo;

*/

//captura de datos necesarios del metodo system ("cls"); printf("datos necesarios para el calculo de la raiz de una\n"); printf("ecuacion utilizando el metodo de biseccion para la\n"); printf("ecuacion x^3+6x+8 \n"); printf("---------------------------------------------------\n"); printf("Intervalo Punto A..................: "); scanf("%f", &pa); printf("Intervalo Punto C..................: "); scanf("%f", &pc); printf("Precision del Calculo..............: "); scanf("%f", &error); printf("Limite de Iteraciones de Calculo...: "); scanf ("%f", &n); // encabezado de datos system("cls"); printf(" INSTITUTO TECNOLOGICO DE CULIACAN \n"); printf(" Ingenieria Electrica \n\n"); printf("Metodos Numericos:\n"); printf(" No. A B C FA FB FC \n"); printf (" -----------------------------------------------------\n"); // calcula la funcion de cada punto en el segmento fa=(pa*pa*pa)+(6*pa)+8; fc=(pc*pc*pc)+(6*pc)+8; fallo=0; exito=0; itera=1; do { // calcula el punto intermedio del segmento y su funcion pb=(pa+pc)/2; fb=(pb*pb*pb)+(6*pb)+8; //impresion de la linea de datos printf("%i %10.6f %10.6f %10.6f itera, pa, pb, pc, fa, fb , fc); // pregunta si ya se encontro la raiz if (abs(fb)<=error) { %10.6f %10.6f %10.6f \n",

//se encontro la raiz } exito=1; } else { // pregunta si en el calculo no hubo cambios d e signo // debido a que si no hay cambios de signo el calculo // de raices no tiene solucion if ( ( (pa>0) && (fa>0) ) || ( (pa<0) && (fa< 0) ) && ( (pb>0) && (fb>0) ) || ( (pb<0) && (fb<0) ) && ( (pc>0) && (fc>0) ) || ( (pc<0) && (fc<0) ) ) { // no hubo cambio de signo fallo=1; } else { // debe existir cambio de signo en alguna de las variables if ( ( (pa<0) && (fa>0) ) || ( (p a>0) && (fa<0) ) || ( (pb<0) && (fb>0) ) || ( (pb >0) && (fb<0) ) ) { // se dio un cambio de signo en e l segmento A-B pc=pb; fc=fb; itera= itera+1; } else { // entonces se dio un cambio de signo en el segmento B-C} pa=pb; fa=fb; itera= itera+1; }; }; }; if ( itera > n) fallo=1; } while ( (exito==0) && ( fal lo==0) ); printf ("--------------------------------------------------------------------------------------------\n"); printf ("\n\n\n\n"); // pregunta cual fue la forma en que salio del bucle repetitivo if (fabs(fb)<error) { // se encontro la ra iz } printf ("La raiz de

la ecuacion= %10.6f \n\n\n", pb); }; if (itera>=n) { // no s e encontro la raiz. se cumplio el numero maximo de interaciones } printf (" no se encontro la raiz en %i calculos...\n\n\n", n); }; if (fal lo==1) { //no hubo cambio de signo printf("El proceso se detubo porque no hubo cambio de signo por \n"); printf("por lo tanto esta ecuacion no tiene raiz en este segmento. \n"); printf("cambie los valores de los puntos iniciales y proceda de nuevo...\n \n\n\n"); }; system("PAUSE"); return EXIT_SUCCESS; }

También podría gustarte