我想繪製三維笛卡爾座標系中極座標r
和theta
的二維函數。我有(抱歉壞數學格式,LaTeX的不兼容,它似乎)如何用MATLAB在三維空間中繪製二維函數?
f(r,theta) = r/2 * (cos(theta - pi/4) + sqrt(1 + 1/2 * cos(2*theta)))
轉換r
和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;
給我兩個相同維度的向量。
我可以
x = r. * cos(theta);
和
y = r. * sin(theta);
定義用於繪製作爲行向量的x
和y
值,所以現在我需要定義z
值,這將取決於價值x
和y
。我想我應該做一個101x101,其中每個矩陣元素包含最終表面的數據點。但我應該怎麼做?我想過使用雙for
循環:
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
然後簡單surf(z)
雖然這肯定給我的表面,它給了我不正確的面!我不知道這裏發生了什麼事。圖1給出了不正確的曲面,圖2給出了正確的曲面。任何人都可以幫助我嗎?作爲參考,正確表面用GeoGebra作圖,使用
A = Function[<expression 1>, <Expresison 2>, <Expression 3>, <var 1>, <start>, <stop>, <var 2>, <start>, <stop>]
圖1.不正確的表面。
圖2.正確表面。
你試圖從極性(球形)轉換爲笛卡爾?還是圓柱形到笛卡爾? – toshiomagic
嘗試查看[this](https://www.mathworks.com/matlabcentral/fileexchange/13200-3d-polar-plot)是否可以幫助您。我成功地只繪製了它的上半部分。 – EBH