2016-11-24 164 views
0

enter image description here曲線上的點掉出曲線

我必須檢查一個點是否在半橢圓a和b的橢圓內。我生成了一個元組列表(點),然後生成另一個元組列表(dotsin),我只保留那些在橢圓內的點。

但是,生成時,有些點會掉出橢圓。這個錯誤是否會累積穀值計算,如果是的話,我該如何改進,使點不會脫離曲線?

請注意,我在Python中有點生疏,有些事情對我來說並不明顯。 在此先感謝!

dots=[(random.uniform(-a,a),random.uniform(-b,b)) for i in range(1000)]#;dots 
    dotsin=[(x,y) for x,y in dots if (x**2 + y**2)<((a*cos(atan(y/x)))**2 + (b*sin(atan(y/x)))**2)]#;dotsin 
    plt.scatter([x[0] for x in dotsin],[y[1] for y in dotsin]) 
    plt.grid() 
+0

的圖像是「在這裏輸入的形象描述」下,如果你感到困惑,因爲頁面將不會允許我還張貼圖片。 –

回答

0

您的狀態(x**2 + y**2)<((a*cos(atan(y/x)))**2 + (b*sin(atan(y/x)))**2)相當於(x**2 + y**2)**2 < (a*x) ** 2 + (b*y) ** 2。這不是橢圓方程。橢圓公式爲(x/a)**2 + (y/b)**2 < 1

from numpy import random 
import numpy as np 
from math import sin, cos, atan 
import matplotlib.pyplot as plt 
%matplotlib inline 
a = 3 
b = 2 
n = 1000 
dots=[(random.uniform(-a,a),random.uniform(-b,b)) for i in range(n)]#;dots 
dotsin=[(x,y) for x,y in dots if (x/a)**2 + (y/b)**2 < 1]#;dotsin 
plt.scatter([x[0] for x in dotsin],[y[1] for y in dotsin]) 
phi = np.linspace(0, 2*np.pi, 200) 
plt.plot(a*np.cos(phi), b*np.sin(phi)) 
plt.grid() 

ellips

+0

現在我覺得這該死的愚蠢,下次我應該仔細閱讀我的代碼。感謝您向我展示我的方式錯誤。 –

+0

如果答案回答了您的問題,您可以通過單擊左側的複選標記(也可能是buttom「up」)來接受(並且可能的話)。 –