Распределение Александрова
https://www.conceptdraw.com/solution-park/QLT_TOOL_7BASIC
наугад взял гистограмму и довольно точно вычислил проценты над каждым столбиком. На основании этих данных сформировал файл "wind.txt":
1 0.027
2 0.052
........
20 0.002
Далее методом Монте-Карло нашел три оптимальных параметра распределения Александрова. Это "a","b","c". Программа на Yabasic совсем детская:
open #1,"Documents/wind.txt","r"
dim x(100),y(100),f(100)
z=.001
for i=1 to 20
input #1 x(i),y(i)
print x(i),y(i)
next i
a0=-1:b0=1:c0=1
s1=10^100
nn=300000000
for j=1 to nn
a=a0*(1+z*(ran()-.5))
b=b0*(1+z*(ran()-.5))
c=c0*(1+z*(ran()-.5))
s=0
for i=1 to 20
x=x(i)
f(i)=-a*exp(a*x^(b*x^c))*x^(b*x^c)*
(b*x^(c-1)+b*c*x^(c-1)*log(x))
s=s+(y(i)-f(i))^2
next i
if s<=s1 then
print a,b,c,s
s1=s
a0=a:b0=b:c0=c
fi
next j
После трёхсот миллионов циклов были рассчитаны оптимальные результаты:
a=-0.0135297 ; b=2.00806 ; c=0.000080081
Сумма квадратов отклонений по двадцати точкам равна 0.00000434464. Это превосходный результат для натурных наблюдений. Если построить график функции f , то совпадение будет просто безукоризненным!
На зеленоватом фоне в правой верхней части рисунка - самый конец процесса вычислений. Последняя строка - и есть решение задачи! Очень маленькое число в конце есть сумма квадратов отклонений расчетных значений f от заданных y(i) в файле "wind.txt".
11 апреля 2021 г.
Свидетельство о публикации №221041100827