- #1
haz
- 3
- 0
hey guys,
So I'm working on a MATLAB function that uses simpsons 1/3 rule to find an integral.
This is what I have done so far, but I'm not 100% confident.. I seem to get double when I use greater segments.
If anyone would be able to have a look at give me some tips that would be very much appreciated.
function [ I ] = simpsons3( func,a,b,n )
%Finds estimate integral from a to b of function using simpson 1/3 rule
% % INPUTS
% % func = function
% % a = lower limit
% % b = upper limit
% % n=number of segments used for integration
% % OUTPUTS
% % I = integral estimate
h = (b-a)/(n-1);
sumE = 0;
for i = a+2*h:h:b-2*h
sumE = sumE + func(i);
end
sumO = 0;
for i = a+h:h:b-h
sumO = sumO + func(i);
end
I = (h/3)*(func(a)+4*sumE+2*sumO+func(b));
So I'm working on a MATLAB function that uses simpsons 1/3 rule to find an integral.
This is what I have done so far, but I'm not 100% confident.. I seem to get double when I use greater segments.
If anyone would be able to have a look at give me some tips that would be very much appreciated.
function [ I ] = simpsons3( func,a,b,n )
%Finds estimate integral from a to b of function using simpson 1/3 rule
% % INPUTS
% % func = function
% % a = lower limit
% % b = upper limit
% % n=number of segments used for integration
% % OUTPUTS
% % I = integral estimate
h = (b-a)/(n-1);
sumE = 0;
for i = a+2*h:h:b-2*h
sumE = sumE + func(i);
end
sumO = 0;
for i = a+h:h:b-h
sumO = sumO + func(i);
end
I = (h/3)*(func(a)+4*sumE+2*sumO+func(b));