Sie sind auf Seite 1von 8

INSTITUTO POLITCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERA MECNICA Y ELCTRICA ESIME CULHUACAN

Prctica 1. ECUACIN CUADRTICA Y ERRORES

ALUMNO: LPEZ BALDERAS JAVIER EDGARD CERVANTES CRUZ EDUARDO ASIG. ANLISIS NUMRICO PROF. JUAN ANGEL RODRGUEZ GMEZ GRUPO: 4CV3 31/ENERO/2014

/*Prctica 1. Este programa resuelve una ecuacion cuadratica que ingrese el usuario y luego compara ese resultado con un valor que el usuario le d y compara los errores relativo, absoluto*/ //Alumnos: Lpez Balderas Javier Edgard y Eduardo Cervantes Cruz //28/Enero/2014. Grupo: 4CV3 Materia: Anlisis numrico #include <iostream> #include <conio.h> #include <math.h> #include <stdlib.h> using namespace std; main() { system("cls"); system("Color 0A"); int ia, ib, ic, iSalir; double fr, fd, ff, fdi, fri, fi; double Valor1Dado, Valor1iDado, Valor2Dado, Valor2iDado, Valor1_1Real, Valor1_2Real, Valor1iReal, Valor2iReal; double Ex1Rrelativo, Ex2Rrelativo, Ex1irelativo, Ex2irelativo, E1Absoluto, E1iAbsoluto, E2Absoluto, E2iAbsoluto, E1Porcentual, E2Porcentual; do { cout<<"Este programa determina las raices de una ecuacion cuadratica que se ingrese.\n\n"; cout<<"Una ecuacion de segundo grado o ecuacion cuadratica, es aquella en la cual\n"; cout<<"la mayor potencia de la incognita considerada en la ecuacion, es dos.\n\n"; cout<<"La expresion general de una ecuacion cuadratica es:\n\n\n"; cout<<"\t\tax^2 + bx + c con a diferente de 0\n\n\n"; cout<<"Donde x representa la variable y [a, b y c] son constantes; a es un coeficiente\n"; cout<<"cuadratico (distinto de 0), b el coeficiente lineal y c es el termino\n"; cout<<"independiente. La grafica de una funcion cuadratica es una parabola.\n"; cout<<"La ecuacion cuadratica proporciona las intersecciones de la parabola con el eje\n"; cout<<"de las abscisas, que pueden ser en dos puntos, en uno o ninguno.\n\n\n"; cout<<"\t\t\t\tDiscriminante\n\n"; cout<<"En la formula anterior, la expresion dentro de la raiz cuadrada recibe el nombre"; cout<<"de discriminante de la ecuacion cuadratica. Suele representarse con la letra D\n"; cout<<"o bien con el simbolo (delta): Delta = b^2 - 4ac\n"; cout<<"Una ecuacion cuadratica con coeficientes reales tiene o bien dos soluciones\n"; cout<<"reales distintas o una sola solucion real de multiplicidad 2, o bien dos raices\n"; cout<<"complejas. \n\n\tEl discriminante determina la indole y la cantidad de raices.\n\n"; cout<<"1. Dos soluciones reales y diferentes si el discriminante es positivo.\n"; cout<<"2. Una solucion real doble si el discriminante es cero.\n"; cout<<"3. Dos numeros complejos conjugados si el discriminante es negativo."; cout<<"\n\n\n"; cout<<"Ingrese el valor de [a], que es el termino cuadratico y presione [ENTER]. "; cin>>ia; cout<<"\nIngrese el valor de [b], que es el termino lineal y presione [ENTER]. "; cin>>ib; cout<<"\nIngrese el valor de [c], que es el termino independiente y presione [ENTER]. ";

cin>>ic; //Las raices de una ecuacin cuadrtica se obtienen resolviendo la siguiente frmula general: //X1,X2=(-b +/- raiz cuadrada de b^2-4ac) / 2a //El discriminante b^2-4ac puede tener tres posibles soluciones, las cuales indican el tipo de raiz. fr = (ib * ib) - (4 * (ia * ic)); fd = (-ib + (sqrt ( fr ) ) ) / (2 * ia); ff = (-ib - (sqrt ( fr ) ) ) / (2 * ia); //Calculando el Discriminante. //CALCULANDO x1 //Calculando x2

