挨拶問題:のPython 3に回転体をPloting(matplotlibの多分)
Rは放物線Y = X^2 + 1と直線y = X + 3で囲まれたXY平面内の領域です。回転の固体は、Rをx軸の周りに回転させることによって形成される。放物線と線を2Dとソリッド3Dでプロットする必要があります。どうやってですか? 私はanacondaをインストールしました。
挨拶問題:のPython 3に回転体をPloting(matplotlibの多分)
Rは放物線Y = X^2 + 1と直線y = X + 3で囲まれたXY平面内の領域です。回転の固体は、Rをx軸の周りに回転させることによって形成される。放物線と線を2Dとソリッド3Dでプロットする必要があります。どうやってですか? 私はanacondaをインストールしました。
あなたはplot_surface
使用することができます
u = np.linspace(-1, 2, 60)
v = np.linspace(0, 2*np.pi, 60)
ように2つの1次元のパラメータ、u
とv
を識別することによって始める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()
をx
,y
,01約ax.plot_surface
その最初の3つの引数が 2Dアレイでなければならないということである
x = x(u, v)
y = y(u, v)
z = z(u, v)
事は注意すべき:パラメータu
とv
の関数です。そこで、座標ベクトル(u
とv
)の外マトリックス(U
とV
)の座標、及びU
とV
の関数であることが2DアレイX
、Y
、Z
を定義作成する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
で描かれた曲面は、これらの平坦な面で構成されています。
答えはx軸です。あなたはy軸の周りの回転の固体を見つけるのを助けてくれますか? – haccks
@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
私はそれを試みたが運がない。異なる軸に沿った回転は、異なる[領域と形状](https://www.wyzant.com/resources/lessons/math/calculus/integration/finding_volume)を与えます。 'Y1'と' X'を入れ替えると、同じ面積と形が得られます。 – haccks
あなたのためにコードを記述していただきたいようです。多くのユーザーは、苦労しているコーダーのコードを作成したいと考えていますが、通常、ポスターが既に問題を解決しようとしているときにのみ役立ちます。この努力を実証する良い方法は、これまでに書いたコード、サンプル入力(もしあれば)、予想される出力、実際に得られる出力(コンソール出力、トレースバックなど)を含めることです。あなたが提供する詳細があれば、受け取る可能性のある回答が増えます。 [FAQ]と[ask]を確認してください。 – idjaw