Loading documents preview...
//MÉTODO DE SECANTE #include #include using namespace std; void secante(double, double, double, int); // prototipo de función double f (double); // prototipo de función int main() { int imax; // número máximo de iteraciones double a, b; // extremos izquierdo y derecho del intervalo original double epsilon; // criterio de convergencia //ƒobtiene los datos de entrada cout << "Introduzca los límites del intervalo de búsqueda original, a y b : "; cin >> a >> b; cout << "Introduzca los criterios de convergencia : "; cin >> epsilon; cout << "Introduzca el número máximo de iteraciones permitidas : "; cin >> imax; secante(a, b, epsilon, imax); return 0; } //Esta función implementa el método de la secante para encontrar //una raiz de una funcion void secante(double a, double b, double epsilon, int imax) { int i;//ƒcontador de iteraciones actuales double x0, x1;//valores izquierdo y derecho de x del intervalo actual double f0, f1;//función evaluada en estos puntos double dx0;//delta x0 double dx1;//delta x1 //repeticion de los datos de entrada transmitidos cout << "\nEl intervalo de búsqueda original es de " << a << " a " << b << "El criterio de convergencia es : intervalo < " << epsilon << "El número máximo de iteraciones permitido es " << imax << endl; //determina la raiz x0 = a; f0 = f(x0); dx0 = abs(b - a); //iteraciones for (i = 1; i <= imax; i++) { x1 = x0 + dx0; f1 = f(x1); if(abs(f1) < epsilon) // se encuentra la raiz { cout << "\nSe encontró una raiz en x = " << x1 + dx1 << endl << "en " << i << " iteraciones" << endl; cout << "El valor de la funcion es" << f1 << endl; system("pause"); //PERMITIR MOSTRAR EN PATALLA(DETENER) return; }
else // hace la siguiente iteracion { dx1 = (f1 / (f0 - f1))*dx0; x0 = x1; dx0 = dx1; f0 = f1; } } cout << "\nDespués de " << imax << " iteraciones, no se encontro ninguna raiz " << "dentro del criterio de convergencia\n" << "La búsqueda de una raiz ha fallado debido a iteraciones excesivas\n" << "después del número máximo de " << imax << " iteraciones" << endl; return; } //funcion para evaluar f(x) double f(double x) { const double PI = 2 * asin(1.0); // valor de pi return(exp(-x) - sin (0.5 * PI * x)); system ("pause"); return 0; }