I need help to execute a triple integral
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Torsten
2022-9-28
编辑:Torsten
2022-9-28
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)
更多回答(1 个)
Kevin Holly
2022-9-28
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)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Calculus 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!