2013-10-08 55 views
0

我剛剛開始學習Matlab(幾天前),我有以下作業,我只是不知道如何編寫它: 編寫一個腳本,用於創建一個圖形使用多項式函數根的位置:n(自然數)(單位的第n根)各種值的複數計劃中的p(z)= z^n-1如何在matlab中編寫這個腳本

+0

將其分解成碎片。首先找出如何找出你的多項式的根值爲'n'的特定值。然後弄清楚如何繪製這些根。然後重複'n'的各種值。 –

回答

0

因此,我假設你是函數使用的是p(z) = (z^n) - 1,其中n是某個整數值。

只需插入roots函數即可找到該方程的根源。傳遞給roots的數組是輸入函數的係數。


f = 5x^2-2x-6 -> Coefficients are [5,-2,-6]

要獲得根部進入根([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)