%Crear un programa para aproximar el valor de la integral de funciones
%reales por método de trapecio y Simpson
clear
opcion=menu('Seleccionar el método a usar: ','Método del Trapecio',...
'Método de Simpson 1/3 con 2n interv','Método de Simpson 3/8 con 3n interv','Salir');
switch(opcion)
case 1
%PROGRAMA MÉTODO TRAPECIO
f=input('Ingrese la función a integrar f(x)= ','s');
a=input('Ingrese el límite inferior: ');
b=input('Ingrese el límite superior: ');
fprintf('Ingrese el número de trapecios a\n');
n=input('considerar en la integración: ');
xmin=a-1;xmax=b+1;%Extremos
h=(b-a)/n;%Altura
x=a:h:b;
fx=eval(f);y=abs(fx);
A=y(1)+y(n+1);%Términos extremos
B=2*sum(y(2:n));%Término de sumatoria
integral=(h/2)*(A+B);
fprintf('El área es: %10.9f\n',integral);
%Gráfica
xp=xmin:0.2:xmax;%Se define el dominio
x=xp;%se redefine x
yp=eval(f);%f variará con los nuevos x
plot(xp,yp,'r');
hold on
x=a:0.05:b;%gráfica de las particiones
y=eval(f);
bar(x,y,'b');grid on
case 2
%PROGRAMA MÉTODO DE SIMPSON 1/3 CON 2n INTERVALOS
f=input('Ingrese la función a integrar f(x)= ','s');
a=input('Ingrese el límite inferior: ');
b=input('Ingrese el límite superior: ');
fprintf('Ingrese el número de trapecios a\n');
n1=input('considerar en la integración: ');
n=2*n1;xmin=a-1;xmax=b+1;
h=(b-a)/n;
x=a:h:b;
fx=eval(f);y=abs(fx);
%Sumas previas
A=y(1)+y(n+1);
B=4*sum(y(2:2:n));
C=2*sum(y(3:2:n-1));
suma=A+B+C;
integral=(h/3)*suma;
fprintf('El área es: %10.9f\n',integral);
%Gráfica
xp=xmin:0.2:xmax;
x=xp;
yp=eval(f);
plot(xp,yp,'r');
hold on
x=a:0.05:b;
y=eval(f);
bar(x,y,'b');grid on
case 3
%PROGRAMA MÉTODO DE SIMPSON 3/8 CON 3n INTERVALOS
f=input('Ingrese la función a integrar f(x)= ','s');
a=input('Ingrese el límite inferior: ');
b=input('Ingrese el límite superior: ');
fprintf('Ingrese el número de trapecios a\n');
n1=input('considerar en la integración: ');
n=3*n1;xmin=a-1;xmax=b+1;
h=(b-a)/n;
x=a:h:b;
fx=eval(f);y=abs(fx);
%Sumas previas
A=y(1)+y(n+1);
B=3*sum(y(2:3:n-1));
C=3*sum(y(3:3:n));
D=2*sum(y(4:3:n-2));
suma=A+B+C+D;
integral=(3/8)*h*suma;
fprintf('El área es: %10.9f\n',integral);
%Gráfica
xp=xmin:0.2:xmax;
x=xp;
yp=eval(f);
plot(xp,yp,'r');
hold on
x=a:0.05:b;
y=eval(f);
bar(x,y,'b');grid on
case 4
%SALIR DEL PROGRAMA
disp('Programa finalizado');
return;
end