Función recursiva del Teorema de Bolzano

Sergio Asensio

/*Función recursiva del teorema de Bolzano*/

/*Este programa está basado en el teorema de Bolzano y calcula
la antiimagen correspondiente a un número real introducido por
pantalla situado entre las imágenes de dos puntos introducidos
previamente*/

#include <iostream>
#include <math.h>
#define dif pow(10,-6)

using namespace std;

double f(double n);
double bolzano(double p,double q,double r);
double maxim (double w, double v);
double minim (double w, double v);

int main()
{

double a,b,k;

cout<<“Introduce un punto: “<<endl;
cin>>a;
do{cout<<“Introduce otro punto (mayor que el anterior) : “<<endl;
cin>>b;}while(b<a);

cout<<“La imagen del primer numero es: “<<f(a)<<endl<<endl;
cout<<“La imagen del segundo numero es: “<<f(b)<<endl<<endl;
do {cout<<“Introduce un numero entre ” << minim(f(a),f(b)) << ” y “<< maxim(f(a),f(b)) <<endl<<endl;
cin >> k;}
while (k<minim(f(a),f(b))||k>maxim(f(a),f(b)));

cout<<“El punto cuya imagen es ” << k <<” es: “<< bolzano(a,b,k)<<endl;

return 0;}

/*En este apartado declaramos la función con la que vamos a trabajar, he puesto como ejemplo la función f(x)=1/x, aunque  también la podéis sustituir por cualquier otra función.*/

double f(double n)

{double res;

res=1/n;

return res;}

/*Aquí declaramos la función recursiva que constituye el cuerpo del programa y que está basada en el teorema de Bolzano*/

double bolzano(double p,double q,double r)

{double me;

me= (p+q)/2;

if((f(me)-r)<dif &&(f(me)-r)>-dif)

{return me;}

if ((f(me)-r)*(f(p)-r)>0)

{p=me; return bolzano(p,q,r);}

if ((f(me)-r)*(f(q)-r)>0)

{q=me; return bolzano(p,q,r);}

}

/*Definimos la funcion que nos calculara el maximo de los dos puntos
introducidos por teclado*/

double maxim (double w, double v)

{double max;

if (w>v)

{max=w;}

else

{max=v;}

return max;}

/*Definimos la funcion que nos calculara el minimo de los dos puntos
introducidos por teclado*/

double minim (double w, double v)

{double min;

if (w<v)

{min=w;}

else

{min=v;}

return min;}

Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Una respuesta a Función recursiva del Teorema de Bolzano

  1. good!.. (chequea corrección hecha en penúltima línea de función bolzano() ).

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s