Powered By Blogger

martes, 11 de diciembre de 2012

Tutorial Metodo de Euler Modificado


EULER MEJORADO


//Torres Martinez Gustavo Alan
//Grupo:4CM1
//Programa que realiza la solucion de una diferencial ordinaria por el metodo
//de EULER MEJORADO.

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

void main(void)
{
int j=1;
double nh,h,nx,x=0,y0=2,yp,yc,i,era;
clrscr();
cout<<"La funci¢n es: f(x,y)=xy; sujeta a y0=2.";
cout<<"\n\nDame el valor del incremento h:";
cin>>nh;
cout<<"Dame el valor para x:";
cin>>nx;
for(i=0;i<nx;i=i+nh)
{
yp=y0+(x*y0*nh);
yc=y0+(nh/2)*((x*y0)+((x+nh)*yp));
era=((yc-y0)/yc)*100;if(era<=0.5){era=100;}
x=x+nh;
y0=yc;
printf("\nY%dp=%2.9f   Y%dc=%2.9f   Era(%d)=%2.2f%",j,yp,j,yc,j,fabs(era));
j++;
}
cout<<endl<<endl;
textcolor(10+128);
cprintf("             Presiona cualquier tecla....");
getch();
}

METODO DE EULER


//Torres Martinez Gustavo Alan
//Grupo:4CM1
//Programa que realiza la solucion de una diferencial ordinaria por el metodo
//de EULER.

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

void main(void)
{
int j;
double nh,h,nx,x=0,y0=2,y,y1,i,era;
clrscr();
cout<<"La funci¢n es: f(x,y)=xy; sujeta a y0=2.";
cout<<"\nDame el valor del incremento h:";
cin>>nh;
cout<<"Dame el valor para x:";
cin>>nx;
for(i=0,j=1;i<=nx;i=i+nh,j++)
{
y=y0+(x*y0*nh);
era=((y-y0)/y)*100;if(era==0){era=100;}
y0=y;
x=x+nh;
printf("\nY%d=%2.9f\tEra(%d)=%2.2f%",j,y,j,fabs(era));
}
cout<<endl<<endl;
textcolor(10+128);
cprintf("             Presiona cualquier tecla....");
getch();
}

"INTERPOLACION DE N-ESIMO ORDEN DE NEWTON"


//Torres Martinez Gustavo Alan
//Grupo:4CM1
//Programa que realiza diferencias divididas para determinar el valor de
//de una funcion conocida en base al valor de la funcion evaluada en puntos
//equidistantes por medio de "INTERPOLACION DE N-ESIMO ORDEN DE NEWTON"

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

void main(void)
{
double fx,fx0,fx1,fx2,fx3,fx10,fx21,fx32,fx210,fx321,fx3210,f3x,b0,b1,b2,b3,x,x0,x1,x2,x3,erv;
clrscr();
x=2;
x0=1;
x1=3;
x2=4;
x3=5;
fx=log(x);
fx0=log(x0);
fx1=log(x1);
fx2=log(x2);
fx3=log(x3);
cout<<"Calculando el ln(2) por medio del polinomio de interpolacion de n-Çsimo"<<endl<<"oden de Newton con x=1,3,4,5."<<endl<<endl;
b0=fx0;
b1=(fx1-fx0)/(x1-x0);  fx10=b1;
b2=(fx2-fx1)/(x2-x1);  fx21=b2;
b3=(fx3-fx2)/(x3-x2);     fx32=b3;
b2=(fx21-fx10)/(x2-x0);   fx210=b2;
b2=(fx32-fx21)/(x3-x1);   fx321=b2;
b3=(fx321-fx210)/(x3-x0); fx3210=b3;
f3x=b0+fx10*(x-x0)+fx210*(x-x0)*(x-x1)+fx3210*(x-x0)*(x-x1)*(x-x2);
erv=(fx-f3x)/fx*100;
printf("bo=%1.8f  b1=%1.8f  b2=%1.8f   b3=%1.8f\n\n",b0,b1,fx210,fx3210);
printf("f3(x)=%1.8f Erv=%2.2f%",f3x,fabs(erv));
cout<<endl<<endl;
textcolor(10+128);
cprintf("             Presiona cualquier tecla....");
getch();
}

Programa que realiza diferencias divididas para determinar el valor de una funcion conocida en base al valor de la funcion evaluada en puntos equidistantes por medio de "INTERPOLACION LINEAL DE NEWTON"


//Torres Martinez Gustavo Alan
//Grupo:4CM1
//Programa que realiza diferencias divididas para determinar el valor de
//de una funcion conocida en base al valor de la funcion evaluada en puntos
//equidistantes por medio de "INTERPOLACION LINEAL DE NEWTON"

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

void main(void)
{
double f1x,fx,fx0,fx1,f1xa,f1xb,x,x0,x1,erv,era;
clrscr();
x=2;
x0=1;
x1=5;
fx=log(x);
fx0=log(x0);
fx1=log(x1);
cout<<"Calculando el ln(2) por medio del polinomio de interpolacion lineal"<<endl<<"de Newton con: A) ln(1) y ln(5); B) ln(1) y ln(3)."<<endl<<endl;
f1xa=fx0+((fx1-fx0)/(x1-x0))*(x-x0);
erv=(fx-f1xa)/fx*100;
printf("A) f1(x)=%1.8f  Erv=%2.2f  Era=100\n\n",f1xa,fabs(erv));
x1=3;
fx1=log(x1);
f1xb=fx0+((fx1-fx0)/(x1-x0))*(x-x0);
erv=(fx-f1xb)/fx*100;
era=(f1xb-f1xa)/f1xb*100;
printf("B) f1(x)=%1.8f  Erv=%2.2f  Era=%2.2f\n\n",f1xb,fabs(erv),fabs(era));
cout<<endl<<endl;
textcolor(10+128);
cprintf("             Presiona cualquier tecla....");
getch();
}

