Unrecognized function or variable 'trapizoidal'.
Afficher commentaires plus anciens
%Matlab code for finding integration using different method
clear all
close all
% function for integration
f1=@(v) (5000.*v)./(8.276.*v.^2+2000);
%upper and lower limit
a=0; b=10;
%exact integral
ext_int=integral(f1,a,b);
%Function for which integration have to do
fprintf('\nFunction for which integration have to do f(v)=\n')
disp(f1)
fprintf('Upper and lower limit of integration [%2.2f %2.2f]\n\n',a,b)
fprintf('Exact integral for given function is %f\n',ext_int)
%Integration using Trapizoidal, Simpson 1/3 and Simpson 3/8 method
n=1;
val_trap=trapizoidal(f1,a,b,n);
err=(abs((val_trap-ext_int)/ext_int))*100;
fprintf('Relative percent Error in trapizoidal rule for n=%d is %f\n',n,err)
val_simp13=Simp13_int(f1,a,b,n);
err=(abs((val_simp13-ext_int)/ext_int))*100;
fprintf('Relative percent Error in Simpson 1/3 rule for n=%d is %f\n',n,err)
val_simp38=Simp38_int(f1,a,b,n);
err=(abs((val_simp38-ext_int)/ext_int))*100;
fprintf('Relative percent Error in Simpson 3/8 rule for n=%d is %f\n',n,err)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Integration using Trapizoidal, Simpson 1/3 and Simpson 3/8 method
n=20;
val_trap=trapizoidal(f1,a,b,n);
err=(abs((val_trap-ext_int)/ext_int))*100;
fprintf('Relative percent Error in trapizoidal rule for n=%d is %f\n',n,err)
val_simp13=Simp13_int(f1,a,b,n);
err=(abs((val_simp13-ext_int)/ext_int))*100;
fprintf('Relative percent Error in Simpson 1/3 rule for n=%d is %f\n',n,err)
val_simp38=Simp38_int(f1,a,b,n+1);
err=(abs((val_simp38-ext_int)/ext_int))*100;
fprintf('Relative percent Error in Simpson 3/8 rule for n=%d is %f\n',n+1,err)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%Matlab function for Trapizoidal integration
function val=trapizoidal(func,a,b,N)
% func is the function for integration
% a is the lower limit of integration
% b is the upper limit of integration
% N number of rectangles to be used
val=0;
%splits interval a to b into N+1 subintervals
xx=linspace(a,b,N+1);
dx=xx(2)-xx(1); %x interval
%loop for Trapizoidal integration
for i=2:length(xx)-1
xx1=xx(i);
val=val+dx*double(func(xx1));
end
val=val+dx*(0.5*double(func(xx(1)))+0.5*double(func(xx(end))));
fprintf('\t Integral using Trapizoidal method\n')
fprintf('The value of integral from a=%f to b=%f\n',a,b)
fprintf('using %d equally spaced divisions is : %2.15f\n',N,val)
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%Matlab function for Simpson 1/3 Method
function val=Simp13_int(f,a,b,n)
%f=function for which integration have to do
%a=upper limit of integration
%b=lower limit of integration
%n=number of subintervals
zs=f(a)+f(b); %simpson integration
%all x values for given subinterval
xx=linspace(a,b,n+1);
dx=(xx(2)-xx(1)); %x interval
%Simpson Algorithm for n equally spaced interval
for i=2:n
if mod(i,2)==0
zs=zs+4*f(xx(i));
else
zs=zs+2*f(xx(i));
end
end
%result using Simpson rule
val=double((dx/3)*zs);
fprintf('\t Integral using Simpson 1/3 method\n')
fprintf('The value of integral from a=%f to b=%f\n',a,b)
fprintf('using %d equally spaced divisions is : %2.15f\n',n,val)
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%Matlab function forSimpson 3/8 Method
function val=Simp38_int(f,a,b,n)
% f is the function for integration
% a is the lower limit of integration
% b is the upper limit of integration
% n is the number of trapizoidal interval in [a,b]
%splits interval a to b into n+1 subintervals
xx=linspace(a,b,n+1);
dx=(xx(2)-xx(1)); %x interval
val=f(a)+f(b);
%loop for trapizoidal integration
for i=2:n
if mod(i-1,3)==0
val=val+2*double(f(xx(i)));
else
val=val+3*double(f(xx(i)));
end
end
%result using midpoint integration method
val=(3/8)*dx*val;
fprintf('\n\t Integral using Simpson 3/8 method\n')
fprintf('The value of integral from a=%f to b=%f\n',a,b)
fprintf('using %d equally spaced divisions is : %2.15f\n',n,val)
end
%%%%%%%%%%%%%%%%%% End of Code %%%%%%%%%%%%%%%%%
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Numerical Integration and Differential Equations dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!