Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:填补两个绘图之间的空白_Python_Matplotlib - Fatal编程技术网

Python:填补两个绘图之间的空白

Python:填补两个绘图之间的空白,python,matplotlib,Python,Matplotlib,如何在一个中断点连接两个绘图?我有一个不连续点的方程 import numpy as np import pylab r1 = 1 # AU Earth r2 = 1.524 # AU Mars deltanu = 75 * np.pi

如何在一个中断点连接两个绘图?我有一个不连续点的方程

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.arcin(np.sqrt(1-c/s))
so
dt=0.5
at
a=s/2
。然而,两幅图之间的差距似乎大于一个点

我添加了:
ax.plot([am,am],.505,.55],color='#000000')
,这填补了空白,但感觉不合适


似乎您应该只为
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()
屈服


我真的不知道这里发生了什么;这是我偶然发现的。

ax.plot([am,am],[f(am),g(am)],color='#000000')
这些公式是基于轨道力学中的转移时间
betag
仅当角度大于180但小于360时才有效。这很好,但我相信我们也可以通过三个方程获得结果。至少这本书让我相信了。如果你把两个图叠加起来,这个图的底部比原来的图高。你确定你的
g
函数定义正确吗?我发现
g(am)==0.551860976346
,这与
f(am)==0.5
@esmit根据书中的内容不同。我已多次重新检查所有方程式。你自己重新推导方程式了吗?这本书可能是错的。不连续性的物理意义是什么?@esmit,即传输时间是最小能量传输。