ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Métodos numéricos.

armando cervantesDocumentos de Investigación8 de Febrero de 2016

8.167 Palabras (33 Páginas)438 Visitas

Página 1 de 33

Instituto Politécnico Nacional

Escuela Superior de Ingeniería Mecánica y Eléctrica

Unidad Azcapotzalco

[pic 1]

[pic 2]

Cervantes García Armando

Chicalote Rodríguez Ivan

Botello Viana Edgar

Hernández Pérez Josué

2MV3

Documentación

Equipos G2 y C

Profesor: Domínguez Zamilpa David

Métodos Numéricos

Contenido

Euler        

Mínimos cuadrados múltiples        

Runge Kutta        

Simpson 1/3 Multiple        

Simpson 1/3 Simple        

Simpson 3/8        

Simpson Combinado        

Trapecio Multiple        

Trapecio Simple        


Euler

#include

#include

void enc()

{

     clrscr();

     gotoxy(35,1);

     printf("I.P.N.");

     gotoxy(33,2); printf("E.S.I.M.E.");

     }

void enunciado()

{

     gotoxy(3,5);

     printf("Problema: Utilizar el metodo de euler para ");

     printf("integrar numericamente la ecuacion siguiente");

     printf("f(x,y) = -2x^3+ 12x^2 -20x +8.5");

     printf("de x=0 hasta x=4 con un tamaño de paso de 0.5");

     printf("La condicion inicial en x=0 es y=1. Tomar en");

     printf("cuenta que la solucion exacta esta dada por la");

     printf("ecuacion y = -0.5x^4 + 4x^3 - 10x^2 + 8.5x +1 \n");

     printf("........................................");

     printf(".........................................\n");

     gotoxy(35,10); printf("SOLUCION\n");

     }

void euler()

{

     float fxi;

     float vi_1, vi;

     float f_xy;

     float h;

     float xr, yr;

     float yi, yi_1;

     

     fxi=0, yi=1, h=0.5, xr=0, yr=1, yi_1=1;

     gotoxy(1,11);

     printf("\nUsando la ecuacion de Euler yi+1 = yi + f(xi, xi) * h");

     gotoxy(1,13);

     printf("x     yverdadera     yeuler\n");

     printf("---------------------------------------\n");

     printf("%f %f %f\n",fxi, yr, yi_1);

     for (fxi=0; fxi<4; fxi=fxi+0.5){

         

         f_xy = -2*fxi*fxi*fxi+12*(fxi*fxi) - 20*fxi +8.5;

         yi_1 = yi + f_xy*h;

         

         xr=xr+0.5;

         yr=-0.5*(xr*xr*xr*xr)+4*(xr*xr*xr)-10*(xr*xr)*8.5*(xr)+1;

         

         printf("%f %f %f \n",fxi+0.5,yr,yi_1);

         yi=yi_1;

         }

     }

     

int main()

{

    char c;

    enc();

    enunciado();

    euler();

    getch();

    return 0;

}    

[pic 3]


Mínimos cuadrados múltiples

/*Metodo de Aproximacion Funcional */

/*Metodo de Minimo Cuadrados Lineales */

/*

 NOTA IMPORTANTE: Tomar como datos de prueba los

 valores del siguiente ejercicio del texto*/

#include

#include

#include

float m[10][10];

float ec[3][4]={

      0.0,0.0,0.0,0.0,

      0.0,0.0,0.0,0.0,

      0.0,0.0,0.0,0.0

      };

float ec1[3][4]={

      0.0,0.0,0.0,0.0,

      0.0,0.0,0.0,0.0,

      0.0,0.0,0.0,0.0

      };

int n;

int i,j;

int ren;

int cl,ln;

float suma_y;

float suma_x,suma_xy,suma_x2;

float suma_c1,suma_c2,suma_c3,A,B;

float bufer1, bufer2;

int main()

