numpy 显示圆的绘图方程

zf2sa74q  于 2024-01-08  发布在  其他
关注(0)|答案(5)|浏览(106)

以下公式用于对二维空间中的点进行分类:

  1. f(x1,x2) = np.sign(x1^2+x2^2-.6)

字符串
所有的点都在空间X = [-1,1] x [-1,1]中,并且每个x的概率都是一致的。
现在我想想象一个等于:

  1. 0 = x1^2+x2^2-.6


x1的值应在x轴上,x2的值应在y轴上。
这一定是可能的,但我很难把方程转化为一个情节。

nc1teljy

nc1teljy1#

您可以使用等值线图,如下所示(基于http://matplotlib.org/examples/pylab_examples/contour_demo.html的示例):

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. x = np.linspace(-1.0, 1.0, 100)
  4. y = np.linspace(-1.0, 1.0, 100)
  5. X, Y = np.meshgrid(x,y)
  6. F = X**2 + Y**2 - 0.6
  7. plt.contour(X,Y,F,[0])
  8. plt.show()

字符串
这将产生下图


的数据
最后是一些一般性发言:

  1. x^2并不意味着你认为它在python中是什么,你必须使用x**2
  2. x1x2(对我来说)是非常误导的,特别是如果你说x2必须在y轴上。
    1.(感谢Dux)您可以添加plt.gca().set_aspect('equal'),通过使轴相等,使图形实际上看起来是圆形的。
展开查看全部
pgpifvop

pgpifvop2#

@BasJansen的解决方案当然能让你达到目的,它要么效率很低(如果你使用很多网格点),要么不准确(如果你只使用很少的网格点)。
你可以很容易地直接画出圆。给定0 = x1**2 + x**2 - 0.6,就可以得出x2 = sqrt(0.6 - x1**2)(正如Dux所说)。
但你真正想做的是,把你的笛卡尔坐标,转换成极坐标。

  1. x1 = r*cos(theta)
  2. x2 = r*sin(theta)

字符串
如果你在圆的等式中使用这些替换,你会看到r=sqrt(0.6)
所以现在你可以用它来绘制你的图:

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. # theta goes from 0 to 2pi
  4. theta = np.linspace(0, 2*np.pi, 100)
  5. # the radius of the circle
  6. r = np.sqrt(0.6)
  7. # compute x1 and x2
  8. x1 = r*np.cos(theta)
  9. x2 = r*np.sin(theta)
  10. # create the figure
  11. fig, ax = plt.subplots(1)
  12. ax.plot(x1, x2)
  13. ax.set_aspect(1)
  14. plt.show()


测试结果:
x1c 0d1x的数据

展开查看全部
p1iqtdky

p1iqtdky3#

如何绘制x值并计算相应的y值?

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. x = np.linspace(-1, 1, 100, endpoint=True)
  4. y = np.sqrt(-x**2. + 0.6)
  5. plt.plot(x, y)
  6. plt.plot(x, -y)

字符串
产生


的数据
很明显,这可以做得更好,但这只是为了演示...

展开查看全部
92dk7w1h

92dk7w1h4#

  1. # x**2 + y**2 = r**2
  2. r = 6
  3. x = np.linspace(-r,r,1000)
  4. y = np.sqrt(-x**2+r**2)
  5. plt.plot(x, y,'b')
  6. plt.plot(x,-y,'b')
  7. plt.gca().set_aspect('equal')
  8. plt.show()

字符串
生产:


的数据

4dc9hkyq

4dc9hkyq5#

使用复数绘制圆

思想:将一个点乘以复指数(

)会旋转圆上的点

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. num_pts=20 # number of points on the circle
  4. ps = np.arange(num_pts+1)
  5. # j = np.sqrt(-1)
  6. pts = np.exp(2j*np.pi/num_pts *(ps))
  7. fig, ax = plt.subplots(1)
  8. ax.plot(pts.real, pts.imag , '-o')
  9. ax.set_aspect(1)
  10. plt.show()

字符串


展开查看全部

相关问题