2012-08-07 112 views
2

我有一个公式,我想解决的m情节重根中的R

m^2+x*m+1=0 

的价值观我知道我可以使用polyroot(c(1,x,1))找到这些根源。

我想绘制这些根在R变化x,使得多项式的所有实根为每个值x作图。

请注意,多项式可能会变得比这更复杂,排除应用二次或三次公式。

有关如何完成此任务的任何想法?

谢谢!

回答

8

我认为这会做到这一点。只需将X设置为您要评估的任何值即可。

X <- seq(0, 10, length=21) 
roots <- sapply(X, function(x) polyroot(c(1,x,1))) 
roots[abs(Im(roots)) > 1e-10] <- NA 
matplot(X, t(roots), pch=1) 

enter image description here

+1

小心检查的虚部为零 - 可能有一些数字假象,导致你拒绝根(EQ X =在图表2)。更好的检查绝对值小于一些容忍量) – James 2012-08-07 16:10:24

+0

是的,也注意到了。有点粗心,但现在已经修好了。 – Backlin 2012-08-07 16:12:08

+0

嗯......在你的例子中,事情很好。然而,用我的实际多项式('c(-0.2,0.1 *(x /(x + 0.1)),0,0.0324,0.0027 *(x /(x + 0.1)))''''<-NA'行正在返回“函数的非数字参数”,最后一行返回“'x'和'y'必须具有相同的行数”。有什么想法吗? – Richard 2012-08-07 16:20:29