还是我来写吧……
设椭圆方程
x^2/a^2 + y^2/b^2 = 1
设切线方程
k*(x - x0) = y - y0
这里(x0,y0)为椭圆上一点
将两个方程合并消去y
得
b^2*X^2 + a^2 * [k*(X - x0) + y0]^2 = a^2*b^2
化得(过程略)
(a^2*k^2 + b^2)*X^2 + 2*k*a^2*(y0 - k*x0) * X + a^2*(k^2*x^2 + y0^2 - 2*k*x0*y0 -b^2) = 0
因为切线与椭圆只有一个交点
故方程为两个相同的解
Δ = 4*a^4*k^2*(y0 - x0*k) - 4*a^2*(a^2*k^2 + b^2)*[(k*x0 - y0)^2 - b^2] = 0
得到
-(k*x0 - y0)^2 + a^2*k^2 + b^2 = 0
化成关于k的方程
(a^2 - x0^2)*k^2 + 2*x0*y0*k + (b^2 - y0^2) = 0
由(x0,y0)在椭圆上知
a^2 - x0^2 = a^2/b^2*y0^2
b^2 - y0^2 = b^2/a^2*x0^2
带入得
a^2/b^2*y0^2*k^2 + 2*x0*y0*k + b^2/a^2*x0^2 = 0
很容易就能解得
k = -(x0*b^2)/(a^2*y0)
然后将k代回直线方程即得到切线方程
计算这个个关键在于设切线方程和利用x0,y0关系来化简方程