私はこの機能を持っています:
プロットしたいのですが、結果は周期関数だと思います...
私はこれを試しましたが、1ポイントしか得られませんでした:(
x1=-50:0.1:50;
x2=-50:0.1:50;
plot(cos(sqrt(power(x1,2)+power(x2,2)))/(power(x1,2)+power(x2,2)));
私の問題はどこにあり、正しい方法は何ですか?
どんな助けにも感謝します。
それを 3 次元曲面としてプロットする必要があります。たとえば、次を使用しますsurf
。
[X1, X2] = meshgrid(-5:0.25:5, -5:0.25:5);
F = cos(sqrt(X1 .^ 2 + X2 .^ 2)) ./ (X1 .^ 2 + X2 .^ 2 + 1);
surf(X1, X2, F)
次の 2 点に注意してください。
黒いエッジが煩わしく、プロットが乱雑に見える場合は、EdgeColor
プロパティを無効にすることでエッジラインを削除できます (ユーザー Shai が指摘したように):
surf(X1, X2, F, 'EdgeColor', 'None')
最終結果は次のようになります。
x1
との 2 つの入力があるため、これは 3 次元プロットx2
です。したがって、plot3を使用する必要があります(または@EitanT が指摘するようにサーフィンするか、3D プロット関数を使用する必要があります) 。
(-50;-50)
ペア, (-49.9;-49.9)
,...,のみをプロットしてい(50;50)
ます。2 つのベクトルから開始するため、おそらくすべての組み合わせをカバーする必要があります。したがって、meshgridを使用します(高次元の場合はndgridもあります):
x1=-50:0.1:50;
x2=-50:0.1:50;
[X1, X2] = meshgrid(x1,x2);
ここで行列演算を使用し、このリンクを読むと、要素ごとの演算が必要であることがわかります。 , etca.*b
の代わりに、すでに要素ごとの演算 ( と同じ) であり、同等の行列はorです。a*b
power(a,b)
a.^b
mpower(a,b)
a^b
f = cos(sqrt(power(X1,2)+power(X2,2)))./(power(X1,2)+power(X2,2)+1);
plot3(X1,X2,f);