Вы находитесь на странице: 1из 4

#include <iostream>

#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <iomanip>
#include <windows.h>
#include <dos.h>

using namespace std;

double biseccion (double a, double b, double tol, int maxiter);


void mostrar();

int main ()
{
mostrar();
return 0;
}

void mostrar()
{
double q,w,y,tol,a,b,x;
int maxiter;
int opc;
do
{
system("cls");
cout<<"\n\n\n\t\t\t ---METODO DE BISECCION---\n\n\t\t\t\tInciso
(b)\n\n\t\tf(x)=-1.53(x^2)+39e^(0.0833x)+23x+(x^3)sin(7x)+22)";
cout<<"\n\nDe tu invervalo cerrado:\n";
cout<<"\n\n\tDa el valor inferior:\t";
cin>>q;
cout<<"\n\tDa el valor superior:\t";
cin>>w;
cout<<" \tx\t f(x)";
for(x=q;x<=w;x+=0.1)
{
cout<<"\n\t"<<x<<"\t";
y=((-1.53*pow(x,2))+(39*exp(0.0833*x))+(23*x)+(pow(x,3)*sin(7*x))+22);
cout<<y;

}
cout<<"\n\n\tPara seleccionar tus limites a y b, deberas de notar\n\ten que
punto la funcion f(x) presenta un cambio de signo\n";
getch();
cout<<"\n\n\tSi observas 2 cambios de signo, ingresa solo los valores para\n\ta
y b postivivos\n\n";
getch();
cout<<"\n\n\tIngresa el limite inferior:\t";
cin>>a;
cout<<"\n\n\tIngresa el limite superior:\t";
cin>>b;
cout<<"\n\n\tIngresa la tolerancia de error:\t";
cin>>tol;
cout<<"\n\n\tIngresa la iteracion maxima:\t";
cin>>maxiter;
system("cls");
cout<<"\n\n\t\t\t";
Sleep(100);cout<<"C";
Sleep(100);cout<<"a";
Sleep(100);cout<<"l";
Sleep(100);cout<<"c";
Sleep(100);cout<<"u";
Sleep(100);cout<<"l";
Sleep(100);cout<<"a";
Sleep(100);cout<<"n";
Sleep(100);cout<<"d";
Sleep(100);cout<<"o";
Sleep(100);cout<<".";
Sleep(100);cout<<".";
Sleep(100);cout<<".";
Sleep(300);
system("cls");
cout<<"\n\n\n\t\tLa raiz de f(x)
es:\t"<<setprecision(20)<<biseccion(a,b,tol,maxiter);
getch();
system("cls");
cout<<"\n\n Si deseas realizar un calculo nuevo,\n presiona 1, para salir,
presiona 0\t";
cin>>opc;
system("cls");
}
while (opc==1);
}

double biseccion (double a, double b, double tol, int maxiter)


{
double fa,fb,e,Xm,fxm,op;
int i;

fa=((-1.53*pow(a,2))+(39*exp(0.0833*a))+(23*a)+(pow(a,3)*sin(7*a))+22);
fb=((-1.53*pow(b,2))+(39*exp(0.0833*b))+(23*b)+(pow(b,3)*sin(7*b))+22);
if(fa*fb<0)
{
i=0;
xy:
if(i>maxiter)
{
cout<<"\n\n\tEl resultado no pudo ser encontrado, puesto que el
metodo no convergio\n\ten el numero de iteraciones ingresado";
cout<<"\n\nDesea volver a intentarlo?:\t";
cin>>op;
if(op==1)
{
mostrar();
}
exit(0);
}
fa=((-1.53*pow(a,2))+(39*exp(0.0833*a))+(23*a)+(pow(a,3)*sin(7*a))+22);
fb=((-1.53*pow(b,2))+(39*exp(0.0833*b))+(23*b)+(pow(b,3)*sin(7*b))+22);
Xm=(a+b)/2.0;
if (Xm==0)
{
return Xm;
}
else if (!(Xm==0))
{
fxm=((-1.53*pow(Xm,2))+(39*exp(0.0833*Xm))+(23*Xm)+
(pow(Xm,3)*sin(7*Xm))+22);
if (fb*fxm<0)
{
a=Xm;
i=i+1;
}
else if (fb*fxm>0)
{
b=Xm;
i=i+1;
}
e=fabs(b-a)/2.0;
if (e<tol)
{
cout<<"\n\n\tResultado en la Iteracion:\t"<<i;
cout<<"\n\tXm="<<Xm;
cout<<"\n\tCon un error de e= "<<e;
return Xm;
}
else if(e>tol)
{
cout<<"\n\n\tResultado en la Iteracion:\t"<<i;
cout<<"\n\tXm="<<Xm;
cout<<"\n\tCon un error de e= "<<e;
goto xy;
}
}
}
}

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-

#include <iostream>
#include <iomanip>
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

double tangente(double Xo, double tol, double itermax);

int main()
{
double Xo,tol,itermax;
xy:
cout<<"\n\n\t\tDa el valor incial de Xo:\t";
cin>>Xo;
cout<<"\n\n\t\tIngresa la tolerancia de error:\t";
cin>>tol;
cout<<"\n\n\t\tDa el numero de iteracion maxima:\t";
cin>>itermax;
cout<<"\n\n\n\t\tEl resultado es:
"<<setprecision(10)<<tangente(Xo,tol,itermax);
goto xy;
return 0;
}

double tangente(double Xo, double tol, double itermax)


{
int i=1;
double fx,df,e,Xi;
do
{
fx=2.29*pow(Xo,3)-4*exp(0.0*Xo)+7*Xo+11*pow(Xo,2)*cos(5*Xo)+2;
df=6.87*pow(Xo,2)-55*pow(Xo,2)*sin(5*Xo)-0.08*exp(0.02*Xo)+22*Xo*cos(5*Xo)+7;
Xi=Xo-(fx/df);
cout<<"\n\tLa raiz aproximada x en la iteracion "<<i<<" fue
"<<setprecision(10)<<Xi;
e=fabs((Xi-Xo)/Xi);
cout<<"\n\tCon un error de:\t"<<setprecision(10)<<e<<"\n\n";
i++;
if (i>itermax)
{
cout<<"\n\nSe excedio el numero de intentos para calcular la raiz...";
getch();
}
Xo=Xi;
if (e<tol)
{
return Xi;
}
}while (e>tol);
}