Solve integrals with Matlab
28 views (last 30 days)
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
% Analytical Solution
% Trapezoidal Numerical Integration
% Simpson's Rule
% Lobatto Quadrature
% Global Adaptive Quadrature
David Wilson on 22 Apr 2019
Edited: David Wilson 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:
A4=integral(f,0,0.5) % Global Adaptive Quadrature
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)
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.