Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.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_Geometry - Fatal编程技术网

Python 绘制双曲线,使其在某一点相交

Python 绘制双曲线,使其在某一点相交,python,matplotlib,geometry,Python,Matplotlib,Geometry,我想画多条双曲线,围绕同一个焦点,具有相同的半长轴,但不同的偏心度,以便它们在某一点交叉。 考虑到这两个偏心,e1,e2,θ应该如何改变,以使它们的双曲线在特定的r处相交 这是我的密码: import numpy as np import matplotlib.pyplot as plt a=-1.0 #semi-major axis n_e1=2.0 #eccentricity of first orbit n_e2=3.0 #eccentricity of secon

我想画多条双曲线,围绕同一个焦点,具有相同的半长轴,但不同的偏心度,以便它们在某一点交叉。 考虑到这两个偏心,e1,e2,θ应该如何改变,以使它们的双曲线在特定的r处相交

这是我的密码:

import numpy as np
import matplotlib.pyplot as plt

a=-1.0      #semi-major axis
n_e1=2.0    #eccentricity of first orbit
n_e2=3.0    #eccentricity of second orbit

theta=np.arange(0,2*np.pi,2*np.pi/100)


r1 = a*(1-n_e1**2)/(1+n_e1*np.cos(theta))
r2 = a*(1-n_e2**2)/(1+n_e2*np.cos(theta))


ax = plt.subplot(111, polar=True)
ax.plot(theta, r1, color='r', linewidth=3)
ax.plot(theta, r2, color='b', linewidth=3)
ax.set_rmax(30.0)
ax.grid(True)

plt.show()
这给了我两条不相交的双曲线。
我应该如何修改我的代码,使双曲线在某个r处相交,比如r=10?

这真的是一个简单的数学:你只需求解
theta
就可以计算出特定的
theta
,在该点上达到预定义的
r
。然后添加这些偏移以旋转第二条双曲线

import numpy as np
import matplotlib.pyplot as plt

theta=np.arange(0,2*np.pi,2*np.pi/400)

a= 1.0      #semi-major axis
r = 10.
e1 = 2.
e2 = 3. 

def get_r(theta, e, a):
    return a*(e**2 - 1)/(1+e*np.cos(theta))

def get_theta(r, e, a):
    return np.arccos((a*(e**2 - 1) -r)/(e*r))

offset1 = get_theta(r, e1, a)
offset2 = get_theta(r, e2, a)

ax = plt.subplot(111, polar=True)
ax.plot(theta, get_r(theta, e1, a), color='r', linewidth=2)
ax.plot(theta, get_r(theta - offset2 + offset1, e2, a), color='b', linewidth=2)
ax.set_rmax(30.0)
ax.grid(True)
plt.legend()
plt.show()

对不起,我的问题模棱两可。给定两条双曲线,具有相同的半长轴和偏心率e1、e2。我应该如何调整θ/旋转绘图,使它们在某个r交叉。你试过我的代码吗?如果它不能做你想要的,那么我仍然不明白你需要什么是的,我试过你的代码。给定一定的r,求出在该位置相交的两条双曲线的偏心率。但我想给出偏心度,旋转其中一条双曲线,让它穿过另一条。我不想改变双曲线的形状,只想改变它们的方向。请问你在什么情况下需要这个??我担心我只是在帮你解决家庭作业——当然,我在做一个硕士项目,以下是一些描述:撞击水星表面的宇宙射线释放出中子,其中一些逃逸进入轨道。美国宇航局的信使号任务携带一个中子光谱仪,在一个高度椭圆的轨道上测量中子的丰度,作为离地面距离的函数。这种丰度取决于自由中子衰变的速率。这个项目的目的是考虑信使数据如何约束中子寿命。“这个双曲线的事情是帮助我获得关于中子轨道的直觉。