fdi = (-ib / (2 * ia) ); //Calculando la parte real de la raiz fri = (sqrt( ( fr ) * ( -1 ) ) ); //Separando la el menos uno de la raiz. fi = ( (fri) / (2 * ia) ); //Parte imaginaria del numero complejo. //____________________________________________________Primer caso de soluciones if( fr < 0 ) { system("cls"); cout<<"Las raices son imaginarias y distintas (dos numeros complejos conjugados).\n\n\n\n"; cout<<"X1 = "<<fdi<<" + "<<fi<<"i \n\n"; cout<<"X2 = "<<fdi<<" - "<<fi<<"i \n\n"; cout<<"\n\n\nIngrese el resultado de la parte real de x1 que usted ha calculado y presione [ENTER]. "; cin>>Valor1Dado; cout<<"\n\n\nIngrese el resultado de la parte imaginaria de x1 que usted ha calculado y presione [ENTER]. "; cin>>Valor1iDado; cout<<"\n\n\nIngrese el resultado de la parte real de x2 que usted ha calculado y presione [ENTER]. "; cin>>Valor2Dado; cout<<"\n\n\nIngrese el resultado de la parte imaginaria de x2 que usted ha calculado y presione [ENTER]. "; cin>>Valor2iDado; Valor1_1Real=fdi; Valor1iReal=fi; Valor1_2Real=fdi; Valor2iReal=( ( fi ) * ( -1 ) ); cout<<"\n\n\t\t\tERRORES OBTENIDOS\n\n\n"; cout<<"Valor obtenido por la maquina de la parte real de x1 = "<<Valor1_1Real<<endl; cout<<"Valor obtenido por la maquina de la parte imaginaria de x1 = "<<Valor1iReal<<endl; cout<<"\n\nValor obtenido por la maquina de la parte real de x2 = "<<Valor1_2Real<<endl; cout<<"Valor obtenido por la maquina de la parte imaginaria de x2 = "<<Valor2iReal<<endl; cout<<"\n\nValor obtenido por el usuario de la parte real de x1 ="<<Valor1Dado<<endl; cout<<"Valor obtenido por el usuario de la parte imaginaria de x1 ="<<Valor1iDado<<endl; cout<<"\n\nValor obtenido por el usuario de la parte real de x2 ="<<Valor2Dado<<endl; cout<<"Valor obtenido por el usuario de la parte imaginaria de x2 ="<<Valor2iDado<<endl; //_________________________________________________________Inicio de calculo del error relativo Ex1Rrelativo=Valor1_1Real-Valor1Dado; Ex1irelativo=Valor1iReal-Valor1iDado; Ex2Rrelativo=Valor1_2Real-Valor2Dado; Ex2irelativo=Valor2iReal-Valor2iDado; cout<<"\n\nEl error Relativo de la parte real de x1 = "<<Ex1Rrelativo<<endl; cout<<"\n\nEl error Relativo de la parte imaginaria de x1 = "<<Ex1irelativo<<endl;

