我认为在申请解决它之前,有必要先研究一下函数的行为。如果不这样做,你就不知道是否有一个独特的解决方案,许多解决方案,或没有解决方案。(最大的问题是许多解决方案,其中数值方法可能无法提供您所需/期望的解决方案-如果您盲目使用,可能会发生“坏事”)。使用scipy和ipython可以很好地检查行为。这是一个这样做的示例笔记本# -*- coding: utf-8 -*-
# 3.0
#
s = 10014.6
c = 6339.06
mu = 398600.0
dt = 780.0
#
def sin_alpha_2(x):
return numpy.sqrt(s/(2*x))
def sin_beta_2(x):
return numpy.sqrt((s-c)/(2*x))
def alpha(x):
return 2*numpy.arcsin( numpy.clip(sin_alpha_2(x),-0.99,0.99) )
def beta(x):
return 2*numpy.arcsin( numpy.clip(sin_beta_2(x),-0.99,0.99) )
#
def fn(x):
return alpha(x)-beta(x)-numpy.sin(alpha(x))+numpy.sin(beta(x)) - dt * numpy.sqrt( mu / numpy.power(x,3) )
#
xx = numpy.arange(1,20000)
pylab.plot(xx, numpy.clip(fn(xx),-2,2) )
^{pr2}$
#
xx=numpy.arange(8000,9000)
pylab.plot(xx,fn(xx))
这表明我们希望找到一个8000到9000之间的解决方案。
曲线在大约5000处出现奇怪的扭结,而更早的解出现在约4000处是由于
使圆弧运动所需的剪辑。实际上,这个等式在a=5000以下没有意义。(精确值为光线解中给定的a0)。这就提供了一个很好的范围,可以与光线解决方案中的技术一起使用。在