2016-08-09 5 views
2

Ich habe eine erweiterte PMT-Berechnung zu machen. Ich habe ein Beispiel gegeben, um durchzuarbeiten, und während der Code mir die richtige Antwort gibt, funktioniert es nur für dieses Beispiel.Advanced PMT Berechnung basiert in Javascript

Ich verwende den HP 17bII-Rechner, um meine Ergebnisse zu überprüfen, die identisch sein müssen.

Present Value:PV - -1000

Future Value:FV - 0

Zinssatz:IYR - 8

Frequenz:FREQ - 12

Anzahl der Zahlungen:N - 60

Advance-Nr. von Zahlungen:ADV - 3

Dies sind die Werte und das erwartete Ergebnis, das die PMT ist 19.88 ist.

In den Formeln für den Rechner die Funktion zwei weitere Funktionen aufruft, SPPV und USPV. Es sind unten ausgearbeitet.

PV = -10000;   //Present Value 
FV = 0;    //Future Value 
IYR = 8;    //Interest Rate 
FREQ = 12;    //Payment Frequency 
ADV = 3;    //No. of advance payments 
TERM = 57;    //Term of the Loan 
N = 57 + 3;   //The N is the sum of ADV + TERM 

SIR = IYR/FREQ;   //Interest rate for the SPPV var 
UIR = (IYR/100)/FREQ; //Interest rate for the USPV 

SPPV = (1/(Math.pow(((1 + SIR)/100), N))); 
USPV = (Math.pow((1 + UIR), TERM) - 1)/(UIR*Math.pow((1+UIR), TERM)); 

PMT = Math.abs((PV - FV * SPPV)/(USPV + ADV)); 

Jede Hilfe würde sehr geschätzt werden. Sorry, wenn dies ein Duplikat oder sonst ist, habe ich ausgiebig gesucht.

Vielen Dank!

+0

'es funktioniert nur für dieses Beispiel' - was bedeutet das? Bitte seien Sie spezifisch und fügen Sie alle Informationen hinzu, die Sie haben. Es ist nicht hilfreich, etwas einzugeben, das "nicht funktioniert". * Wie * funktioniert es nicht? Was war der Input, was war der Output und was wurde erwartet? Diese drei Informationen sind erforderlich, damit wir erkennen können, wo der Algorithmus fehlschlägt. – Mjh

Antwort

2

Ich fand heraus, wo ich falsch ging. Dies ist mein aktualisierter Code. Es war eine Frage des Umschaltens TERM in der USPV var für N. Ich fühle mich so albern.

 SIR = IYR/FREQ; 
     UIR = (IYR/100)/FREQ; 
     N = ADV + TERM; 

     SPPV = 1/(Math.pow((1 + (SIR/100)), N)); 
     USPV = (Math.pow(1 + UIR, TERM) - 1)/(UIR * (Math.pow(1 + UIR, TERM))); 

     PMT = Math.abs((PV - FV * SPPV)/(USPV + ADV)); 
+0

Das USPV ist hier genau das gleiche wie das in deiner Frage. Du hast (richtig, vermute ich) die Art und Weise ** SPPV ** berechnet. –