Está en la página 1de 11

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA


INGENIERÍA EN COMUNICACIONES Y ELECTRÓNICA

ANALISIS NUMERICO
DOCENTE: CALZADA SERAFIN FELIPE

PRACTICA 5
METODO DEL PUNTO FIJO

2020303263
GARCIA MARTINEZ LESLIE
GRUPO: 4CV9

FECHA DE ENTREGA: 29/09/21


INTRODUCCION
Los métodos abiertos emplean una fórmula para predecir la raíz. Esta fórmula puede
desarrollarse como una iteración simple de punto fijo (también llamada iteración de un
punto o sustitución sucesiva o método de punto fijo), al arreglar la ecuación f(x) = 0 de tal
modo que x esté del lado izquierdo de la ecuación: x = g(x).

Esta transformación se realiza mediante operaciones algebraicas o simplemente


sumando x a cada lado de la ecuación original.

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.

La utilidad de la ecuación es que proporciona una fórmula para predecir un nuevo


valor de x en función del valor anterior de x. De esta manera, dado un valor inicial para la
raíz xi, la ecuación se utiliza para obtener una nueva aproximación xi+1, expresada por la
fórmula iterativa xi+1 = g(xi ).

Donde el error aproximado de esta ecuación se calcula usando el error normalizado.

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

También podría gustarte