考虑如下多项式:
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 = round(roots([1 -9 27 -27]), 4) % rounding off to 4 decimal places
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句