2016-07-31 17 views
0

Ich habe eine mathematische Formel und hatte eine harte Zeit, dies zu verstehen und in Java-Code konvertiert.Schwierigkeit, eine mathematische Formel zu verstehen

[Befestigt Bild ist die Formel I zu lösen haben]

enter image description here

ich einige Code geschrieben haben, und es ist nicht viel helfen. In der Formel I-Wert für C und P und N.

Sie den Code unten finden müssen, ist die ich verwendet habe

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

ich eine entsprechende Excel-Formel haben, aber ich weiß nicht, wie es zu konvertieren in 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 

ich auf diese um eine Woche arbeite und nicht in der Lage, es zu bekommen resolved.It eine große Hilfe sein sollte, wenn einige Körper diese lösen können. Danke im Voraus.

Vivek

+0

Es ist nicht klar, was Sie wollen. Ihr Java-Modul-Code nimmt 'c', ' n' und 'p' an, gibt aber nichts zurück. Mit Ihrem Excel-VBA-Code ist völlig unklar, was die verschiedenen Variablen sein sollen. Vielleicht soll "intJ" "i" sein, also soll "intC" "c" (10) sein. Die 'intI' ist 'n' Looping von 1 bis 10000, aber warum? Der "intLTPD" ("B1") darf "p" sein. Warum also nicht die Variablen sinnvoll nach der Formel benennen? Und was ist 'intCL' (' B2'), wie verhält es sich zu 'intCalcF', was das Ergebnis der gegebenen Formel ist? Und der VBA-Code schreibt 10 Ergebniszeilen. Was genau soll der Java-Code tun? –

+0

Bitte bearbeiten Sie Ihre Frage und geben Sie weitere Informationen, wenn Sie Antworten erhalten möchten. Btw .: Der Begriff 'n wähle i' in deiner Formel ist [Binomialkoeffizient] (https://en.wikipedia.org/wiki/Binomial_coefficient). Es ist, was Excel [COMBIN] (https://support.office.com/en-us/article/COMBIN-function-12a3f276-0a21-423a-8de6-06990aaf638a) berechnet. –

+0

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

Antwort

0

Die Art und Weise Ihre Ihre binomischen zu implementieren scheint falsch zu sein. Entsprechend Ihrer Formel sollte der Code eher sein:

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

Ich habe den Code noch nicht getestet.

Verwandte Themen