PRACTICA 5 PROGRA
Escuela Superior de Ingeniería Mecánica Eléctrica
Zacatenco
Programación Orientada a Objetos
Profesora Lic. María Ivonne Gutiérrez Villalba
Pineda Casas Karina
Boleta: 2015301484
Grupo: 2CM15
PRACTICA 5
OBJETIVO
Conocer y aplicar en los métodos numéricos el concepto de Herencia, observando las ventajas que en la aplicación se tiene.INTRODUCCION
DESARROLLO
Ejercicio 1. METODO DE BISECCION
#include
#include
#include
using namespace std;
class Raices //clase base hereda intervalos, el lìmite de error y la funciòn sobre la cual encontraremos la raiz
{
protected:
float xa, xb,xr;//intervalos de busqueda de raìz y xr aprox. a la raiz.
float er; //error
public:
Raices()//constructor por omisiòn{xa=xb=xr=0;
}
float funcion(float x)
{
return(pow(x,2)-2);//Proponga funciòn a encontrar la raìz
}
float eval()//metodo que evalua si existe de inicio raiz en el intervalo propuesto
{
if (funcion(xa)*funcion(xb)<0)
return 1;
else
return 0;
}
void introduce_intervalos()//metodo que introduce los intervalos
{
cout<<"Introduce el intervalo xa...."<
cin>>xa;cout<<"Introduce el intervalo xb...."<
cin>>xb;
cout<<"introduce el limite del error"<
cin>>er;
}
};//clase Raices
class biseccion: public Raices//clase derivada
{
public:
biseccion():Raices()
{}
void m_bisecc()//algoritmo de biseccion
{
float vant=xr, vact,e;
if (eval()==1)
{
do
{
xr=(xa+xb)/2; // nueva aproximacion a la raiz.
vact=xr;e=error(vact,vant);
imprime(xa,xr,xb,e);
if (funcion(xa)*funcion(xr)<0) //la raiz esta en intervalo xa y xr
{
xb=xr;
}
else if(funcion(xb)*funcion(xr)<0) //la raiz esta en intervalo xr y xb
{
xa=xr;
}
//++;
vant=xr;
}while(e>er);//while mientras se llega al error limitado por el usuario
cout<
cout<<"Aproximacion a la raiz es..."<
}//ifelse if (eval()==0)// si no hay raiz en el intervalo
{
cout<<"no hay raiz"<
} //else if
} //m_bisecc
void imprime(float a, float r, float b, float e)//metodo que imprime iteracion por iteracion como cambia el intervalo
{
cout<
}
float error(float vact, float vant)//metodo que calcula el error
{return(fabs((vact-vant)/vact)*100);
}
};//clase bisecccion
int main()
{
system("color 8A");
biseccion objbisec;
objbisec.introduce_intervalos();
objbisec.m_bisecc();
getch();
}
Ejercicio 1. METODO DE BREGLA FALSA
#include
#include
#include
using namespace std;
class Raices //clase base hereda intervalos, el lìmite de error y la funciòn sobre la cual encontraremos laraiz
{
protected:
float xa, xb,xr;//intervalos de busqueda de raìz y xr aprox. a la raiz.
float er; //error
public:
Raices()//constructor por omisiòn
{xa=xb=xr=0;
}
float funcion(float x)
{
return(pow(x,2)-2);//Proponga funciòn a encontrar la raìz
}
float eval()//metodo que evalua si existe de inicio raiz en el intervalo propuesto
{
if (funcion(xa)*funcion(xb)<0)return 1;
else if (funcion(xa)*funcion(xb)>0)
return 0;
else if (funcion(xa)*funcion(xb)==0)
return 2;
}
void introduce_intervalos()//metodo que introduce los intervalos
{
cout<<"Introduce el intervalo xa...."<
cin>>xa;
cout<<"Introduce el intervalo xb...."<
cin>>xb;
cout<<"introduce el limite del error"<
cin>>er;
}
};//clase Raices
classbiseccion: public Raices//clase derivada
{
public:
biseccion():Raices()
{}
void m_bisecc()//algoritmo de biseccion
{
float vant=xr, vact,e;
if (eval()==1)
{
do
{
xr=xb-(funcion(xb)*(xa-xb))/(funcion(xa)-funcion(xb)); // nueva aproximacion a la raiz.
vact=xr;
e=error(vact,vant);
imprime(xa,xr,xb,e);
if (funcion(xa)*funcion(xr)<0) //la raiz esta en intervalo xa y xr...
Regístrate para leer el documento completo.