Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ANALISIS NUMERICO
DOCENTE: CALZADA SERAFIN FELIPE
PRACTICA 5
METODO DEL PUNTO FIJO
2020303263
GARCIA MARTINEZ LESLIE
GRUPO: 4CV9
Por ejemplo, x2 – 2x + 3 = 0 se arregla para obtener x= (x2 + 3)/2 mientras que sen
x = 0 puede transformarse en la forma de la ecuación sumando x a ambos lados para
obtener x = sen x + x.
OBJETIVO
Realizar el primer código de punto fijo dentro de los métodos numéricos abiertos,
en este caso al inicio se pedirá ingresar al usuario el dato para obtener la graficacion
indicada de su análisis, seguido de esto y una vez terminada la ejecución de esta incluyendo
GML 1
la caratula del programa, es entonces cuando se pedirá al usuario que ingrese el punto
inicial que se va a tratar, así como la tolerancia de esta, y una vez anexado se podrá
visualizar de forma ordenada los valores y resultados obtenidos del procedimiento de punto
fijo.
CODIFICACION
//GARCIA MARTINEZ LESLIE
#include <iostream>
#include <graphics.h>
#include <math.h>
#include <iomanip>
#include <windows.h>
#include <4CV9_GML_P.h>
using namespace std;
int e;
const int ANCHO = 720, ALTO = 720;
class PuntoF{
private:
double origen, tolerancia;
public:
PuntoF(double,double);
void imprimir();
};
GML 2
PuntoF::PuntoF(double _origen, double _tolerancia){
origen=_origen;
tolerancia=_tolerancia;
}
void PuntoF::imprimir(){
double M[99][2],e;
double aux = 0.0;
int i=1;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
M[0][1]=origen;
SetConsoleTextAttribute(hConsole, (FOREGROUND_BLUE |
FOREGROUND_BLUE | FOREGROUND_BLUE));
cout<<"\t\t\tIt";
SetConsoleTextAttribute(hConsole, (FOREGROUND_GREEN |
FOREGROUND_GREEN | FOREGROUND_GREEN));
cout<<"\t\t\tXi";
SetConsoleTextAttribute(hConsole, (FOREGROUND_RED |
FOREGROUND_RED | FOREGROUND_RED));
cout<<"\t\t\t\tError"<<endl<<endl;
SetConsoleTextAttribute(hConsole, (FOREGROUND_RED |
FOREGROUND_GREEN | FOREGROUND_BLUE));
do{
M[i][0]=i;
M[i][1]=(-2*(pow(M[i-1][1],3))+11.7*(pow(M[i-1][1],2))
+5)/17.7;
M[i][2]=((M[i][1]-M[i-1][1])/M[i][1])*100;
if(M[i][2]<0){
e=M[i][2]*(-1);
}
else{
e=M[i][2];
GML 3
}
cout<<"\t\t\t"<<M[i][0]<<"\t\t"<<setw(20)<<setprecision(15)<<M[i]
[1]<<"\t\t"<<e<<endl;
if(e>tolerancia)
aux = M[i][1];
i=i+1;
}while(e>tolerancia);
gotoxy(6,27);
cout << "La raiz es: "; SetConsoleTextAttribute(hConsole,
(FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_BLUE));
cout << aux;
SetConsoleTextAttribute(hConsole, (FOREGROUND_RED |
FOREGROUND_GREEN| FOREGROUND_BLUE));
}
void dibujarLinea( int moverX, int moverY, int dibujarX, int dibujarY, int color, int textoX,
int textoY, char *nombre ) {
moveto ( moverX, moverY );
setcolor ( color );
lineto ( dibujarX, dibujarY );
outtextxy( textoX, textoY, nombre );
}
void dibujarExponente ( int e ){
float x, y;
for ( x = -360 ; x <= 360; x += 0.01 ) {
y = pow ( x , e ) / 100;
putpixel( 360 + x ,360 - y , YELLOW );
}
}
void pintarPlano ( ) {
initwindow( ANCHO, ALTO );
dibujarLinea( 0, ALTO / 2, ANCHO, ALTO / 2, WHITE, ANCHO - 20, ALTO / 2 + 10,
"X" );
GML 4
dibujarLinea( ANCHO / 2, 0, ANCHO / 2, ALTO, WHITE, ANCHO / 2 + 10, 0, "Y" );
}
int main()
{
PORTADA();
system("PAUSE>NULL");
system("cls");
double xi, tol;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, (FOREGROUND_RED | FOREGROUND_RED |
FOREGROUND_RED));
cout << endl << "\t\t\t\t\t ======== P U N T O F I J O ========" << endl;
SetConsoleTextAttribute(hConsole, (FOREGROUND_RED | FOREGROUND_BLUE |
FOREGROUND_GREEN));
cout << "\n\n\t GRAFICACION "<< endl;
cout << "\tGrado del polinomio: ";
cin >> e;
pintarPlano();
dibujarExponente( e );
getch();
closegraph();
cout<<"\t\tGraficacion finalizada."<<endl;
system("pause>null");
SetConsoleTextAttribute(hConsole, (FOREGROUND_RED |
FOREGROUND_GREEN | FOREGROUND_BLUE));
cout<<"\n\n\tIngrese el punto inicial x0: ";
cin>>xi;
cout<<"\tIngrese la tolerancia: ";
cin>>tol;
cout<<endl<<endl<<endl;
PuntoF P1(xi,tol);
GML 5
P1.imprimir();
return 0;
}
GML 6
PRUEBAS DEL CODIGO
GML 7
GML 8
GML 9
CONCLUSION
El método de punto fijo resulta ser relativamente sencillo tanto al momento de
programar como al momento de presentarlo al usuario, pues la manera de desarrollarse
incluye algunos cortos pasos que se pueden entender de manera practica y sencilla. En este
método es importante destacar los valores de la tolerancia así como tomar en cuenta la
relevancia que tiene el punto inicial dentro de los métodos abiertos, pues esta es la base con
la cual se van a poder procesar los dos siguientes métodos que se incluyen dentro de esta
categoría.
BIBLIOGRAFIA
METODOS NUMERICOS PARA INGENIEROS, 5ta edición, Steven C
Chapra, Raymong P. Canale. Mexico 2006.
GML 10