【发布时间】:2014-12-01 05:43:21
【问题描述】:
这是我的全部功能:
function val = deceptive_3_nd_function( arr )
alpha = [0.3 0.7];
beta = 0.2;
val = zeros(size(arr,1),1);
for part=1:size(arr,1)
for i=1:size(arr,2)
if 0 <= arr(part, i) && arr(part, i) <= 4/5*alpha(i);
val(part) = val(part) - arr(part, i)/alpha(i) + 4/5;
elseif 4/5*alpha(i) < arr(part, i) && arr(part, i) <= alpha(i)
val(part) = val(part) + 5*arr(part, i)/alpha(i) - 4;
elseif alpha(i) < arr(part, i) && arr(part, i) <= (1+4*alpha(i))/5
* a_ = 5.0 * ( arr(part, i) - alpha(i) );
* b_ = alpha(i)-1.0;
* c_ = a_/b_;
* val(part) = val(part) + c_ + 1.0;
elseif (1+4*alpha(i))/5 < arr(part, i) && arr(part, i) <= 1
val(part) = val(part) + (arr(part, i)-1)/(1-alpha(i)) +4/5;
end
end
val(part) = -(1/size(arr, 2)*val(part))^beta;
end
end
在标有星号的行中得到了意想不到的结果。正如你所看到的,我试图找出一个问题,这就是它导致我的原因:
K>> arr(part, i)
ans =
0.7600
K>> arr(part, i)==0.76
ans =
1
K>> alpha(i)
ans =
0.7000
K>> alpha(i)==0.7
ans =
1
K>> arr(part, i) - alpha(i)
ans =
0.0600
K>> arr(part, i) - alpha(i) == 0.06
ans =
0
为什么会发生这种情况..?
【问题讨论】:
-
浮点表示。尝试在倒数第二个命令之前执行
format long。
标签: matlab computation