Задача Ивана Математика Ч. 1

Петр Земсков в знаменательный день Числа ПИ озвучил задачу украинского подписчика с ником Иван Математик. Ссылка:
https://www.youtube.com/watch?v=edCszVTWtXQ&t=257s

Опять страшно частный случай и найти надо было всего лишь площадь квадрата.
Решение долгое, нудное и для практики малозначимое. Поэтому я значительно шире все рассмотрел.
Итак, имеется квадрат ABCD с неизвестной стороной k. Внутри него находится такая точка M(x,y) при которой AM=a; BM=b и CM=c. В исполнении Земскова заданы a=1, b=2 и c=3. Я попытался в общем виде решить эту задачу и получить нужную формулу для площади S=k^2. Но это оказалось слишком сложным желанием.
Тогда пришла идея найти простое численное решение задачи и в результате получить координаты точки M, значения k и S. Для этого выбрал метод Монте Карло. Программу на языке Yabasic сверстал буквально за пять с половиной минут. Вот ее текст:

a=1:b=2:c=3
x0=1:y0=1:k0=3
s1=10^10:z=0.02
for i=1 to 5000000
x=x0+z*(ran()-.5)
y=y0+z*(ran()-.5)
k=k0+z*(ran()-.5)
d1=abs(a^2-x^2-y^2)
d2=abs(b^2-x^2-(k-y)^2)
d3=abs(c^2-(k-x)^2-(k-y)^2)
s=d1+d2+d3
if s<s1 then
print x,y,k,k^2,s
x0=x:y0=y:k0=k:s1=s
xk=x:yk=y:kk=k
if s<0.002 then z= 0.0001:fi
if s<0.00001 then z= 0.000001:fi
if s<0.0000001 then
z= 0.0000000001:fi
fi
next i
a=sqrt(xk^2+yk^2)
b=sqrt(xk^2+(kk-yk)^2)
c=sqrt((kk-xk)^2+(kk-yk)^2)
S=kk^2
print a,b,c,xk,yk,kk,S

Это как раз то решение, которое дал Земсков.
Ответ получился тот же: S=5+2*sqrt(2), только численный и с большой точностью (двенадцать знаков после запятой!).

Координаты точки M(0.50545 , 0.862856), сторона квадрата k = 2.79793.

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

Но с таким же успехом можно численно решать используя Вольфрам Альфа. Это даже лучше, так как он дает и ответы в радикалах. Так задача Земскова записывается в окошке сервиса:

solve(1^2=x^2+y^2&&
2^2=x^2+(k-y)^2&&
3^2=(k-x)^2+(k-y)^2,[x,y,k])

( писать одной строкой!). В самом конце рисунка в рамочке все искомые параметры наглядно показаны.

Именно так пора обучать школьников и студентов для быстрого получения информации при рассмотрении любой, даже невероятно сложной задачи!

31 августа 2022 г.


Рецензии
"Это оказалось слишком сложным желанием"? Правда?
Если бы вы просто вспомнили 6 класс, или когда там Пифагора проходят и тупо повторили за Земсковым его рассуждения, подставив вместо 2, 3, 1 соответственно a, b, c, то получили бы 2*S = b^2 + (sqrt(2)*a + c)^2. За полторы минуты.
Какой Монте-Карло? Зачем здесь yabasic?

Александр Баранов 8   01.09.2022 12:34     Заявить о нарушении
Александр! Для очень частного случая a=1,b=2,c=3 всего Вами отмеченного и не нужно. Но для общего решения задачи совсем не помешает. Рассмотрите, например, вариант a=4, b=5. c=7.

Георгий Александров   01.09.2022 15:38   Заявить о нарушении
Тут нужно сделать замечание. Если мы берёмся решать задачу в общем виде, то нужно отслеживать границы применения формул. Решение Земскова предполагает поворот квадрата на 90 градусов, но в сторону, которая определена значениями параметров. Если мы закрутим квадрат относительно другой вершины, то и формулы получатся другие, решение ведь несимметрично.
На практике это значит, что b >= a >= c. Т.е. применять формулу надо так: пусть даны расстояния (ваш пример) 4, 5, 7.
Учитывая неравенство выше, a = 5, b = 7, c= 4.
Соответственно, площадь квадрата равна 115\2 + 20*sqrt(2).

Александр Баранов 8   01.09.2022 17:18   Заявить о нарушении
Хорошо, строим Ваш Вариант. Если наклонная черта в Вашей формуле - это деление, то площадь примерно равна S=85,78. Тогда сторона k=9.26. Так вот, если построить квадрат 9,26 х 9,26 и с вершины А - окружность радиусом 4, с вершины В - окружность радиусом 5, а с вершины - радиусом 7, то не получим необходимую точку М(x,y).
Мое решение таким недостатком не страдает. У меня все четко. Ищите у себя ошибку!

Георгий Александров   02.09.2022 10:18   Заявить о нарушении