Metodos numericos
Escuela Superior de Ingeniería Mecánica y Eléctrica
Unidad “Adolfo López Mateos”
Ingeniería en Sistemas Automotrices
MÉTODOS
NUMÉRICOS
Método de trapecio simple
* Diagrama de flujo
* Desarrollo matemático
f(x)= 0.2 + 25x - 200x2 + 675x3 - 900x4 + 400x5
Desde a=0 hastab=0.8
a=0
b=0.8
n=1
h=
El valor de la integral exacta es igual a 1.6405
* Código
#include<conio.h>
#include<stdio.h>
#include<math.h>
float f(float x);
void marco();
void main()
{
float a,b,Aa,An,E;
marco();
gotoxy(30,7);
printf("Metodo del trapecio simple");
gotoxy(15,9); printf("datos:");
gotoxy(10,20);
printf("Teclee el limiteinferior");
scanf("%f",&a);
gotoxy(20,11);
printf("Teclee el limite superior");
scanf ("%f",&b);
Aa=(pow(b,3)/3)-(pow(a,3)/3);
An=((f(b)+f(a))/2)*(b-a);
E=fabs(Aa-An);
gotoxy(15,13);printf("resultados:");
gotoxy(20,14);
printf("Area analitica : %f",Aa);
gotoxy(20,15);
printf("Area numerica : %f",An);
gotoxy(20,16);
printf("Error del metodo: %f",E);gotoxy(25,22);
printf("Pulse <ENTER> para continuar");
getch();
}
float f (float x)
{
x=pow(x,2);
return x;
}
void marco()
{
int i;
clrscr();
for(i=1;i<=79;i++){
gotoxy(i,1);printf("%c",205);
gotoxy(i,5);printf("%c",205);
gotoxy(i,24);printf("%c",205);
}
for(i=1;i<=24;i++){
gotoxy(1,i);printf("%c",186);
gotoxy(79,i);printf("%c",186);
}gotoxy(1,1);printf("%c",201);
gotoxy(79,1);printf("%c",187);
gotoxy(1,5);printf("%c",204);
gotoxy(79,5);printf("%c",185);
gotoxy(1,24);printf("%c",200);
gotoxy(79,24);printf("%c",188);
gotoxy(38,2);printf("I.P.N");
gotoxy(36,3);printf("E.S.I.M.E.");
return;
}
* Captura de pantalla
Método del trapecio extendido (múltiple, modificado)
*Diagrama de flujo
* Desarrollo matemático
i | Xi | Xi |
0 | X0 = a | X0 = 0 |
0.2 | X1 = x0+h | X1 = 0 + 0.16 = 0.16 |
0.4 | X2 = x1+h | X2 = 0.16 + 0.16 = 0.32 |
0.6 | X3 = x2+h | X3 = 0.32 + 0.16 = 0.48 |
0.8 | X4 = x3+h | X4 = 0.48 + 0.16 = 0.64 |
El valor de la integral exacta es = 1.6405
Ev = solución analítica – solución numérica* Código
#include<conio.h>
#include<stdio.h>
#include<math.h>
float f(float x);
void marco();
void main()
{
float a,b,base,fa,fb;
float sumaxi;
float Aa,An,E,xi,ntrap,i;
base=xi=sumaxi=0.0;
marco();
gotoxy(30,7);
printf("Metodo del trapecio multiple");
gotoxy(15,9);printf("DATOS:");
gotoxy(20,10);printf("Teclee el limite inferior");
gotoxy(20,11);
printf("Teclee el limite superior");
gotoxy(20,12);
printf("Teclee el numero de trapecios");
gotoxy(50,10);scanf("%f",&a);
gotoxy(50,11);scanf ("%f",&b);
gotoxy(50,12);scanf ("%f",&ntrap);
base =(b-a)/ntrap;
fa=f(a);
fb=f(b);
for(i=1;i<ntrap;i++){
xi=a+(i*base);
sumaxi=sumaxi+f(xi);
}Aa=(pow(b,3)/3)-(pow(a,3)/3);
An=(b-a)*(fa+2*(sumaxi)+fb)/(2*ntrap);
E=fabs(Aa-An);
gotoxy(15,15);printf("resultados:");
gotoxy(20,16);
printf("Area usando el metodo del trapecio : %f",Aa);
gotoxy(20,17);
printf("Area usando el metodo analitico... : %f",An);
gotoxy(20,18);
printf("Error del metodo:....... %f",E);
gotoxy(20,22);
printf("Pulse <ENTER> para continuar");
getch();
}
floatf(float x)
{
return pow(x,2);
}
void marco()
{
int i;
clrscr();
for(i=1;i<=79;i++){
gotoxy(i,1);printf("%c",205);
gotoxy(i,5);printf("%c",205);
gotoxy(i,24);printf("%c",205);
}
for(i=1;i<=24;i++){
gotoxy(1,i);printf("%c",186);
gotoxy(79,i);printf("%c",186);
}
gotoxy(1,1);printf("%c",201);
gotoxy(79,1);printf("%c",187);
gotoxy(1,5);printf("%c",204);...
Regístrate para leer el documento completo.