2015-11-03 40 views
0

有沒有辦法避免複數查找R中多項式的最大根

polyroot {base}?

幫助文件顯示:「... ... polyroot返回n-1個複數零點」,但我只需要二次方程的最大根,複數在這裏太好了。非常感謝幫助!

回答

0

當您使用此設置對一個對象返回,說

roots=polyroot(coefs) 

然後你可以通過排除虛者通過complex::Im()

which(Im(roots)==0) 
+0

您不應該對浮點數使用精確比較。在大多數情況下,'abs(Im(roots))<1e-12)'應該更精確,因爲'x^2-2 * x + 1 + 1e-20 = 0'不可能用'double'浮點。 – LutzL

0

如果你會很複雜返回以假亂真二次方程的解,那麼就沒有真正的根。

等式x²+px+q的最大根是

(-p+sqrt(p*p-4*q))/2 

如果平方根內部的術語是非負的。

還是你的意思是一個最大的根?