2016-10-27 1 views
0

Je tente d'intégrer une fonction et continuer à recevoir l'avertissement:Matlab intégral retour sans un nombre infini

Warning: Infinite or Not-a-Number value encountered. 

Je suis incapable de déterminer pourquoi il en est le cas et a été espérant que quelqu'un peut être capable de faire la lumière. Je crois que l'un des paramètres donne une valeur Inf mais je n'ai pas pu déterminer lequel. Toute aide serait appréciée.

lm = 1.75; 
Cm = 3.2E6; 
fe = 1380; 
H = 13.5; 
q = 1E-5; 
Cw = 4.2E6; 
y = 0.0; 
x = 0.1; 
ts = [0.1 97/24];   
Mt = 100; 
t = linspace(ts(1)*86400, ts(2)*86400, Mt); % [s] 
QL = fe/H;     
z = H/2; 
Dt = lm/Cm;    
r = x.^2+y.^2; 
vT = q*Cw*Cm; 
T = zeros(size(t)); 

for i = 1:length(t) 
    tt = t(i); 

    fun = @(ze) T_GIGF(z,ze,Dt,tt,vT,r)/sqrt(pi)./sqrt(r+(z-ze).^2); 

    T(i) = QL/(4*pi*lm)*exp(vT*x/2*Dt).*... 
    (integral(fun,0,H)-... 
    integral(fun,-H,0)); 

end 

function func = T_GIGF(z,ze,a,tt,VT,r) 
u1 = (r+(z-ze).^2)/(4*a*tt); 
u2 = VT^2*(r+(z-ze).^2)/(16*a^2); 
func = 0.5*sqrt(pi)*(exp(-2*sqrt(u2)).*erfc(sqrt(u1)-sqrt(u2./u1))+... 
        exp(+2*sqrt(u2)).*erfc(sqrt(u1)+sqrt(u2./u1))); 

end 

Répondre

0

Vous obtenez ce parce que votre u1 et u2 sont des nombres énormes d'environ 1e29 !!! Ainsi, exp (1e29) dépasse la portée de ce double nombre:

exp(1e29) > realmax résultats en 1