2016-10-27 7 views
0

Я пытаюсь интегрировать функцию и продолжать получать предупреждение:Matlab интеграл возвращения бесконечное не-число

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

Я был не в состоянии определить, почему это так, и надеялся, что кто-то может быть в состоянии пролить некоторый свет. Я считаю, что один из параметров дает значение Inf, но я не смог определить, какой из них. Любая помощь будет оценена по достоинству.

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 

ответ

0

Вы получаете это, потому что ваши u1 и u2 являются огромными числами около 1e29 !!! Таким образом, exp (1e29) переходит в диапазон, из которого может поддерживаться двойной номер:

exp(1e29) > realmax Результаты 1

 Смежные вопросы

  • Нет связанных вопросов^_^