擅长:python、mysql、java
<p>我是这个问题的负责人,我从评论中意识到我做了一个错误的假设。该程序利用椭圆参数方程计算x、y坐标。参数方程中的角度不是与x轴形成的角度。我以为它们在代码里是一样的。正确的代码是</p>
<pre><code>from math import sqrt,cos,sin,atan2,radians,degrees
def distance(x1,y1,x2,y2):
return sqrt((x2-x1)**2 + (y2-y1)**2)
a = 5
b = 3
x0 = a
y0 = 0
angle = 0
d = 0
while(angle<=360):
x = a * cos(radians(angle))
y = b * sin(radians(angle))
d += distance(x0,y0,x,y)
x0 = x
y0 = y
angle += 0.25
print "Circumference of ellipse = %f" %d
onetenth = d/10
angle = 0
x0 = a
y0 = 0
angle0 = 0
for i in range(10):
dist = 0
while(dist<onetenth):
x = a * cos(radians(angle))
y = b * sin(radians(angle))
dist += distance(x0,y0,x,y)
x0 = x
y0 = y
angle += 0.25
xangle = degrees(atan2(y,x))
print "%d : angle = %.2f\tdifference = %.2f" %(i+1, xangle, xangle-angle0)
angle0 = xangle
</code></pre>
<p>它通过取点的x和y坐标的反正切来计算与x轴的夹角。其输出:</p>
^{pr2}$
<p>这些角把椭圆<a href="https://i.imgur.com/1Cd3Kef.png" rel="nofollow noreferrer">almost equally</a>的周长分开。在</p>