' Вычисляем logA_t для каждого t Dim logA() As Double ReDim logA(1 To K) Dim maxLog As Double For t = 1 To K Dim la As Double = logP(t) + A1(t) For i = 1 To L Dim widx As Long = W(i) Dim cval As Long = cw(t, widx) ' log( c / (Ct - c) ) = log(c) - log(Ct - c) la = la + (Log(cval) - Log(Ct(t) - cval)) Next i logA(t) = la If t = 1 Or la > maxLog Then maxLog = la Next t
' Нормализация через экспоненты Dim p(1 To K) As Double Dim sumP As Double = 0.0 For t = 1 To K p(t) = Exp(logA(t) - maxLog) sumP = sumP + p(t) Next t
' Нормировка так, чтобы сумма равнялась 1 For t = 1 To K p(t) = p(t) / sumP Next t
' Вывод: K чисел через пробел For t = 1 To K If t > 1 Then Print " "; Print p(t); Next t Print