在GNU Octave中,eps为一个函数,在除法运算中,遇到分母为零时,将分母设为eps,就可以进行相应的运算了。
例如,在命令窗口输入以下程序:
t=-2:0.5:2; %设定t
t(find(t==0))=eps(2);%在t=0时,将t设为eps(2)
t %显示t
t =
-2.0000e+00 -1.5000e+00 -1.0000e+00 -5.0000e-01 4.4409e-16 5.0000e-01 1.0000e+00 1.5000e+00 2.0000e+00
可以看到,将初期赋值的t=0的值变为了4.4409e-16这个非常小的数。
注意这里使用了eps(2)来替换0值。
按照定义,eps(a)是与a值最接近的值的距离,将a取不同值带入,可以得出以下表格:
a | eps(a) |
-2 | 4.4409E-16 |
-1 | 2.2204E-16 |
1 | 2.2204E-16 |
2 | 4.4409E-16 |
3 | 4.4409E-16 |
4 | 8.8818E-16 |
5 | 8.8818E-16 |
6 | 8.8818E-16 |
7 | 8.8818E-16 |
8 | 1.7764E-15 |
9 | 1.7764E-15 |
10 | 1.7764E-15 |
11 | 1.7764E-15 |
12 | 1.7764E-15 |
13 | 1.7764E-15 |
14 | 1.7764E-15 |
15 | 1.7764E-15 |
16 | 3.5527E-15 |
20 | 3.5527E-15 |
40 | 7.1054E-15 |
60 | 7.1054E-15 |
100 | 1.4211E-14 |
可以看到,eps(2)是eps(1)的两倍关系。随着a的增加,有些eps值是相等的。可以大概理解a的意义。
由于eps值非常小,在进行加减乘除运算时,有如下结果:
加法:
1+eps
ans = 1.0000
1+eps(3)
ans = 1.0000
1+eps(100000)
ans = 1.0000
乘法:
2*eps(1)
ans = 4.4409e-16
减法:
2-eps(2)
ans = 2.0000
除法:
2/eps(1)
ans = 9.0072e+15
END