Está en la página 1de 8

#include <iostream>

#include <math.h>
#include <iomanip>
#include <stdlib.h>
using namespace std;
double x0; //solucion aproximada
double x1; //solucion calculada
double e; //cota de error

int iter; //numero de iteraciones


int imax; //numero maximo de iteraciones

//funciones a utilizar

void cargar_datos()
{
cout<<"Ingrese el valor de la solucion aproximada: \n";
cin>>x0;
cout<<"Ingrese la presicion deseada: \n";
cin>>e;
cout<<"Ingrese la cantidad maxima de iteraciones: \n";
cin>>imax;
}

double G(double x) // AQUI VA LA FUNCION PS

{
return cos(x);
}

int punto_fijo()
{
int k;
bool fin; //designa fin una variable booleana.
k=1; // parece que k va a ser el que lleve la cuenta de las
iteraciones
fin=false; //hace que fin sea igual a FALSE
while (k<imax&&fin==false) //mientras que fin sea false y k sea menor que
imax...
{
x1=G(x0); //reemplaza x0 en la funcion y el resultado va a ser x1
if(fabs(x1-x0)<e //si la diferencia entre los dos valores es menor que epsilon
{
//se encontro la sulucion
iter=k;
cout<<fixed<<setprecision(8);
cout<<"\nSolucion entontrada en "<<iter<<" iteraciones";
cout<<"\nX="<<x1<<"\n";
fin=true; //aqui se hace que fin tome el valor TRUE, de esta
manera se detiene el ciclo while
}
else
{
k=k+1; //
x0=x1; // SI LA DIFERENCIA NO ES MENOR QUE EPSILON
ENTONCES SIGUE ITERANDO
}
}
if(k>= imax)
{
cout<<"\nSE ALCANZO EL NUMERO MAXIMO DE ITERACIONES.\n";
}
}

// ahora si, la funcion principal para llamar las demas funciones que sean necesarias

int main()
{
cargar_datos();
punto_fijo();
return 0;
}

Punto 2
#include <iostream>
#include <math.h>
#include <iomanip>
#include <stdlib.h>
using namespace std;
double x0, x1,e;
int iter, imax,f;
void cargar_datos()
{

cout<<"Que inciso del tp voy a resolver. Presione: "<<"\n (punto 1)=1, punto 2a=2, o
punto 2b=3? : \n";
cin>>f;
cout<<"Ingrese el valor de la solucion aproximada: \n";
cin>>x0;
cout<<"Ingrese la presicion deseada: \n";
cin>>e;
cout<<"Ingrese la cantidad maxima de iteraciones: \n";
cin>>imax;
}

double G(double x)
{
// AQUI VA LA FUNCION PS

if(f==1)
{
return cos(x);
}
if(f==2)
{
return (exp(-x))/2;
}
if(f==3)
{
return 1-exp(-2*x);
}

}
int punto_fijo()
{
int k;
bool fin; //designa fin una variable booleana.
k=1; // parece que k va a ser el que lleve la cuenta de las iteraciones
fin=false; //hace que fin sea igual a FALSE
while (k<imax&&fin==false) //mientras que fin sea false y k sea menor que imax...
{
x1=G(x0); //reemplaza x0 en la funcion y el resultado va a ser x1
if(fabs(x1-x0)<e) //si la diferencia entre los dos valores es menor que
epsilon entonces..
{
//se encontro la sulucion
iter=k;
cout<<fixed<<setprecision(8);
cout<<"\nSolucion entontrada en "<<iter<<" iteraciones";
cout<<"\nX="<<x1<<"\n";
fin=true; //aqui se hace que fin tome el valor TRUE, de esta
manera se detiene el ciclo while
}
else
{ //
k=k+1; //
x0=x1; // SI LA DIFERENCIA NO ES MENOR QUE EPSILON
ENTONCES SIGUE ITERANDO
} //
}
if(k>= imax)
{
cout<<"\nSE ALCANZO EL NUMERO MAXIMO DE ITERACIONES.\n";
}
}
int main()
{
bool seguir=true;
int p;
while(seguir==true)
{
cargar_datos();
punto_fijo();
cout<<"\nDESEA REALIZAR OTRA OPERACION? SI=1, NO=0\n";
cin>>p;
if (p==0)
{
seguir=false;
}
else
{
system("cls");
}
}
return 0;
}
A
B

Ejercicio 3
Newton raphson
#include <iostream>
#include <math.h>
#include <iomanip>
#include <stdlib.h>
using namespace std;
double x0, x1,e;
int iter, imax,f;
void cargar_datos()
{

cout<<"Ingrese el valor de la solucion aproximada: \n";


cin>>x0;
cout<<"Ingrese la presicion deseada: \n";
cin>>e;
cout<<"Ingrese la cantidad maxima de iteraciones: \n";
cin>>imax;
}

int main()
{
iter=0;
x1=x0+1;
cargar_datos();
while(fabs(x0-x1)>e && iter<imax) //
{
x1=x0;
x0=x1-((2*x1-exp(-x1))/(2+exp(-x1)));
//DE manera general evaluados en x0
iter=iter+1;
}
if(iter<=imax && fabs(x1-x0)<=e)
{
cout<<"\nla solucion es:"<<x0<<" iter= "<<iter<<"\n\n";
}
else
{
cout<<"\nse llegi al maximo de iteraciones. iter= "<<iter<<"\n";
}
}
Con el 2a

con el 2b
Metodo de la recta secante
#include <iostream>
#include <math.h>
#include <iomanip>
#include <stdlib.h>
using namespace std;
double x0, x1,e;
int iter, imax,c;
void cargar_datos()
{

cout<<"Ingrese el valor de la solucion aproximada: \n";


cin>>x0;
cout<<"Ingrese el valor del punto C: \n";
cin>>c;
cout<<"Ingrese la presicion deseada: \n";
cin>>e;
cout<<"Ingrese la cantidad maxima de iteraciones: \n";
cin>>imax;
}

int main()
{
iter=0;
x1=x0+1;
cargar_datos();
while(fabs(x0-x1)>e && iter<imax) //
{
x0=x1;
x1=((2*c-exp(-c))*x0-(2*x0-exp(-x0))*c)/((2*c-exp(-c))-(2*x0-exp(-x0)));
//DE manera general evaluados en
x0
iter=iter+1;
}
if(iter<=imax && fabs(x1-x0)<=e)
{
cout<<"\nla solucion es:"<<x0<<" iter= "<<iter<<"\n\n";
}
else
{
cout<<"\nse llegi al maximo de iteraciones. iter= "<<iter<<"\n";
}
}
Ejemplo 2 a

Ejemplo 2 b

También podría gustarte