Why do I get the error "max number of function evalutations reached" using integral2?

3 vues (au cours des 30 derniers jours)
Peter Uwsen
Peter Uwsen le 19 Avr 2019
Commenté : Walter Roberson le 23 Avr 2019
Hi,
I'm having some problems using the integral2 function. I get the error "max number of function evalutations reached" for certain imput values.
This is my code:
lambda = 4;
a = 1.8821;
m = 1.0228;
psi = 1;
p = @(r) 3/pi*a*sqrt(1-r.^2)-2*lambda/pi*atan(sqrt((m^2-1)./(1-r.^2)));
x = 0.9;
z = 1e-6; % varied value
nu = .25;
X = @(r,phi) x-r.*cos(phi);
Y = @(r,phi) -r.*sin(phi);
R = @(r,phi) (X(r,phi).^2 + Y(r,phi).^2).^.5;
Rho = @(r,phi) (X(r,phi).^2 + Y(r,phi).^2 + z^2).^.5;
f1 = @(r,phi) (1 - z./Rho(r,phi)).*(X(r,phi).^2 - Y(r,phi).^2)./R(r,phi).^2;
f2 = @(r,phi) f1(r,phi) + z*Y(r,phi).^2./Rho(r,phi).^3;
f3 = @(r,phi) (1 - 2*nu)./R(r,phi).^2.*f2(r,phi) - 3*z*X(r,phi).^2./Rho(r,phi).^5;
fun = @(r,phi) r.*p(r).*f3(r,phi);
sx = psi/2/pi*integral2(fun,0,1,0,2*pi);
In need the variable "sx" for different values of "z".
For values greater than 1e-4 it works just fine, but for small values, for example 1e-6, I get an error.
I guess this has to do with some kind of singularity when calculating the integral, but I don't know how integral2 works..
I'm happy about any ideas on how to fix this problem!
Thanks a lot!
  4 commentaires
Walter Roberson
Walter Roberson le 23 Avr 2019
You do not need singularity to have integral2 problems with iterations: it can happen due to round-off problems, and it can happen for very steep functions, and it can happen for oscillating functions. It is a convergence issue, and sometimes you can deal with those by permitted more steps and sometimes you are never going to be able to solve them numerically.

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements 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!

Translated by