3

中断点で 2 つのプロットを接続するにはどうすればよいですか? 不連続点の方程式があります。

import numpy as np
import pylab

r1 = 1  #  AU Earth                                                                 
r2 = 1.524  #  AU Mars                                                              
deltanu = 75 * np.pi / 180  #  angle in radians                                     
mu = 38.86984154054163

c = np.sqrt(r1 ** 2 + r2 ** 2 - 2 * r1 * r2 * np.cos(deltanu))

s = (r1 + r2 + c) / 2

am = s / 2


def f(a):
    alpha = 2 * np.arcsin(np.sqrt(s / (2 * a)))
    beta = 2 * np.arcsin(np.sqrt((s - c) / (2 * a)))
    return (np.sqrt(a **3 / mu) * (alpha - beta - (np.sin(alpha)
                                                      - np.sin(beta))))


def g(a):
    alphag = 2* np.pi - 2 * np.arcsin(np.sqrt(s / (2 * a)))
    betag = -2 * np.arcsin(np.sqrt((s - c) / (2 * a)))
    return (np.sqrt(a ** 3 / mu)
            * (alphag - betag - (np.sin(alphag) - np.sin(betag))))


a = np.linspace(am, 2, 500000)

fig = pylab.figure()
ax = fig.add_subplot(111)
ax.plot(a, f(a), color = '#000000')
ax.plot(a, g(a), color = '#000000')
pylab.xlim((0.9, 2))
pylab.ylim((0, 2))

pylab.show()

ここに画像の説明を入力

ポイントを反映する方程式は次のとおりdt = np.sqrt(s ** 3 / 8) * (np.pi - betam + np.sin(betam))です。ただし、プロット間のギャップはポイントよりも大きく見えます。betam = 2 * np.arcsin(np.sqrt(1 - c / s))dt = 0.5a = s / 2

私は追加しました:ax.plot([am, am], [.505, .55], color = '#000000')これはギャップを埋めますが、場違いに感じます.

ここに画像の説明を入力

4

2 に答える 2

2

おそらく、 には 1 つの値のみを使用する必要があるようですbetag

import numpy as np
import matplotlib.pyplot as plt

r1 = 1  #  AU Earth                                                                 
r2 = 1.524  #  AU Mars                                                              
deltanu = 75 * np.pi / 180  #  angle in radians                                     
mu = 38.86984154054163                                        
c = np.sqrt(r1 ** 2 + r2 ** 2 - 2 * r1 * r2 * np.cos(deltanu))
s = (r1 + r2 + c) / 2
am = s / 2

def g(a, alphag, betag):
    return (np.sqrt(a ** 3 / mu)
            * (alphag - betag - (np.sin(alphag) - np.sin(betag))))

a = np.linspace(am, 2, 500000)

fig, ax = plt.subplots()

alphag = 2 * np.pi - 2 * np.arcsin(np.sqrt(s / (2 * a)))
betag = 2 * np.arcsin(np.sqrt((s - c) / (2 * a)))
ax.plot(a, g(a, alphag, betag), color = 'r')
alphag = 2 * np.arcsin(np.sqrt(s / (2 * a)))
ax.plot(a, g(a, alphag, betag), color = 'r')

plt.show()

収量

ここに画像の説明を入力

ここで何が起こっているのか本当にわかりません。これはたまたま見つけました。

于 2013-06-22T14:25:51.803 に答える
2

ax.plot([am,am],[f(am),g(am)],color== '#000000')

于 2013-06-24T21:40:22.157 に答える