2016-07-31 3 views
0

J'ai une formule mathématique et j'ai eu du mal à comprendre et à convertir en code Java.Difficulté à comprendre une formule de mathématiques

[Image ci-joint la formule que je dois résoudre]

enter image description here

J'ai écrit un code et il n'aide pas beaucoup. Dans la formule I ont une valeur C et P et la nécessité de trouver N.

Voici le code que je l'ai utilisé

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)))); 
    } 

J'ai une formule Excel correspondant mais je ne sais pas comment convertir en 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 

Je travaille sur ce autour d'une semaine et pas en mesure de l'obtenir resolved.It devrait être d'une grande aide si un corps peut résoudre ce problème. Merci d'avance.

Vivek

+0

On ne sait pas ce que vous voulez. Votre code de module Java prend 'c', ' n' et 'p' mais ne renvoie rien. Avec votre code Excel VBA, il est totalement difficile de savoir quelles seront les différentes variables. Peut-être que 'intJ' sera' i', donc 'intC' sera' c' (10). Le 'intI' est' n' en boucle de 1 à 10000, mais pourquoi? Le 'intLTPD' (' B1') peut être 'p'. Alors pourquoi ne pas nommer les variables de manière significative selon la formule? Et qu'est-ce que 'intCL' (' B2'), comment est-il lié à 'intCalcF', qui est le résultat de la formule donnée? Et le code VBA écrit 10 lignes de résultats. Que fera exactement le code java? –

+0

Alors s'il vous plaît modifier votre question et fournir plus d'informations si vous voulez obtenir des réponses. Btw .: Le terme 'n choisissez i' dans votre formule est [Coefficient binomial] (https://en.wikipedia.org/wiki/Byomial_coefficient). C'est ce que calcule [COMBIN] d'Excel (https://support.office.com/en-us/article/COMBIN-function-12a3f276-0a21-423a-8de6-06990aaf638a). –

+0

Btw .: [BINOM.DIST] (https://support.office.com/en-us/article/BINOM-DIST-function-c5ae37b6-f39c-4be2-94c2-509a1480770c) - [Java] (http://lacinato.com/cm/software/othersoft/binomdist) –

Répondre

0

La façon dont votre œuvre votre binomiale semble se tromper. Selon votre formule, le code devrait plutôt être:

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)))); 
    } 
} 

Je n'ai pas encore testé le code.