cout<<"\n\nEl error Relativo de la parte real de x2 = "<<Ex2Rrelativo<<endl; cout<<"\n\nEl error Relativo de la parte imaginaria de x2 = "<<Ex2irelativo<<endl; //___________________________________________________Fin de calculo del error relativo E1Absoluto=Ex1Rrelativo/Valor1_1Real; E1iAbsoluto=Ex1irelativo/Valor1iReal; E2Absoluto=Ex2Rrelativo/Valor1_2Real; E2iAbsoluto=Ex2irelativo/Valor2iReal; if(E1Absoluto<0) { E1Absoluto=(E1Absoluto * ( -1 ) ); } if(E1iAbsoluto<0) { E1iAbsoluto=(E1iAbsoluto * ( -1 ) ); } if(E2Absoluto<0) { E2Absoluto=(E2Absoluto * ( -1 ) ); } if(E2iAbsoluto<0) { E2iAbsoluto=(E2iAbsoluto * ( -1 ) ); } cout<<"\n\nEl error Absoluto de la parte real de x1 = "<<E1Absoluto<<endl; cout<<"\n\nEl error Absoluto de la parte imaginaria de x1 = "<<E1iAbsoluto<<endl; cout<<"\n\nEl error Absoluto de la parte real de x2 = "<<E2Absoluto<<endl; cout<<"\n\nEl error Absoluto de la parte imaginaria de x2 = "<<E2iAbsoluto<<endl; //__________________________________________________________________________________ E1Porcentual=Ex1Rrelativo*100; if(E1Porcentual<0) { E1Porcentual=E1Porcentual*(-1); } cout<<"\n\nEl error Porcentual de la parte real de x1 = "<<E1Porcentual<<"%"<<endl; if(E1Porcentual<=0.00001) { cout<<"El Valor de x1 ES aceptado"<<endl; } else { cout<<"El Valor de x1 NO es aceptado"<<endl; } E2Porcentual=Ex2Rrelativo*100; if(E2Porcentual<0) { E2Porcentual=E2Porcentual*(-1); } cout<<"\n\nEl error Porcentual de la parte real de x2 = "<<E2Porcentual<<"%"<<endl; if(E2Porcentual<=0.00001) {

cout<<"El Valor de x2 ES aceptado"<<endl; } else { cout<<"El Valor de x2 NO es aceptado"<<endl; } //___________________________________________________________________________________ } //____________________________________________________Segundo caso de soluciones if( fr == 0 ) { system("cls"); cout<<"Las raices son reales e iguales.\n\n"; cout<<"X1 = "<<fd<<" \n\n"; cout<<"X2 = "<<ff<<" \n\n"; cout<<"\n\n\nIngrese el resultado de x1 que usted ha calculado y presione [ENTER]. "; cin>>Valor1Dado; cout<<"\n\n\nIngrese el resultado de x2 que usted ha calculado y presione [ENTER]. "; cin>>Valor2Dado; Valor1_1Real=fd; Valor1_2Real=ff; cout<<"\n\n\t\t\tERRORES OBTENIDOS\n\n\n"; cout<<"Valor obtenido por la maquina de la parte real de x1 = "<<Valor1_1Real<<endl; cout<<"\n\nValor obtenido por la maquina de la parte real de x2 = "<<Valor1_2Real<<endl; cout<<"\n\nValor obtenido por el usuario de la parte real de x1 ="<<Valor1Dado<<endl; cout<<"\n\nValor obtenido por el usuario de la parte real de x2 ="<<Valor2Dado<<endl; //_____________________________________________________________Inicio de calculo del error relativo Ex1Rrelativo=Valor1_1Real-Valor1Dado; Ex2Rrelativo=Valor1_2Real-Valor2Dado; cout<<"\n\nEl error Relativo de la parte real de x1 = "<<Ex1Rrelativo<<endl; cout<<"\n\nEl error Relativo de la parte real de x2 = "<<Ex2Rrelativo<<endl; //_________________________________________________________Fin de calculo del error relativo E1Absoluto=Ex1Rrelativo/Valor1_1Real; E2Absoluto=Ex2Rrelativo/Valor1_2Real; if(E1Absoluto<0) { E1Absoluto=(E1Absoluto * ( -1 ) ); } if(E2Absoluto<0) { E2Absoluto=(E2Absoluto * ( -1 ) ); } cout<<"\n\nEl error Absoluto de la parte real de x1 = "<<E1Absoluto<<endl; cout<<"\n\nEl error Absoluto de la parte real de x2 = "<<E2Absoluto<<endl; //_________________________________________________________Fin de calculos del error absoluto E1Porcentual=Ex1Rrelativo*100; if(E1Porcentual<0) { E1Porcentual=E1Porcentual*(-1); }

