Matlab の学習を始めたばかりで (数日前)、次の宿題がありますが、それをコーディングする方法がわかりません: 多項式関数の根の位置を使用してグラフィックを作成するスクリプトを作成します: p (z)=z^n-1 n-自然数 (1 の 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 に答える