Nested Numerical Integral in Matlab
44 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello, I am fairly new in using Matlab and was wondering if a nested numerical integral was possible. I have seen a number of other questions here where the outer variable of integration appears in the limits of the inner integral but the function being integrated over just depends on one variable. So I was wondering how or if it's possible to do, say:
z = integral( e^(-integral(f(x,y),x,0,1)),y,0,1)
3 commentaires
Babak
le 12 Déc 2012
If not, what is your f(x,y) function? Can you find g(.),h(.) such that f(x,y)=g(x)*h(y)?
Réponse acceptée
Teja Muppirala
le 12 Déc 2012
Rather than trying to do it all in one expression, it's much simpler if you break it up into two parts.
Step 1. Make the inner part a separate function and save it to a file.
function F = innerF(y)
F11 = integral(@(x) exp(x+y) ,0,1);
F21 = integral(@(x) exp(x-y) ,0,1);
F12 = integral(@(x) sin(x+y) ,0,1);
F22 = integral(@(x) cos(x-y) ,0,1);
F = det([F11 F12; F21 F22]);
Step 2. From the command line, call INTEGRAL to do the outer integral
integral(@innerF, 0, 1, 'ArrayValued', true)
2 commentaires
Sundar Aditya
le 28 Jan 2017
Hi,
I was wondering how the syntax would change if the limits of x were a function of y. Specifically, the expression I need to evaluate is of the form integral( e^( -integral( f(x,y),x,0,g(y) ) ),y,0,1). This is what I tried:
integral(@(x) exp(-integral(@(x,y) f,0,@(y) y)),0,1)
where f is the function handle for f(x,y). I get the following error message:
Function 'subsindex' is not defined for values of class 'function_handle'.
I'm unable to figure out what I'm doing wrong. Any help will be greatly appreciated.
Plus de réponses (2)
Richard
le 18 Juil 2017
Seems to me that this is what you are looking for. I assumed a random expression for f function since you did not specify it.
f =@(x,y) x+y;
integral(@(y) exp(-integral(@(x) f(x,y),0,y)),0,1,'ArrayValued',true)
1 commentaire
Roger Stafford
le 12 Déc 2012
The functions 'dbsquad' and 'quad2d' are designed to numerically solve just your kind of problem. The former uses the the kind of fixed integration limits that you have described and the latter allows variable limits. Be sure to read their descriptions carefully so you can define the integrand function properly.
Roger Stafford
0 commentaires
Voir également
Catégories
En savoir plus sur Calculus 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!