Matlabで複雑な関数をプロットするには? 例えば:
Y[e^jx] = 1 / (1 - cosx + j4)
コードをいくつか試しましたが、実部と虚部を別々にプロットするのが正しい方法だと思います。
x = linspace(-pi, pi, 1e3);
y = 1./(1 - cos(x) + i*4);
% Plot absolute value and phase
figure;
subplot(2,1,1); plot(x, abs(y));
subplot(2,1,2); plot(x, angle(y));
% Plot real and imaginary parts
figure;
subplot(2,1,1); plot(x, real(y));
subplot(2,1,2); plot(x, imag(y));
複雑なマップのプロットに固有の MATLAB 関数がいくつかあります。
z = cplxgrid(60);
cplxmap(z, 1./(1 - cos(z) + 4*i));
MATLAB のドキュメントの「複素変数の関数」も参照してください。
あなたのためではないかもしれませんが、複雑な関数を描画しようとしている他の人のためです。それらをすばやくレンダリングしてダウンロードできるWebサイトをセットアップしました(reflex4you.com、reflex =複雑な機能の表現)
複雑な機能を 2D でカラフルに表示できます。あなたの関数は ここと下に表示されます:
黒はゼロ、白は無限であり、赤 = 1、シアン = -1、i = 緑がかった色、-i = 紫がかった色など、複素数に関連付けられた色で複素平面をカバーしていることに注意してください。
次のいずれかを使用できます。
plot(real(Y))
plot(imag(Y))
plot(real(Y),imag(Y))
plot(abs(Y))
plot(re(Y),im(Y))
しかし、あなたの場合、それが有効な複雑な関数に関連付けられたドメインがあることを覚えておいてください: cos(x)-4j < 1
デフォルトでは、plot(X)
実数対虚数をプロットするため、次のようになりますplot(real(X), imag(X))
。たとえば、次を試してください。
>> r = sort(rand(10, 1)) + 1i * rand(10, 1);
>> figure, plot(r)
y 軸で両方が必要な場合は、次を使用します。
plot([real(X), imag(X)])
Python の代わりに、私が書いたツールcplotを使用できます。複雑なプロットにドメイン カラーリングを使用します。つまり、絶対値をf(z)
明るさと色相に関連付け、複雑な角度に関連付けます。
あなたの機能:
import cplot
import numpy as np
plt = cplot.plot(lambda z: 1 / (1 - np.cos(z) + 4j), (-10, +10, 400), (-10, +10, 400))
plt.show()