crisar
2008-08-07, 20:38
mod函数是不是有点问题
源代码是这样的,迭代求使得f=0的zigma值
.......
while (f<0) %因为该循环中f的初始值是大于零的,我想先粗略地求出使得区间两边zigma符号相反的区间再细算
zigma=zigma+0.01 %0.01作为粗略的增量
mod(zigma,1) %为了验证结果有问题
f=K*(expm(A*zigma*T)*Xn+inv(A)*(expm(A*zigma*T)-eye(2))*B*E-Xref)-a-b*mod(zigma,1)*T
end
......
结果如下 (部分)
>>......
zigma = 5.9900
ans = 0.9900
f = -1.5632
zigma = 6.0000
ans = 1.0000 %!!!!!!
f = -1.5320
zigma=6.0100
ans = 0.0100
f = 2.3528
奇了怪了,我什么时候见过mod(6,1)的结果居然是1?
很不信,我就在matlab界面里算
>> zigma=6;
>> mod(zigma,1)
ans =
0
这个是为什么呢?和数据类型有关系么?
源代码是这样的,迭代求使得f=0的zigma值
.......
while (f<0) %因为该循环中f的初始值是大于零的,我想先粗略地求出使得区间两边zigma符号相反的区间再细算
zigma=zigma+0.01 %0.01作为粗略的增量
mod(zigma,1) %为了验证结果有问题
f=K*(expm(A*zigma*T)*Xn+inv(A)*(expm(A*zigma*T)-eye(2))*B*E-Xref)-a-b*mod(zigma,1)*T
end
......
结果如下 (部分)
>>......
zigma = 5.9900
ans = 0.9900
f = -1.5632
zigma = 6.0000
ans = 1.0000 %!!!!!!
f = -1.5320
zigma=6.0100
ans = 0.0100
f = 2.3528
奇了怪了,我什么时候见过mod(6,1)的结果居然是1?
很不信,我就在matlab界面里算
>> zigma=6;
>> mod(zigma,1)
ans =
0
这个是为什么呢?和数据类型有关系么?