【发布时间】:2017-01-08 18:30:20
【问题描述】:
考虑一个多项式,例如:
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
如何正确计算多项式的根?
【问题讨论】:
-
次要注意:您检查根是否真实是不正确的。如果 array
q很复杂,isreal(q)会给出false。但有些条目的虚部可能为零。事实上,isreal(q)给出了false,而for x = q(:).', isreal(x), end给出了true、false、false。q的第一个条目是真实的,其他的不是,q整体不是真实的
标签: matlab polynomials