次の式を使用して、2次元空間からポイントを分類します。
f(x1,x2) = np.sign(x1^2+x2^2-.6)
すべてのポイントは空間にありますX = [-1,1] x [-1,1]
各xを選択する確率が均一です。
次の円を視覚化したいと思います。
0 = x1^2+x2^2-.6
X1の値はx軸にあり、x2の値はy軸にある必要があります。
それは可能でなければならないが、方程式をプロットに変換するのは難しい。
次のように、コンタープロットを使用できます( http://matplotlib.org/examples/pylab_examples/contour_demo.html の例に基づきます)。
_import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-1.0, 1.0, 100)
y = np.linspace(-1.0, 1.0, 100)
X, Y = np.meshgrid(x,y)
F = X**2 + Y**2 - 0.6
plt.contour(X,Y,F,[0])
plt.show()
_
これにより、次のグラフが生成されます
最後に、いくつかの一般的なステートメント:
x^2
_は、Pythonでは何を意味するかthinkを意味しないため、_x**2
_を使用する必要があります。x1
_と_x2
_は、(_x2
_がy軸上にある必要があると述べている場合は特に)ひどく誤解を招きやすい(私にとって)。plt.gca().set_aspect('equal')
を追加して、実際に図を円形に見せることができます。@BasJansenのソリューションは確かにあなたをそこに導きます、それは非常に非効率的(多くのグリッドポイントを使用する場合)または不正確(いくつかのグリッドポイントのみを使用する場合)です。
簡単に直接円を描くことができます。 _0 = x1**2 + x**2 - 0.6
_を指定すると、x2 = sqrt(0.6 - x1**2)
になります(Duxによる説明)。
しかし、本当にやりたいことは、デカルト座標を極座標に変換することです。
_x1 = r*cos(theta)
x2 = r*sin(theta)
_
これらの置換を円の方程式で使用すると、r=sqrt(0.6)
が表示されます。
したがって、これをプロットに使用できます。
_import numpy as np
import matplotlib.pyplot as plt
# theta goes from 0 to 2pi
theta = np.linspace(0, 2*np.pi, 100)
# the radius of the circle
r = np.sqrt(0.6)
# compute x1 and x2
x1 = r*np.cos(theta)
x2 = r*np.sin(theta)
# create the figure
fig, ax = plt.subplots(1)
ax.plot(x1, x2)
ax.set_aspect(1)
plt.show()
_
結果: