2016-02-13 28 views
0

我試圖描繪出這些3個功能:繪製顯性和隱性功能

z=y-1; 
(x^2)+(y^2)=2x; 
(x^2)+(y^2)=4; 

正如你可以看到第一個是一個隱函數,具體的線路。另外兩個是兩個明確的功能,特別是周邊。我需要將它們繪製在與x,y,z軸相同的3D圖形中以研究它們。我只需要3軸的範圍是從0到2.我嘗試使用meshgridmesh,但它似乎只適用於第一個功能。

回答

1

如果你不介意重新定義你的功能了一下,你可以這樣做,用一些數學:

%function 1 
y1=linspace(0,2,1000); 
z1=y1-1; 
x1=zeros(1,length(y1)); 

%function 2 
theta2=linspace(-pi/2,pi/2,1000); 
x2=2*(cos(theta2)).^2; 
y2=sqrt(2*x2).*sin(theta2); 
z2=zeros(1,length(x2)); 

%function 3 
theta3=linspace(0,2*pi,1000); 
x3=2*(cos(theta3)); 
y3=2*sin(theta3); 
z3=zeros(1,length(x2)); 

%plot 
plot3([x1' x2' x3'],[y1' y2' y3'],[z1' z2' z3']); 
axis equal; 
xlim([0 2]); 
ylim([0 2]); 
zlim([0 2]); 
+0

它似乎有點準確,但我真的不明白你在做什麼。另外還有一個函數沒有很好地繪製('(x^2)+(y^2)= 2x;',我不知道它是否是代碼中的函數2或3)。你能解釋一下你做了什麼,我該如何解決這個問題? – user2952272

+0

這是我的功能2.我所做的基本上是使用(x^2 + y^2)= r^2,其中r是到原點(0,0)的距離。然後,由於x = r * cos(θ)= sqrt(2 * x)*cosθ,因此對於x求解並且我得到x = 2 *(cosθ)^ 2。然後r = sqrt(2 * x),我可以得到y。是的,有一個錯誤,我在函數2中缺少一個sqrt()。我會編輯它。 – Arzeik

1

如果可以使用ezplot從象徵性的工具箱:

syms x y 
ezplot((x^2)+(y^2)==2*x) 

否則使用相同的命名函數在一個標準的MATLAB安裝

ezplot('(x^2)+(y^2)=2*x') 
+0

謝謝,我試過並管理d使用'hold on'來繪製兩個顯式函數,但是當我繪製'z = y-1'並試圖改變視圖時,它似乎仍然是2D(z和y而不是x)。 – user2952272

+0

有符號工具箱嗎? – Daniel

+0

不......使用標準的MATLAB安裝 – user2952272