Дана окружность и точка вне неё; сравните геометрические методы построения касательных и аналитический метод через решения квадратного уравнения при заданных координатах, обсудите устойчивость построений при неточных данных
Кратко — сравнение, формулы и устойчивость. Геометрический метод (компас и линейка) - Построение: пусть C(a,b)C(a,b)C(a,b) — центр окружности радиуса rrr, P(x0,y0)P(x_0,y_0)P(x0,y0) — точка вне окружности (∣PC∣>r|PC|>r∣PC∣>r). Проведите отрезок CPCPCP и постройте окружность с диаметром CPCPCP. Точки пересечения этой окружности с данной окружностью — искомые точки касания T1,T2T_1,T_2T1,T2; прямые PT1,PT2PT_1,PT_2PT1,PT2 — искомые касательные. Обоснование: для пересечения TTT угол ∠CTP=90∘\angle CTP=90^\circ∠CTP=90∘, значит PTPTPT перпендикулярна CTCTCT и поэтому касательна. - Плюсы: простой, наглядный, не требует вычислений. - Минусы: ограниченная точность инструментами, ошибки при построении (особенно если PPP близко к окружности, пересечения почти сливаются). Аналитический метод (через квадратное уравнение) - Классический вывод через наклон mmm: прямая через PPP: y=m(x−x0)+y0y=m(x-x_0)+y_0y=m(x−x0)+y0. Условие касания — расстояние от CCC до прямой равно rrr, или эквивалентно дискриминанту при подстановке в уравнение окружности равному нулю. Получаем квадратное уравнение для mmmm2((a−x0)2−r2)−2m(a−x0)(b−y0)+(b−y0)2−r2=0.
m^2\bigl((a-x_0)^2-r^2\bigr)-2m(a-x_0)(b-y_0)+(b-y_0)^2-r^2=0. m2((a−x0)2−r2)−2m(a−x0)(b−y0)+(b−y0)2−r2=0.
Дискриминант этого уравнения равен Δm=4r2((a−x0)2+(b−y0)2−r2),
\Delta_m=4r^2\bigl((a-x_0)^2+(b-y_0)^2-r^2\bigr), Δm=4r2((a−x0)2+(b−y0)2−r2),
он положителен тогда и только тогда, когда PPP вне окружности. - Более устойчивая явная формула точек касания (без проблем с вертикальными наклонами) через векторы. Пусть v=P−C=(x0−a, y0−b)\mathbf v=P-C=(x_0-a,\;y_0-b)v=P−C=(x0−a,y0−b), d=∥v∥=(x0−a)2+(y0−b)2d=\|\mathbf v\|=\sqrt{(x_0-a)^2+(y_0-b)^2}d=∥v∥=(x0−a)2+(y0−b)2, t=d2−r2t=\sqrt{d^2-r^2}t=d2−r2. Обозначим единичный вектор u=v/d \mathbf u=\mathbf v/du=v/d и его перпендикуляр w=(−uy,ux) \mathbf w =(-u_y,u_x)w=(−uy,ux). Тогда точки касания T±=C+r2du±r tdw.
T_\pm = C + \frac{r^2}{d}\mathbf u \pm \frac{r\,t}{d}\mathbf w. T±=C+dr2u±drtw.
Это эквивалентно повороту направления CPCPCP на угол ±α\pm\alpha±α, где cosα=r/d\cos\alpha=r/dcosα=r/d; формула численно устойчива за исключением вырожденного случая d→0d\to 0d→0. Устойчивость и чувствительность - Главная неустойчивость — при PPP близко к окружности: если d−∣r∣d-|r|d−∣r∣ мал (тогда t=d2−r2t=\sqrt{d^2-r^2}t=d2−r2 мал), малые ошибки в координатах могут сильно смещать точки касания. При малом ttt относительная чувствительность при изменении ddd примерно увеличивается как dtdd=dt,
\frac{\mathrm d t}{\mathrm d d}=\frac{d}{t}, dddt=td,
т. е. фактор усиления ошибок порядка d/t≫1d/t\gg1d/t≫1. - В аналитическом варианте с наклоном mmm дополнительно возникают численные проблемы при близком к нулю знаменателе A=(a−x0)2−r2A=(a-x_0)^2-r^2A=(a−x0)2−r2 (очень большие mmm), и возможные катастрофические вычитания при вычислении корней квадратичного уравнения. Поэтому при реализации лучше не использовать простое решение по mmm, а применять векторную формулу выше или параметризацию. - Геометрическое построение тоже испытывает ту же базовую неустойчивость при d≈rd\approx rd≈r: пересечение двух окружностей становится неустойчивым (двойной/касательный случай). Но при умеренных погрешностях и «некрайнем» положении PPP геометрический метод даёт достаточно надёжную картинку и интуитивно простую процедуру. Рекомендации - Для практических вычислений и программ — использовать векторную формулу T±=C+r2du±rtdwT_\pm = C + \frac{r^2}{d}\mathbf u \pm \frac{r t}{d}\mathbf wT±=C+dr2u±drtw (устойчива к вертикальным прямым и обычно лучше численно). - Для ручного построения — метод окружности с диаметром CPCPCP (быстро и наглядно), но учесть, что при PPP очень близко к окружности результат чувствителен к измерениям. - Всегда проверять условие внешности точки: d>rd>rd>r. Если ddd близко к rrr, ожидать высокий уровень погрешности и по возможности повысить точность исходных данных.
Геометрический метод (компас и линейка)
- Построение: пусть C(a,b)C(a,b)C(a,b) — центр окружности радиуса rrr, P(x0,y0)P(x_0,y_0)P(x0 ,y0 ) — точка вне окружности (∣PC∣>r|PC|>r∣PC∣>r). Проведите отрезок CPCPCP и постройте окружность с диаметром CPCPCP. Точки пересечения этой окружности с данной окружностью — искомые точки касания T1,T2T_1,T_2T1 ,T2 ; прямые PT1,PT2PT_1,PT_2PT1 ,PT2 — искомые касательные. Обоснование: для пересечения TTT угол ∠CTP=90∘\angle CTP=90^\circ∠CTP=90∘, значит PTPTPT перпендикулярна CTCTCT и поэтому касательна.
- Плюсы: простой, наглядный, не требует вычислений.
- Минусы: ограниченная точность инструментами, ошибки при построении (особенно если PPP близко к окружности, пересечения почти сливаются).
Аналитический метод (через квадратное уравнение)
- Классический вывод через наклон mmm: прямая через PPP: y=m(x−x0)+y0y=m(x-x_0)+y_0y=m(x−x0 )+y0 . Условие касания — расстояние от CCC до прямой равно rrr, или эквивалентно дискриминанту при подстановке в уравнение окружности равному нулю. Получаем квадратное уравнение для mmm m2((a−x0)2−r2)−2m(a−x0)(b−y0)+(b−y0)2−r2=0. m^2\bigl((a-x_0)^2-r^2\bigr)-2m(a-x_0)(b-y_0)+(b-y_0)^2-r^2=0.
m2((a−x0 )2−r2)−2m(a−x0 )(b−y0 )+(b−y0 )2−r2=0. Дискриминант этого уравнения равен
Δm=4r2((a−x0)2+(b−y0)2−r2), \Delta_m=4r^2\bigl((a-x_0)^2+(b-y_0)^2-r^2\bigr),
Δm =4r2((a−x0 )2+(b−y0 )2−r2), он положителен тогда и только тогда, когда PPP вне окружности.
- Более устойчивая явная формула точек касания (без проблем с вертикальными наклонами) через векторы. Пусть v=P−C=(x0−a, y0−b)\mathbf v=P-C=(x_0-a,\;y_0-b)v=P−C=(x0 −a,y0 −b), d=∥v∥=(x0−a)2+(y0−b)2d=\|\mathbf v\|=\sqrt{(x_0-a)^2+(y_0-b)^2}d=∥v∥=(x0 −a)2+(y0 −b)2 , t=d2−r2t=\sqrt{d^2-r^2}t=d2−r2 . Обозначим единичный вектор u=v/d \mathbf u=\mathbf v/du=v/d и его перпендикуляр w=(−uy,ux) \mathbf w =(-u_y,u_x)w=(−uy ,ux ). Тогда точки касания
T±=C+r2du±r tdw. T_\pm = C + \frac{r^2}{d}\mathbf u \pm \frac{r\,t}{d}\mathbf w.
T± =C+dr2 u±drt w. Это эквивалентно повороту направления CPCPCP на угол ±α\pm\alpha±α, где cosα=r/d\cos\alpha=r/dcosα=r/d; формула численно устойчива за исключением вырожденного случая d→0d\to 0d→0.
Устойчивость и чувствительность
- Главная неустойчивость — при PPP близко к окружности: если d−∣r∣d-|r|d−∣r∣ мал (тогда t=d2−r2t=\sqrt{d^2-r^2}t=d2−r2 мал), малые ошибки в координатах могут сильно смещать точки касания. При малом ttt относительная чувствительность при изменении ddd примерно увеличивается как
dtdd=dt, \frac{\mathrm d t}{\mathrm d d}=\frac{d}{t},
dddt =td , т. е. фактор усиления ошибок порядка d/t≫1d/t\gg1d/t≫1.
- В аналитическом варианте с наклоном mmm дополнительно возникают численные проблемы при близком к нулю знаменателе A=(a−x0)2−r2A=(a-x_0)^2-r^2A=(a−x0 )2−r2 (очень большие mmm), и возможные катастрофические вычитания при вычислении корней квадратичного уравнения. Поэтому при реализации лучше не использовать простое решение по mmm, а применять векторную формулу выше или параметризацию.
- Геометрическое построение тоже испытывает ту же базовую неустойчивость при d≈rd\approx rd≈r: пересечение двух окружностей становится неустойчивым (двойной/касательный случай). Но при умеренных погрешностях и «некрайнем» положении PPP геометрический метод даёт достаточно надёжную картинку и интуитивно простую процедуру.
Рекомендации
- Для практических вычислений и программ — использовать векторную формулу T±=C+r2du±rtdwT_\pm = C + \frac{r^2}{d}\mathbf u \pm \frac{r t}{d}\mathbf wT± =C+dr2 u±drt w (устойчива к вертикальным прямым и обычно лучше численно).
- Для ручного построения — метод окружности с диаметром CPCPCP (быстро и наглядно), но учесть, что при PPP очень близко к окружности результат чувствителен к измерениям.
- Всегда проверять условие внешности точки: d>rd>rd>r. Если ddd близко к rrr, ожидать высокий уровень погрешности и по возможности повысить точность исходных данных.