極座標の2次元関数r
とtheta
を3次元デカルト座標でプロットしたいと思います。私は(乳液、悪い数学の書式について申し訳ありませんが、互換性はありません、それはそう)MATLABを使用して3次元空間で2次元関数をプロットするにはどうすればよいですか?
r
と
theta
の変換
f(r,theta) = r/2 * (cos(theta - pi/4) + sqrt(1 + 1/2 * cos(2*theta)))
デカルト座標へ
x = r * cos(theta), y = r * sin(theta)
さらに、ドメインは、私が定義-1<r<1
と0<theta<2 * pi
、であることを持っています
r = -1:2/50:1;
と
により、theta = 0:2*pi/50:2*pi;
私には同じ次元の2つのベクトルが与えられます。
私はだから今、私は値に依存しますこれ、z
値を定義する必要が
x = r. * cos(theta);
と
y = r. * sin(theta);
で行ベクトルとしてプロットするために使用さx
とy
値を定義することができますx
およびy
である。私は101x101を作るべきだと思った。各マトリックス要素には最終面のデータポイントが入っている。しかし、どうしたらいいですか?これは間違いなく私の表面を与えるが、それは私に間違った表面を与える
surf(z)
単にその後
for i=1:numel(r)
for j=1:numel(theta)
z(i,j) = r(i)/2 .* cos(theta(j) - pi/4) + r(i).*sqrt(1 + 1/2 * cos(2.*theta(j)));
end
end
:私は二重のfor
ループを使用して考えました!私はここで何が起こっているのか分かりません。誤ったサーフェスは図1に示されていますが、正しいサーフェスは図2に示されています。誰か助けてくれますか?参考のために、正しい面が
A = Function[<expression 1>, <Expresison 2>, <Expression 3>, <var 1>, <start>, <stop>, <var 2>, <start>, <stop>]
図1不適切な表面を使用して、GeoGebraのでプロットしました。
図2正しい表面。
あなたはデカルトに極性(球形)から変換しようとしていますか?円筒形からデカルト形? – toshiomagic
[this](https://www.mathworks.com/matlabcentral/fileexchange/13200-3d-polar-plot)が役立つかどうかを確認してください。私はそれを使って表面の上半分だけをプロットすることに成功しました。 – EBH