"INTERPOLACION INVERSA DE LAGRANGE"


//Torres Martinez Gustavo Alan
//Grupo:4CM1
//Programa que realiza diferencias divididas para determinar el valor de
//de una variable independiente conociendo el valor de
//la funcion en ese punto por medio del mÇtodo de
//"INTERPOLACION INVERSA DE LAGRANGE"

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

void main(void)
{
double x,x0,x1,x2,x3,fx,fx0,fx1,fx2,fx3,f3x;
clrscr();
cout<<"Calculando de la variable independiente por medio del polinomio de Interpolacion"<<endl<<"Inversa de Lagrange conociendo que en ese punto la funcion vale 11:"<<endl;
cout<<endl<<" x   2    3    18    38"<<endl;
cout<<endl<<" y   0    1    4     6"<<endl<<endl;
cout<<"            11"<<endl;
x=11;
x0=2;
x1=3;
x2=18;
x3=38;
fx0=0;
fx1=1;
fx2=4;
fx3=6;
f3x=(((x-x0)*(x-x2)*(x-x3))/((x1-x0)*(x1-x2)*(x1-x3)))*fx1+(((x-x0)*(x-x1)*(x-x3))/((x2-x0)*(x2-x1)*(x2-x3)))*fx2+(((x-x0)*(x-x1)*(x-x2))/((x3-x0)*(x3-x1)*(x3-x2)))*fx3;
printf("\n\ny=%2.4f     f(4.74)=11",f3x);
cout<<endl<<endl;
textcolor(10+128);
cprintf("             Presiona cualquier tecla....");
getch();
}

Programa que realiza diferencias divididas para determinar el valor de una funcion conocida en base a una tabla de datos, por medio del método de "INTERPOLACION DE LAGRANGE"


//Torres Martinez Gustavo Alan
//Grupo:4CM1
//Programa que realiza diferencias divididas para determinar el valor de
//una funcion conocida en base a una tabla de datos, por medio del mÇtodo de
//"INTERPOLACION DE LAGRANGE"

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

void main(void)
{
double x,x0,x1,x2,x3,x4,fx,fx0,fx1,fx2,fx3,fx4,f1x,f2x,f3x,f4x,erv;
clrscr();
cout<<"Calculando el ln(2) por medio del polinomio de interpolacion"<<endl<<"de Lagrange en base a la siguiente tabla:"<<endl;
cout<<endl<<" x   1    4       6       9      11"<<endl;
cout<<endl<<"f(x) 0 1.3863  1.7918  2.1972  2.3979"<<endl<<endl;
cout<<"          ln(2)=0.6931"<<endl;
x=2;
x0=1;
x1=4;
x2=6;
x3=9;
x4=11;
fx=log(x);
fx0=0;
fx1=1.3863;
fx2=1.7918;
fx3=2.1972;
fx4=2.3979;
f1x=((x-x1)/(x0-x1))*fx0+((x-x0)/(x1-x0))*fx1;
erv=(fx-f1x)/fx*100;
printf("\n\nf1(x)=%2.4f   Erv=%2.2f%",f1x,fabs(erv));
f2x=(((x-x0)*(x-x2))/((x1-x0)*(x1-x2)))*fx1+(((x-x0)*(x-x1))/((x2-x0)*(x2-x1)))*fx2;
erv=(fx-f2x)/fx*100;
printf("\n\nf2(x)=%2.4f   Erv=%2.2f%",f2x,fabs(erv));
f3x=(((x-x0)*(x-x2)*(x-x3))/((x1-x0)*(x1-x2)*(x1-x3)))*fx1+(((x-x0)*(x-x1)*(x-x3))/((x2-x0)*(x2-x1)*(x2-x3)))*fx2+(((x-x0)*(x-x1)*(x-x2))/((x3-x0)*(x3-x1)*(x3-x2)))*fx3;
erv=(fx-f3x)/fx*100;
printf("\n\nf3(x)=%2.4f   Erv=%2.2f%",f3x,fabs(erv));
f4x=(((x-x0)*(x-x2)*(x-x3)*(x-x4))/((x1-x0)*(x1-x2)*(x1-x3)*(x1-x4)))*fx1+(((x-x0)*(x-x1)*(x-x3)*(x-x4))/((x2-x0)*(x2-x1)*(x2-x3)*(x2-x4)))*fx2+(((x-x0)*(x-x1)*(x-x2)*(x-x4))/((x3-x0)*(x3-x1)*(x3-x2)*(x3-x4)))*fx3+(((x-x0)*(x-x1)*(x-x2)*(x-x3))/((x4-x0)*(x4-x1)*(x4-x2)*(x4-x3)))*fx4;
erv=(fx-f4x)/fx*100;
printf("\n\nf4(x)=%2.4f   Erv=%2.2f%",f4x,fabs(erv));
cout<<endl<<endl;
textcolor(10+128);
cprintf("             Presiona cualquier tecla....");
getch();
}