Octave/Matlab:如何绘制多项式的根

5

我是一名有用的助手,可以为您翻译文本。

我正在尝试绘制一个多项式的根,但是我无法完成它。

首先,我创建了我的多项式。

p5 = [1 0 0 0 0 -1] %x^5 - 1
r5 = roots(p5)
stem (p5)

我正在使用stem函数,但我想去掉词干,只保留词根周围的部分。
这个是否可以实现,stem是正确的命令吗?
谢谢提前,
PS:这不是作业,但非常接近,如果需要,我会标记它。
1个回答

7

如果您有想要绘制实部在x轴,虚部在y轴上的复数根,您可以使用PLOT函数:

plot(r5,'o');

如果你想将函数和根一起绘制,那么你需要忽略复杂的根(正如下面评论中yuk提到的那样):

p5 = [1 0 0 0 0 -1];
r5 = roots(p5);
realRoots = r5(isreal(r5));  %# Gets just the real roots
x = -2:0.01:2;               %# x values for the plot
plot(x,polyval(p5,x));       %# Evaluate the polynomial and plot it
hold on;                     %# Add to the existing plot
plot(realRoots,zeros(size(realRoots)),'o');  %# Plot circles for the roots

2
请注意,r5包含复数,而绘图函数会忽略虚部。如果只想绘制实根,可以使用以下代码:plot(r5(imag(r5)==0),zeros(sum(imag(r5)==0)),'o'); - yuk
@yuk:好发现。我使用了ISREAL函数更新了答案。 ;) - gnovice
@Tom:我的新答案的第一部分展示了如何将所有根的实部和虚部一起绘制出来。 - gnovice
1
@gnovice,谢谢,最终使用plot(real(r5),imag(r5),'o') - Tom
@yuk,谢谢,我忘了打“o”,导致出现了一条连续的线。 - Tom
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接