Стремиться лучше к простоте

Георгий Александров
На просторах ютуба и других ресурсах мелькала такая геометрическая задача. Внутри окружности имеются три ортогональных отрезка. Длины их следующие: 4, 6, 8. На рисунке они показаны довольно четко. При этом в трех местах наблюдаются касания концов отрезков с окружностью. Требуется найти ее радиус R. Я не стал даже рассматривать решение. Думаю, что оно чрезмерно хитрое и остроумное. Наверняка догадаться об оригинальных построениях могут лишь олимпиадники. Поэтому я и не стал ломать голову, а пошел по самому простому пути. Он, естественно, таков. Хорошо известно, что по координатам трех точек на плоскости, которые не лежат на одной прямой, всегда можно провести окружность радиусом R. В иллюстрации приведены формулы для нахождения центра окружности, если известны координаты трех точек на ней. Эти формулы вывел самостоятельно (в моей страничке есть даже миниатюра на данную тему). Формулы эти столь красивые, что поместил их в Википедии.
Следовательно, если в данной задаче выявить координаты точек 1, 2, 3, то довольно просто найти координаты центра (x0,y0), а затем и радиус R. Делать это проще всего по программе:

rem Найти радиус окр-ти R
x1=0:y1=0:x2=0:y2=4:x3=6:y3=-4
z1=y1*(x2^2+y2^2-x3^2-y3^2)
z2=y2*(x3^2+y3^2-x1^2-y1^2)
z3=y3*(x1^2+y1^2-x2^2-y2^2)
w=x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2)
t1=x1*(x2^2+y2^2-x3^2-y3^2)
t2=x2*(x3^2+y3^2-x1^2-y1^2)
t3=x3*(x1^2+y1^2-x2^2-y2^2)
x0=-1/2*(z1+z2+z3)/w
y0=1/2*(t1+t2+t3)/w
R1=sqrt((x1-x0)^2+(y1-y0)^2)
R2=sqrt((x2-x0)^2+(y2-y0)^2)
R3=sqrt((x3-x0)^2+(y3-y0)^2)
print
print "x1 = ";:print x1;
print "   y1 = ";:print y1
print "x2 = ";:print x2;
print "   y2 = ";:print y2
print "x3 = ";::print x3;
print "   y3 = ";:print y3
print
print "R1 = ";:print R1 using "###.##########";
print "    ";:print R1-5*sqrt(13)/3
print "R2 = ";:print R2 using "###.##########";
print "    ";:print R2-5*sqrt(13)/3
print "R3 = ";:print R3 using "###.##########";
print "    ";:print R3-5*sqrt(13)/3
print
print "x0 = ";:print x0;
print "   y0 = ";:print y0

Результаты расчетов показаны в Иллюстрации справа. Прога для второго варианта (при другой нумерации трёх точек на окружности) той же задачи:

rem Найти радиус окр-ти R
x1=0:y1=0:x2=-6:y2=8:x3=-6:y3=4
z1=y1*(x2^2+y2^2-x3^2-y3^2)
z2=y2*(x3^2+y3^2-x1^2-y1^2)
z3=y3*(x1^2+y1^2-x2^2-y2^2)
w=x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2)
t1=x1*(x2^2+y2^2-x3^2-y3^2)
t2=x2*(x3^2+y3^2-x1^2-y1^2)
t3=x3*(x1^2+y1^2-x2^2-y2^2)
x0=-1/2*(z1+z2+z3)/w
y0=1/2*(t1+t2+t3)/w
R1=sqrt((x1-x0)^2+(y1-y0)^2)
R2=sqrt((x2-x0)^2+(y2-y0)^2)
R3=sqrt((x3-x0)^2+(y3-y0)^2)
print
print "x1 = ";:print x1;
print "   y1 = ";:print y1
print "x2 = ";:print x2;
print "   y2 = ";:print y2
print "x3 = ";:print x3;
print "   y3 = ";:print y3
print
print "R1 = ";:print R1 using "###.##########";
print "    ";:print R1-5*sqrt(13)/3
print "R2 = ";:print R2 using "###.##########";
print "    ";:print R2-5*sqrt(13)/3
print "R3 = ";:print R3 using "###.##########";
print "    ";:print R3-5*sqrt(13)/3
print
print "x0 = ";:print x0;
print "   y0 = ";:print y0

Видно, что радиусы совпадают с большой точностью. Значение R=6.0092521258 исследовал в Вольфраме Альфа и была выдана формула R=5*sqrt(13)/3. Позже я убедился, что решение это - абсолютно точное.

Теперь появилось желание посмотреть уже геометрическое решение задачи. Но увы! Ссылку я вовремя не скопировал и теперь никак не могу найти видео в ютубе. Но уверен, что задача эта всплывет. Тогда можно будет сравнить мое решение с очень уж заумным.

13 сентября 2023 г.