Programa c++ de biseccion con clase
Jose MolinaPráctica o problema9 de Octubre de 2015
1.060 Palabras (5 Páginas)221 Visitas
/*
IPN
Programa Biseccion
Objetivo: encntrar la raiz de una funcion con biseccion
fecha de entrega 08/09/15
*/
using namespace std;
#include <iostream>
#include <cmath>
struct Bise
{
double IntMen; //Intervalo Menor = Xa
double fxa; // Valor de Xa evaludo en la funcion
double IntMay; //Intervalo Mayor = Xb
double fxb; // Valor de Xb evaludo en la funcion
double Emin; // Error minimo
double Xm; // Punto Medio
double fxm; // Valor de Punto Medio evaluado en la funcion
};
void SolicitIntervalo(Bise *AptA); // Solicita Xa, Xb, Error minimo y calcula Fxa, Fxb
void BiseccionInicial(Bise *AptA); // Valida que de inicia sea una grafica valida para la biseccion
void EvaluarPunOpues(Bise *AptA); //Compara en que sector Xa-Xm * Xm-Xb se procede con la biseecion
double Funcion(double I); //Evalua los distintos puntos en la funcion dada
void CalMedia(Bise *AptA); // Calcula el punto medio
void Imprimir(Bise *A);
int main(void)
{
system("cls");
Bise A;
Bise *AptA;
AptA = &A;
double C=0;
int It=0;
SolicitIntervalo(AptA);
BiseccionInicial(AptA);
cout<<endl;
Imprimir(AptA);
cout<<endl;
cout << "fxa: "<< AptA->fxa << endl;
cout << "fxb: "<< AptA->fxb << endl;
cout << "Biseccion procede" << endl << endl;
do
{ It++;
CalMedia(AptA);
AptA->fxm = Funcion(AptA->Xm);
cout << endl;
EvaluarPunOpues(AptA);
C=AptA->fxm;
if(C < 0 )
{
C = AptA->fxm *-1;
}
cout << endl << endl;
cout<<"Nemuero de iteraciones: "<<It<<endl;
Imprimir(AptA);
}
while(C >(AptA->Emin) );
{
cout << endl << endl;
cout << "Biseccion Final" << endl;
CalMedia(AptA);
AptA->fxm = Funcion(AptA->Xm);
}
system("pause");
return 0;
}
void SolicitIntervalo(Bise *AptA)
{
cout << "Ingresa intervalo menor: ";
cin >> AptA->IntMen;
cout << "Ingresa intervalo Mayor: ";
cin >> AptA->IntMay;
cout << "Ingresa Error Minimo: ";
cin >> AptA->Emin;
AptA->fxa = Funcion(AptA->IntMen);
AptA->fxb = Funcion(AptA->IntMay);
cout << endl;
}
void BiseccionInicial(Bise *AptA)
{
if((AptA->fxa * AptA->fxb) > 0)
{
cout << "No procede Biseccion: ";
Imprimir(AptA);
system("Pause");
...