Solve integrals with Matlab
    11 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
    Jerald Johnson
 le 22 Avr 2019
  
    
    
    
    
    Réponse apportée : Sara
 le 19 Mar 2024
            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
A2= quad('sqrt(1-x^2'x(1),x(end))
% Lobatto Quadrature
A3=quadl('sqrt(1-x^2'x(1),x(end))
% Global Adaptive Quadrature
A4=integral(intfun,x(1),x(end))
0 commentaires
Réponse acceptée
  David Wilson
      
 le 22 Avr 2019
        
      Modifié(e) : David Wilson
      
 le 22 Avr 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: 
A3 =quadl(f,0,0.5)
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) 
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. 
0 commentaires
Plus de réponses (2)
Voir également
Catégories
				En savoir plus sur Numerical Integration and Differential Equations dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!