## Solve integrals with Matlab

### Jerald Johnson (view profile)

on 22 Apr 2019
Latest activity Edited by David Wilson

on 22 Apr 2019

### David Wilson (view profile)

Hey guys i am working on a calculus problem and it requires me to use analytical solution, trapezoidal numerical integration, simpson's rule, lobatto quadrature and global adaptive quadrature. I keep getting errors and i have no idea what i am doing incorrect. Could someone help me write the code for this? Thanks.
Problem: f(x)= integral sign(5+1/sqrt(1-x^2)). Upper bound of integral sign is 1/2 and lower bound of integral sign is 0.
% Integrating using different commands
x=0:0.1:1/2;
y=(5+1/sqrt(1-x^2));
format long
% Analytical Solution
A0=(5+1/sqrt(1-x^2))
% Trapezoidal Numerical Integration
A1= trapz(x,y)
% Simpson's Rule
A4=integral(intfun,x(1),x(end))

R2018b

### David Wilson (view profile)

on 22 Apr 2019
Edited by David Wilson

### David Wilson (view profile)

on 22 Apr 2019

Do you have the symbolic toolbox?
If so, start with the int command. You can do both indefinite and definite integration.
syms x real
f = 5 + 1.0./sqrt(1-x^2) % dot-divide not strictly needed here
Q = int(f,x) % indefinite
Q = int(f,x,0,1/2)
Now that we have an anlytical answer, , we can validate numerical schemes.
First we should make a vectorised anonymous function of the integrand,
f = @(x) 5 + 1.0./sqrt(1-x.^2)
Matlab has pre-canned routines for the final two integration schemes:
For the (composite) trapz and Simpson's you need to decide on a step size (as you did above).
h = 0.1; % step size (guess)
x=0:h:1/2;
A1= trapz(x, f(x))
A quick hack of the Simpson's rule is
n = 10; % must be even
a = 0; b = 0.5; % integration limits
x = linspace(a,b,n+1)';
c = [1,repmat([4 2],1,n/2-1),4,1];
A2 = (b-a)*c*f(x)/n/3; %
It might be prudent to check all numerical values with the analytical one, especially the Simpson's implementation above.