2016-04-07 20 views
3

挨拶問題:のPython 3に回転体をPloting(matplotlibの多分)

Rは放物線Y = X^2 + 1と直線y = X + 3で囲まれたXY平面内の領域です。回転の固体は、Rをx軸の周りに回転させることによって形成される。放物線と線を2Dとソリッド3Dでプロットする必要があります。どうやってですか? 私はanacondaをインストールしました。

+0

あなたのためにコードを記述していただきたいようです。多くのユーザーは、苦労しているコーダーのコードを作成したいと考えていますが、通常、ポスターが既に問題を解決しようとしているときにのみ役立ちます。この努力を実証する良い方法は、これまでに書いたコード、サンプル入力(もしあれば)、予想される出力、実際に得られる出力(コンソール出力、トレースバックなど)を含めることです。あなたが提供する詳細があれば、受け取る可能性のある回答が増えます。 [FAQ]と[ask]を確認してください。 – idjaw

答えて

5

あなたはplot_surface使用することができます

u = np.linspace(-1, 2, 60) 
v = np.linspace(0, 2*np.pi, 60) 

ように2つの1次元のパラメータ、uvを識別することによって始めるplot_surfaceを用いて表面をプロットするには

import numpy as np 
import matplotlib.pyplot as plt 
import mpl_toolkits.mplot3d.axes3d as axes3d 

fig = plt.figure() 
ax = fig.add_subplot(1, 1, 1, projection='3d') 

u = np.linspace(-1, 2, 60) 
v = np.linspace(0, 2*np.pi, 60) 
U, V = np.meshgrid(u, v) 

X = U 
Y1 = (U**2 + 1)*np.cos(V) 
Z1 = (U**2 + 1)*np.sin(V) 

Y2 = (U + 3)*np.cos(V) 
Z2 = (U + 3)*np.sin(V) 

ax.plot_surface(X, Y1, Z1, alpha=0.3, color='red', rstride=6, cstride=12) 
ax.plot_surface(X, Y2, Z2, alpha=0.3, color='blue', rstride=6, cstride=12) 
plt.show() 

enter image description here

x,y,01約ax.plot_surfaceその最初の3つの引数が 2Dアレイでなければならないということである

x = x(u, v) 
y = y(u, v) 
z = z(u, v) 

事は注意すべき:パラメータuvの関数です。そこで、座標ベクトル(uv)の外マトリックス(UV)の座標、及びUVの関数であることが2DアレイXYZを定義作成するnp.meshgridを使用:

X = U 
Y1 = (U**2 + 1)*np.cos(V) 
Z1 = (U**2 + 1)*np.sin(V) 

各位置について座標マトリクスUおよびVには、XおよびYおよびZに対応する値があります。これにより、2次元のuv - 空間から3次元のxyz - 空間へのマップが作成されます。 uv -spaceのすべての矩形について、表面にはxyz -spaceの面があります。 plot_surfaceで描かれた曲面は、これらの平坦な面で構成されています。

+0

答えはx軸です。あなたはy軸の周りの回転の固体を見つけるのを助けてくれますか? – haccks

+0

@haccks:上記のコードを使用すると、単に 'ax.plot_surface(X、Y1、Z1、...)'を 'ax.plot_surface(Y1、X、Z1、...)'に変更し、 'ax.plot_surface'呼び出しです。 Voila、回転の表面はy軸の周りになります。もちろん、 'X'は' y 'の役割を果たしており、 'Y1'と' Y2'は 'x'の値になっています。したがって、明快にするために変数名を変更したいと思うでしょう。しかし、結果は単にXとYの変数を "交換"するだけで達成されます。 – unutbu

+0

私はそれを試みたが運がない。異なる軸に沿った回転は、異なる[領域と形状](https://www.wyzant.com/resources/lessons/math/calculus/integration/finding_volume)を与えます。 'Y1'と' X'を入れ替えると、同じ面積と形が得られます。 – haccks

関連する問題