在 Matlab 中绘制双曲线

Plotting Hyperbola in Matlab

我试图在 Matlab 中绘制一条双曲线来模拟环绕地球的双曲线轨迹。

由于双曲线方程由 +/- 部分组成(从平方根开始),我似乎无法弄清楚如何让 Matlab 绘制它。

到目前为止,这是我的代码:

%Plotting Hyperbolic Orbit

 e = 1.05;          %Eccentricity 
 a = -147562.72;    %km
 b = abs(a)*sqrt(e.^2 -1);      %Equation for Semi-Minor Axis, b

 x1 = linspace(0.00001, a);         %From 0 to a, Upper
 x2 = linspace(-a, -0.00001);       %From -a to 0, Lower

 y1 =  sqrt((b.^2)*((x1.^2)/(a.^2)-1));  %Upper Hyperbola Part
 y2 = -sqrt((b.^2)*((x2.^2)/(a.^2)-1));  %Lower Hyperbola Part


 figure
 plot(x1, y1, x2, y2, 'b')
 grid on

我最初尝试使用从 -a 到 a 的一个 x 坐标,但由于其中包含 0,它给了我一个虚数错误,最终无法绘制它。

感谢任何帮助,谢谢。

对于双曲线,x 小于 a(绝对值)的值是复数。

考虑表达式:x1.^2/a^2-1。如果 x1 小于 a,它们的比值将小于 1,平方会使它变得更大,因此整个表达式将是负数。然后 y 值由负数的平方根定义。因此,绘图边界与它们应该的相反(不过,即兴发挥,我认为它们非常适合椭圆)。

因此这段代码应该更接近您的预期:

 e = 1.05;          %Eccentricity 
 a = -147562.72;    %km
 b = abs(a)*sqrt(e.^2 -1);      %Equation for Semi-Minor Axis, b

 x1 = linspace(   a, 2*a, 1E3);         %From 0 to a, Upper

 ytop =  b*sqrt(x1.^2/a^2-1);  %Upper Hyperbola Part
 ybot = -b*sqrt(x1.^2/a^2-1);  %Lower Hyperbola Part

 figure
 plot(x1, ytop, x1, ybot, -x1, ytop, -x1, ybot);
 grid on