Matlab Numerical integral improvement
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Shan Chu
am 4 Feb. 2017
Bearbeitet: Karan Gill
am 17 Okt. 2017
Hi, I have the integral below:
F_A_I=@(x) besselj(1,x.*3.5).*besselj(1,x.*0.5);
A=integral(F_A_I,0,Inf,'RelTol',1e-6,'AbsTol',1e-12,'ArrayValued',true);
But Matlab said:
Warning: Reached the limit on the maximum number of intervals in use. Approximate bound on error is 1.7e+00. The integral may not exist, or it may be difficult to approximate numerically to the requested accuracy.
while Mathematica can give the answer straightforward A=0.0205664
Could you please help me to improve my code. Thanks
1 Kommentar
Niels
am 4 Feb. 2017
probably a definition gap in your function, integral might converge to inf, in these cases matlab displays -> Reached the limit on the maximum number of intervals in use.
Akzeptierte Antwort
Karan Gill
am 13 Feb. 2017
Bearbeitet: Karan Gill
am 17 Okt. 2017
>> syms x
f = int(besselj(1, x/2)*besselj(1, (7*x)/2),x,0,inf)
f =
-(4*(100*ellipticE(1/49) - 99*ellipticK(1/49)))/(21*pi)
>> f_dbl = double(ans)
f_dbl =
0.0022
>> f_vpa = vpa(f)
f_vpa =
0.0022054352588140668793354496265733
OLD ANSWER from 13-Feb-2017
The convert to double using "double".
2 Kommentare
Walter Roberson
am 14 Feb. 2017
Bearbeitet: Walter Roberson
am 14 Feb. 2017
vpaintegral() with up to 10000 MaxFunctionCalls complains it cannot reach required precision.
The ratio oscillates a lot.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Calculus finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!