Logo Studenta

Integracion Numerica

¡Estudia con miles de materiales!

Vista previa del material en texto

Métodos Numéricos
Integración Numérica
Presentado por:
Roosevelt Daniel Santos Vanegas
Camilo Andrés Pérez Córdoba
Presentado a:
JUAN MUSKUS MUSKUS
Universidad de Córdoba
Facultad de ingeniería
Montería - 2021
clc;
clear;
syms x;
control = true;
%MENÚ PRINCIPAL %
while(control)
 disp("::::::::::Métodos de Integración Numérica::::::::::")
 fprintf("Selecciones el metódos a aplicar: \n" + ...
 "1. Regla Trapezoidal\n" + ...
 "2. Regla Simpson 1/3\n" + ...
 "3. Regla Simpson 3/8\n" + ...
 "4. Salir...\n")
 opcion = input("Ingrese su opción: ");
 if (opcion>=1) && (opcion<=3)
 a = input("Ingrese el punto 'a' de su intervalo");
 b = input("Ingrese el punto 'b' de su intervalo");
 n = input("Ingrese el numero de segmentos");
 fun = input("Ingresa la función: ", 'S');
 fun = str2sym(fun);
 end
 switch opcion
 case 1
 disp("Trapezoide");
 numero = trapecio(fun,a,b,n);
 fprintf("El valor es: %.5f\n",numero);
 disp(" ");
 errorA = error(a,b,n,fun,2);
 fprintf("El error aproximado es: %.8f \n",errorA);
 disp(" ");
 case 2
 disp("Simpson 1/3");
 numero = simpson3(fun,a,b,n);
 fprintf("El valor es: %.5f \n",numero);
 disp("");
 errorA = error(a,b,n,fun,4);
 fprintf("El error aproximado es: %.8f \n",errorA);
 disp("");
 case 3
 disp("Simpson 3/8");
 numero = simpson8(fun,a,b,n);
 fprintf("El valor es: %.5f \n",numero);
 disp("");
 errorA = error(a,b,n,fun,4);
 fprintf("El error aproximado es: %.8f \n",errorA);
 disp("");
 case 4
 disp("Salir");
 control = false;
 otherwise
 disp("Opción no valida");
 end
end
%---------------Simpson 1/3 ------------%
function formula = simpson3(fun,a,b,n)
delta = (b-a)/n;
vecx(1) = a;
for i = 2:n+1
 vecx(i) = vecx(i-1) + delta;
end
formula = 0;
fx = inline(fun);
for i=1:n+1
 if(i==1) || (i==n+1)
 formula = formula + fx(vecx(i));
 elseif mod((i-1),2)~=0
 formula = formula + 4*fx(vecx(i));
 elseif mod((i-1),2)==0
 formula = formula + 2*fx(vecx(i));
 end
end
formula = delta/3 * formula;
end
%---------------End Simpson 1/3 ------------%
%---------------Simpson 3/8 ------------%
function formula = simpson8(fun,a,b,n)
delta = (b-a)/n;
vecx(1) = a;
for i = 2:n+1
 vecx(i) = vecx(i-1) + delta;
end
formula = 0;
fx = inline(fun);
for i=1:n+1
 if (i==1) || (i==n+1)
 formula = formula + fx(vecx(i));
 elseif mod((i-1),3)==0
 formula = formula + 2*fx(vecx(i));
 elseif mod((i-1),3)~=0
 formula = formula + 3*fx(vecx(i));
 end
end
formula = 3*delta/8 * formula;
end
%---------------End Simpson 3/8 ------------%
%---------------Regla del trapecio------------%
function formula = trapecio(fun, a,b, n)
delta = (b-a)/n;
vecx(1) = a;
for i = 2:n+1
 vecx(i) = vecx(i-1) + delta;
end
formula = 0;
fx = inline(fun);
for i=1:n+1
 if(i==1) || (i==n+1)
 formula = formula + fx(vecx(i));
 else
 formula = formula + 2*fx(vecx(i));
 end
end
formula = delta/2 * formula;
end
%---------------End Regla del trapecio------------%
%----------------Calculo del error------------%
function nerror = error(a,b,n,fun,grado)
der = diff(fun,grado);
der = inline(der);
if(der(a)>der(b))
 M = der(a);
else
 M= der(b);
end
%M es la evaluacion del punto maximo del intervalo en la enesima derivada%
switch grado
 case 2
 nerror = abs((((b-a)^3)/(12*(n^2)))*M);
 case 4
 nerror = abs((((b-a)^5)/(12*(n^4)))*M); 
end
end
%----------------End Calculo del error------------%

Continuar navegando