Matlab:积分和四元函数提供NaN

时间:2019-06-28 13:22:04

标签: matlab nan integral

我试图通过使用fmincon函数来获取优化值。 在优化过程中,将“ integProb”函数与quadl(或积分,或可选)方法集成。

,但是具有integProb的四元积分函数返回NaN并显示警告:“遇到无限或非数字函数值。”在a,b,Vmat和Vj的某些值。但是我不确切知道它们的值使Quadl函数返回NaN,因为这些值是在fmincon优化过程中确定的。

有人对如何解决此问题有任何想法吗?

我将不胜感激

谢谢。

quadl(@(e) integProb(e,j,k,Vmat,Vj),a,b,eps1); 
function [val]=integProb(e,j,k,Vmat,Vj);
len = length(e);
x=repmat(e+Vj,k,1)-Vmat(:,1:len);
x2 = normcdf(x); % need the sigma of j (the chosen product)
x2(j,:)=1; % we do not need this. See the integrand in our integration eqn
val = prod(x2).* normpdf(e);

1 个答案:

答案 0 :(得分:0)

在成本函数中,您需要防止出现错误值,并在出现错误时返回高成本(告诉优化程序它们为错误值),

function [val]=integProb(e,j,k,Vmat,Vj);
len = length(e);
x=repmat(e+Vj,k,1)-Vmat(:,1:len);
x2 = normcdf(x); % need the sigma of j (the chosen product)
x2(j,:)=1; % we do not need this. See the integrand in our integration eqn
val = prod(x2).* normpdf(e);

if isnan(val) || isinf(val) || ~isreal(val)
   val = 1e10; % or some other large value
end