{

suma_y=suma_x=suma_xy=suma_x2=0.0;

suma_c1=suma_c2=suma_c3=A=B=0.0;

bufer1=bufer2=0.0;

cl=ln=0;

i=j=n=0;

ren=0;

for(i=0;i<10;i++){

 for(j=0;j<9;j++){

  m[i][j]=0.0;

 }

}

clrscr();

gotoxy(10,4);printf("Numero de puntos a aproximar:");

scanf("%d",&n);

cl=1;

for(i=1;i<=n;i++){

 ren=1;

 ln=5;cl=cl+10;

 gotoxy(cl,ln);printf("x%d=",i);scanf("%f",&m[1][i]);

 ren=2;

 ln=7;

 gotoxy(cl,ln);printf("y%d=",i);scanf("%f",&m[ren][i]);

}

/*Calcular las sumatorias*/

for(i=1;i

 suma_y=suma_y+m[2][i];

 suma_x=suma_x+m[1][i];

 suma_xy=suma_xy+m[1][i]*m[2][i];

 suma_x2=suma_x2+pow(m[1][i],2);

}

/*Colocando los valores de las sumatorias en la matriz

de las ecuaciones*/

ec[1][1]=suma_x;

ec[1][2]=n;

ec[1][3]=suma_y;

ec[2][1]=suma_x2;

ec[2][2]=suma_x;

ec[2][3]=suma_xy;

printf("\n\n suma_y=%f",suma_y);

printf("\n  suma_x=%f",suma_x);

printf("\n    n=%d",n);    

printf("\n  suma_xy=%f",suma_xy);

printf("\n suma_x^2=%f\n",suma_x2);

 

/*Resolviendo el sistema por el metodo de suma y resta

y sumando verticalmente para eliminar a la constante B*/

bufer1=ec[2][2];

bufer2=(-1)*ec[2][2];

for(i=1;i<=2;i++){

 for(j=1;j<=3;j++){

  ec1[i][j]=ec[i][j];

}

}

for(i=1;i<=3;i++){

 ec1[1][i]=ec[1][i]*bufer1;

 ec1[2][i]=ec[2][i]*bufer2;

}

suma_c1=ec1[1][1]+ec1[2][1];

suma_c2=ec1[1][2]+ec1[2][2];

suma_c3=ec1[1][3]+ec1[2][3];

A=suma_c3/suma_c1;

/* Haciendo lo mismo pero ahora eliminando a A */

bufer1=ec[2][1];

bufer2=(-1)*ec[1][1];

for(i=1;i<=2;i++){

 for(j=1;j<=3;j++){

  ec1[i][j]=ec[i][j];

}

}

for(i=1;i<=3;i++){

 ec1[1][i]=ec[1][i]*bufer1;

 ec1[2][i]=ec[2][i]*bufer2;

}

suma_c1=ec1[1][1]+ec1[2][1];

suma_c2=ec1[1][2]+ec1[2][2];

suma_c3=ec1[1][3]+ec1[2][3];

B=suma_c3/suma_c2;

printf("\n\n%0.2fA+ %dB=%0.2f",suma_x,n,suma_y);

printf("\n%0.2fA+%0.2fB=%0.2f",suma_x2,suma_x,suma_xy);

/* Sustituyendo los valores de A y B en la forma de la ecuacion

la linea recta tendremos */

printf("\n\n");

printf("La ecuacion de la recta que mas se ajusta a los puntos es:");

printf("\n\n");

printf("_______________________________________________");

printf("\n");

printf("y=%fx+%f",A,B);

printf("\n");

printf("_______________________________________________");

printf("\n");

getch();

}

[pic 4]


Runge Kutta

#include

#include

float k1(), k2();

float L,R,V,Ti,H;

float Tf,K1,K2;

float i,j,Iant,Inva;

float k1(float Iant)

{

      float x;

      x= H * (-(R/L)*(Iant) + (V/L));

      return(x);

      }

float k2(float K1)

{

      float x;

      x= H * (-(R/L)*(Iant+K1) + (V/L));

      return(x);

      }

     

      int main()

      {

          int cont, cont1, cont2;

          cont=cont1=cont2=0;

          i=j=Iant=Inva=0.0;

          L=R=V=Ti=H=0.0;

         

           clrscr();

           gotoxy(35,1);printf("METODO DE RUNGE-KUTTA\n");

...

Descargar como (para miembros actualizados) txt (24 Kb) pdf (433 Kb) docx (130 Kb)
Leer 32 páginas más »
Disponible sólo en Clubensayos.com