p = [1 -9 27 -27];
显然真正的根是3:
polyval(p,3)
0
在使用 roots
函数时
q = roots([1 -9 27 -27]);
使用 format short
:
q =
3.0000 + 0.0000i
3.0000 + 0.0000i
3.0000 - 0.0000i
并检查根是否为实数:
bsxfun(@eq,ones(size(q)),isreal(q))
0
0
0
即使使用format long
,我得到的结果还更糟糕:
roots([1 -9 27 -27])
ans =
3.000019414068325 + 0.000000000000000i
2.999990292965843 + 0.000016813349886i
2.999990292965843 - 0.000016813349886i
如何正确计算多项式的根?
q
是复数,则isreal(q)
会返回false
。但是,某些条目可能具有零虚部。实际上,isreal(q)
返回false
,而for x = q(:).', isreal(x), end
返回true
,false
,false
。q
的第一个条目是实数,其他条目不是,整个q
也不是实数。 - Luis Mendo