访问向量值时的不便 - Octave

Inconvenience when accessing a value of a vector - Octave

我在访问八度向量的元素时遇到问题:

>> den = [1 2 1 2]
>> poles = roots(den)
>> poles =

  -2.00000 + 0.00000i
   0.00000 + 1.00000i
   0.00000 - 1.00000i
>> poles(2)
ans = 4.1633e-016 + 1.0000e+000i

它没有返回 0 + 1i,而是 returns 4.1633e-016 + 1.0000e + 000i。为什么?

我该如何解决?

您在第一个结果中看到的是正确的。表示的精度高达 5 位精度。在第二次调用中查看结果以科学格式呈现,因此您可以在呈现的有限格式中看到您所看到的内容的真正价值。

我应该提到,有时您会得到一个非常小的值,这意味着零,但由于计算中的一些错误,您得到的是一个非常小的值而不是零。您可以在代码前使用 format long E 以获得详细的科学格式的结果。