I need help to execute a triple integral
24 views (last 30 days)
Show older comments
Jose Miguel Araya Martinez
on 28 Sep 2022
Commented: Jose Miguel Araya Martinez
on 29 Sep 2022
im trying to do the following:
clear all
clear close
syms s r m;
fun = @(s,m,r)(r.*exp(-(s.^2/2+1.727*(m-5))))./(sqrt(r.^2-10^2));
result= integral3(fun,-inf,-(-1.85-1.013*(m-6)+1.496*log(sqrt(r.^2+31.025))),5,7.5,10,18);
final_result=result*(2*1.727)/(sqrt(2*pi)*30);
BUT matlab say me that in the intregral3 i have a invalid argument at position 3.
What am i doing wrong?
0 Comments
Accepted Answer
Torsten
on 28 Sep 2022
Edited: Torsten
on 28 Sep 2022
You still didn't get the point.
Look at the documentation of integral3:
q = integral3(fun,xmin,xmax,ymin,ymax,zmin,zmax) approximates the integral of the function z = fun(x,y,z) over the region xmin ≤ x ≤ xmax, ymin(x) ≤ y ≤ ymax(x) and zmin(x,y) ≤ z ≤ zmax(x,y)
Thus if your integration limit is a function of both other variables, it must appear as the last variable in the list ( in this case s ).
And this limit has to be a function handle, not a simple algebraic (or even symbolic) expression.
s = @(m,r) -(-1.85-1.013*(m-6)+1.496*log(sqrt(r.^2+31.025)));
fun = @(m,r,s)(r.*exp(-(s.^2/2+1.727*(m-5))))./(sqrt(r.^2-10^2));
result= integral3(fun,5,7.5,10,18,-Inf,s);
final_result=result*(2*1.727)/(sqrt(2*pi)*30)
More Answers (1)
Kevin Holly
on 28 Sep 2022
Your value for xmax needs to be a floating-point array.
syms s r m;
fun = @(s,m,r)(r.*exp(-(s.^2/2+1.727*(m-5))))./(sqrt(r.^2-10^2))
result= integral3(fun,-inf,inf,5,7.5,10,18) % I placed inf for the xmax
final_result=result*(2*1.727)/(sqrt(2*pi)*30)
Here I changed the value of xmax
result= integral3(fun,-inf,30,5,7.5,10,18)
result= integral3(fun,-inf,10,5,7.5,10,18)
if you place a symbolic, you will get an error as shown below.
result= integral3(fun,-inf,r,5,7.5,10,18)
See Also
Categories
Find more on Number Theory in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!