我刚刚开始学习 Matlab(几天前),我有以下作业,我只是不知道如何编写它:编写一个使用多项式函数根的位置创建图形的脚本:p (z)=z^n-1 在复数计划中,用于 n 个自然数(第 n 个单位根)的各种值
问问题
845 次
1 回答
0
所以我假设你正在使用的函数p(z) = (z^n) - 1
是n
一些整数值。
你可以通过简单地插入roots
函数来找到这个方程的根。传递给的数组roots
是输入函数的系数。
例子
f = 5x^2-2x-6 -> Coefficients are [5,-2,-6]
要获取根,请输入roots([5,-2,-6])。这将找到x
导致函数等于 0 的所有点。
所以在你的情况下你会输入funcRoots = roots([1,zeros(1,n-1),-1]);
然后,您可以根据需要绘制这些值,但是像plot(funcRoots)
这样的简单绘图可能就足够了。
要在循环中执行以下操作。请注意,如果有多个相同的根,可能会有一些重叠,因此您可能无法看到某些值。
minN = 1;
maxN = 10;
nVals = minN:maxN;
figure; hold on;
colors = hsv(numel(nVals));
legendLabels = cell(1,numel(nVals));
iter = 1;
markers = {'x','o','s','+','d','^','v'};
for n = nVals
funcRoots = roots([1,zeros(1,n-1),-1]);
plot(real(funcRoots),imag(funcRoots),...
markers{mod(iter,numel(markers))+1},...
'Color',colors(iter,:),'MarkerSize',10,'LineWidth',2)
legendLabels{iter} = [num2str(n),'-order'];
iter = iter+1;
end
hold off;
xlabel('Real Value')
ylabel('Imaginary Value')
title('Unity Roots')
axis([-1,1,-1,1])
legend(legendLabels)
于 2013-10-08T20:25:33.393 回答