Трудность понять одну формулу математики

У меня есть математическая формула, и мне было трудно это понять, и я преобразовал ее в код Java.

[Прикрепленное изображение - формула, которую я должен решить]

Я написал некоторый код, и он не очень помогает. В формуле у меня есть значения для C и P и нужно найти N.

Ниже приведен код, который я использовал

public static Double sigmaSum(int c, int n, Double p){
    Double sum = 0.00;
    for(int i=0; i<c; i++){
    for(int j=i; j<n;j++){
    sum += ((Math.pow(p, j)) * (Math.pow((1-p), (n-j))));
   }

У меня есть соответствующая формула Excel, но я не знаю, как преобразовать ее в Java.

Option Explicit
Dim intLTPD, intCL, intC, intCalcF, intK, intComboNum, intComboDen1, intI, intJ, intComboDen2, intCombo, intL As Integer
Dim lngSampleSize As Long

Sub macBinSampPlan()
'
intLTPD = (Range("B1") / 100)
intCL = Range("B2") / 100
'intC = Int(Range("B3"))
Cells.Range("A6").Select

intCombo = 0
intCalcF = 0
intI = 0
intJ = 0

For intC = 0 To 10
    For intI = 1 To 10000
        For intJ = 0 To intC
            If intI >= intJ Then
                intCombo = Application.WorksheetFunction.Combin(intI, intJ)
                intCalcF = intCalcF + (intCombo * (Application.WorksheetFunction.Power(intLTPD, intJ)) * (Application.WorksheetFunction.Power((1 - intLTPD), (intI - intJ))))
            Else
                Exit For
            End If
        Next intJ
        If (intCalcF - (1 - intCL)) / intCalcF <= intLTPD Then
            lngSampleSize = intI
            Exit For
        Else
            intCombo = 0
            intCalcF = 0
        End If
    Next intI
    ActiveCell = intC
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell = lngSampleSize + 1
    ActiveCell.Offset(1, -1).Range("A1").Select
Next intC

End Sub

Я работаю над этим около недели и не могу решить его. Это должно быть очень полезно, если какой-то орган может решить эту проблему. Заранее спасибо.

Вивек

1 ответ

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

public static Double sigmaSum(int c, int n, Double p){
    Double sum = 0.00;
    for(int i=0; i<c; i++){
    sum += ((CombinatoricsUtils.binomialCoefficientDouble(n,i)) * (Math.pow(p, i)) * (Math.pow((1-p), (n-i))));
   }
}

Я еще не проверял код.

Другие вопросы по тегам