cout<<"\n\nEl error Porcentual de la parte real de x1 = "<<E1Porcentual<<"%"<<endl; if(E1Porcentual<=0.00001) { cout<<"El Valor de x1 ES aceptado"<<endl; } else { cout<<"El Valor de x1 NO es aceptado"<<endl; } E2Porcentual=Ex2Rrelativo*100; if(E2Porcentual<0) { E2Porcentual=E2Porcentual*(-1); } cout<<"\n\nEl error Porcentual de la parte real de x2 = "<<E2Porcentual<<"%"<<endl; if(E2Porcentual<=0.00001) { cout<<"El Valor de x2 ES aceptado"<<endl; } else { cout<<"El Valor de x2 NO es aceptado"<<endl; } //_____________________________________________________________________ } //______________________________________________________tercer caso de solucion if( fr > 0 ) { system("cls"); cout<<"Las raices son reales y distintas.\n\n"; cout<<"X1 = "<<fd<<" \n\n"; cout<<"X2 = "<<ff<<" \n\n"; cout<<"\n\n\nIngrese el resultado de x1 que usted ha calculado y presione [ENTER]. "; cin>>Valor1Dado; cout<<"\n\n\nIngrese el resultado de x2 que usted ha calculado y presione [ENTER]. "; cin>>Valor2Dado; Valor1_1Real=fd; Valor1_2Real=ff; cout<<"\n\n\t\t\tERRORES OBTENIDOS\n\n\n"; cout<<"Valor obtenido por la maquina de la parte real de x1 = "<<Valor1_1Real<<endl; cout<<"\n\nValor obtenido por la maquina de la parte real de x2 = "<<Valor1_2Real<<endl; cout<<"\n\nValor obtenido por el usuario de la parte real de x1 ="<<Valor1Dado<<endl; cout<<"\n\nValor obtenido por el usuario de la parte real de x2 ="<<Valor2Dado<<endl; //____________________________________________________________Inicio de calculo del error relativo Ex1Rrelativo=Valor1_1Real-Valor1Dado; Ex2Rrelativo=Valor1_2Real-Valor2Dado; cout<<"\n\nEl error Relativo de la parte real de x1 = "<<Ex1Rrelativo<<endl; cout<<"\n\nEl error Relativo de la parte real de x2 = "<<Ex2Rrelativo<<endl; //___________________________________________________________Fin de calculo del error relativo

E1Absoluto=Ex1Rrelativo/Valor1_1Real; E2Absoluto=Ex2Rrelativo/Valor1_2Real; if(E1Absoluto<0) { E1Absoluto=(E1Absoluto * ( -1 ) ); } if(E2Absoluto<0) { E2Absoluto=(E2Absoluto * ( -1 ) ); } cout<<"\n\nEl error Absoluto de la parte real de x1 = "<<E1Absoluto<<endl; cout<<"\n\nEl error Absoluto de la parte real de x2 = "<<E2Absoluto<<endl; //_______________________________________________________Fin de calculos del error absolut E1Porcentual=Ex1Rrelativo*100; if(E1Porcentual<0) { E1Porcentual=E1Porcentual*(-1); } cout<<"\n\nEl error Porcentual de la parte real de x1 = "<<E1Porcentual<<"%"<<endl; if(E1Porcentual<=0.00001) { cout<<"El Valor de x1 ES aceptado"<<endl; } else { cout<<"El Valor de x1 NO es aceptado"<<endl; } E2Porcentual=Ex2Rrelativo*100; if(E2Porcentual<0) { E2Porcentual=E2Porcentual*(-1); } cout<<"\n\nEl error Porcentual de la parte real de x2 = "<<E2Porcentual<<"%"<<endl; if(E2Porcentual<=0.00001) { cout<<"El Valor de x2 ES aceptado"<<endl; } else { cout<<"El Valor de x2 NO es aceptado"<<endl; } //_________________________________________________________________________________________ } cout<<"\n\n\n\n\n"; cout<<"Si desea volver al inicio; presione 1 y despues [ENTER]. \n\n\n"; cout<<"Si ya desea salir presione cualquier otro numero y despues [ENTER]. "; cin>>iSalir; system("cls"); } while(iSalir == 1);

cout<<"\n\n\n\n"; cout<<"Programa elaborado por: LOPEZ BALDERAS JAVIER EDGARD y EDUARDO CERVANTES CRUZ"; cout<<"\n\n"; cout<<"Grupo: 4CV3"; cout<<"\n\n"; cout<<"Materia: ANALISIS NUMERICO"; cout<<"\n\n"; cout<<"Profesor: ICSC. JUAN ANGEL RODRIGUEZ GOMEZ"; cout<<"\n\n"; cin.get(); }