Мозговой штурм Одиозного Деда. Ч 8

После длительного осмысления задачи, её удалось существенно упростить. Оказалось, что в методе Монте Карло можно и нужно случайным образом изменять только один параметр. Например, боковые стороны равнобедренного треугольника "с". Это приблизительно на два порядка позволило уменьшить время счёта и при этом на один порядок повысить точность. Алгоритм показан на рисунке. Сама программа выглядит более изящно:

rem РЕШЕНИЕ ЗАДАЧИ  ЗЕМСКОГО
m=12:n=35:k=37
for B0=20 to 70 step 5
s=10^10:z1=0.1
B=B0/180*pi
c0=k
for i=1 to 1000000
c=c0+(ran()-0.5)*z1
b=2*c*sin(B/2)
xM=(b^2+m^2-n^2)/(2*b)
yM=sqrt(m^2-xM^2)
m1=sqrt(xM^2+yM^2)
n1=sqrt(yM^2+(b-xM)^2)
k1=sqrt((c*cos(B/2)-yM)^2+(b/2-xM)^2)
f=abs(m-m1)+abs(n-n1)+abs(k-k1)
if f<s then
mk=m1:nk=n1:kk=k1:ck=c:bk=b:sk=s
s=f:c0=c
fi
if s<1/10^5 then z1=1/10^5:fi
if s<1/10^8 then z1=1/10^8:fi
next i
x=180/pi*acos((mk^2+nk^2-bk^2)/(2*mk*nk))
y=180/pi*acos((mk^2+kk^2-ck^2)/(2*mk*kk))
z=360-x-y
print B0,mk,nk,kk,ck,bk,x,y,z,sk
next B0

И вот что меня осенило. Петр Земсков применил метод поворота на 60 градусов лишь к равностороннему треугольнику. Использовал свойство, что полученный в результате таких построений оказался пифагоровым (со сторонами 3,4,5). Поэтому смело можно предположить, что значение угла "х" всегда будет равен 150 град, если отрезки m,n,k - пифагоровы числа. Я решил проверить это для чисел, что в распечатанной проге, а именно 12, 35, 37. И ответ действительно оказался 150 град. Далее, какие бы пифагоровы тройки не вставлял, всегда получал этот результат.

14 октября 2022 г.


Рецензии