椭圆的几何要素
flyfish
-
椭圆的方程为 x 2 a 2 + y 2 b 2 = 1 \frac{x^2}{a^2} + \frac{y^2}{b^2} = 1 a2x2+b2y2=1。
-
长半轴 a a a(绿色虚线)和短半轴 b b b(紫色虚线)。
-
焦点 F 1 ( − c , 0 ) F1(-c, 0) F1(−c,0)(红色点)和 F 2 ( c , 0 ) F2(c, 0) F2(c,0)(蓝色点),焦距 c c c(黄色虚线)。
假设我们有一个椭圆,其长轴长度为 2 a 2a 2a,短轴长度为 2 b 2b 2b,两个焦点分别位于 F 1 ( − c , 0 ) F_1(-c, 0) F1(−c,0) 和 F 2 ( c , 0 ) F_2(c, 0) F2(c,0)。根据椭圆的定义,椭圆上任意一点到两个焦点的距离之和为常数,并且等于长轴的长度。考虑椭圆上的顶点 ( a , 0 ) (a, 0) (a,0) 和 ( − a , 0 ) (-a, 0) (−a,0):
- 点 ( a , 0 ) (a, 0) (a,0) 到两个焦点的距离分别为 ( a + c ) 2 + 0 2 \sqrt{(a + c)^2 + 0^2} (a+c)2+02 和 ( a − c ) 2 + 0 2 \sqrt{(a - c)^2 + 0^2} (a−c)2+02,因此有:
( a + c ) 2 + ( a − c ) 2 = 2 a \sqrt{(a + c)^2} + \sqrt{(a - c)^2} = 2a (a+c)2+(a−c)2=2a
( a + c ) + ( a − c ) = 2 a (a + c) + (a - c) = 2a (a+c)+(a−c)=2a
为什么 c 2 = a 2 − b 2 c^2 = a^2 - b^2 c2=a2−b2
对于椭圆上的任意一点 P ( x , y ) P(x, y) P(x,y),到两个焦点的距离之和是常数,并且等于椭圆的长轴长度 2 a 2a 2a$。即
d ( P , F 1 ) + d ( P , F 2 ) = 2 a d(P, F_1) + d(P, F_2) = 2a d(P,F1)+d(P,F2)=2a
其中 F 1 ( − c , 0 ) F_1(-c, 0) F1(−c,0) 和 F 2 ( c , 0 ) F_2(c, 0) F2(c,0)。设 P ( x , y ) P(x, y) P(x,y) 是椭圆上的任意一点,根据距离公式:
d ( P , F 1 ) = ( x + c ) 2 + y 2 d(P, F_1) = \sqrt{(x + c)^2 + y^2} d(P,F1)=(x+c)2+y2
d ( P , F 2 ) = ( x − c ) 2 + y 2 d(P, F_2) = \sqrt{(x - c)^2 + y^2} d(P,F2)=(x−c)2+y2根据椭圆的定义:
( x + c ) 2 + y 2 + ( x − c ) 2 + y 2 = 2 a \sqrt{(x + c)^2 + y^2} + \sqrt{(x - c)^2 + y^2} = 2a (x+c)2+y2+(x−c)2+y2=2a
考虑椭圆上的另一点 ( 0 , b ) (0, b) (0,b): ( x = 0 , y = b ) (x=0, y=b) (x=0,y=b)
- 点 ( 0 , b ) (0, b) (0,b) 到两个焦点的距离分别为
( − c ) 2 + b 2 \sqrt{(-c)^2 + b^2} (−c)2+b2
c 2 + b 2 \sqrt{c^2 + b^2} c2+b2,根据椭圆的定义,有:
c 2 + b 2 + c 2 + b 2 = 2 a \sqrt{c^2 + b^2} + \sqrt{c^2 + b^2} = 2a c2+b2+c2+b2=2a
2 c 2 + b 2 = 2 a 2\sqrt{c^2 + b^2} = 2a 2c2+b2=2a
c 2 + b 2 = a \sqrt{c^2 + b^2} = a c2+b2=a
两边平方:
c 2 + b 2 = a 2 c^2 + b^2 = a^2 c2+b2=a2
因此,得出结论:
c 2 = a 2 − b 2 c^2 = a^2 - b^2 c2=a2−b2
上图的代码
import matplotlib.pyplot as plt
import numpy as np# 椭圆的长半轴 a 和短半轴 b
a = 5
b = 3
# 计算焦距 c
c = np.sqrt(a**2 - b**2)# 创建一个椭圆
theta = np.linspace(0, 2 * np.pi, 1000)
x = a * np.cos(theta)
y = b * np.sin(theta)# 焦点坐标
F1 = (-c, 0)
F2 = (c, 0)# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False # 绘制椭圆
plt.figure(figsize=(8, 8))
plt.plot(x, y, label=r'$\frac{x^2}{a^2} + \frac{y^2}{b^2} = 1$')
plt.scatter(*F1, color='red', label='焦点 F1(-c, 0)')
plt.scatter(*F2, color='blue', label='焦点 F2(c, 0)')# 标注长半轴 a 和短半轴 b
plt.plot([0, a], [0, 0], 'g--', label='长半轴 a')
plt.plot([0, 0], [0, b], 'm--', label='短半轴 b')
plt.plot([0, -a], [0, 0], 'g--')
plt.plot([0, 0], [0, -b], 'm--')# 标注焦距 c
plt.plot([0, c], [0, 0], 'y--', label='焦距 c')
plt.plot([0, -c], [0, 0], 'y--')# 添加图例
plt.legend()# 设置图形范围
plt.xlim(-6, 6)
plt.ylim(-6, 6)
plt.axhline(0, color='black',linewidth=0.5)
plt.axvline(0, color='black',linewidth=0.5)
plt.grid(color = 'gray', linestyle = '--', linewidth = 0.5)
plt.gca().set_aspect('equal', adjustable='box')
plt.title("椭圆及其几何要素")
plt.show()