Kredit berechnen mit PHP
HeikoH
- php
Hallo an Alle,
ich möchte eine Kreditrate mit einem PHP Script berechnen, doch meine Mathekenntnisse habe mich verlassen.
Im Excel gibt es z.B. eine RMZ Funktion welche mir bei der Berechnung hilft.
Frage: Gibt es bei PHP eine ähnliche Funktion oder kann mir bei einer Formelerstellung jemand auf die Sprünge helfen?
Danke schön im Voraus
HeikoH
Hallo HeikoH,
was willst du genau? Eine Kredit- Monatsrate berechnen?
Also du gibst die Kreditsumme, Laufzeit, Zins, Kosten usw. an und willst dann als Antwort haben: Macht xxx EUR im Monat?
Hallo Kalle und alle anderen,
genauso, ich möchte eine Monatsrate berechnen:
$ks = 1000; // Kreditsumme in EUR
$lz = 36; // Laufzeit in Monate
$zs = 10; // Zins in Prozent
$monatlRate = " meine Frage der Formel"
So sollte es in etwa aussehen, nur leider sind meine Mathekenntnisse diesbezüglich begrenzt.
Viele Grüsse
HeikoH
Hello,
genauso, ich möchte eine Monatsrate berechnen:
$ks = 1000; // Kreditsumme in EUR
$lz = 36; // Laufzeit in Monate
$zs = 10; // Zins in Prozent$monatlRate = " meine Frage der Formel"
Man könnte da ja eine gute Iteration aufbauen.
Da wären dann aber noch mehr Rahmenbedingugnen erforderlich:
Mit vieviel Tagen wird das Jahr gerechnet?
Mit vieviel Tagen wird der Monat gerechnet?
Wann wird die erste Rate fällig?
Wann werden die Zinsen fällig?
Wann werden die Zinsen der Schuldsumme zugeschlagen?
Rechnet man da mit monatlicher Verzinsung?
Wird der jährlich effektive oder der nominelle Zinssatz angegeben?
Man kann mit ca. fünf bis zehn Iterationen zum Ziel kommen. Die Auflösung einr komplexen Formel hierfür würde wahrscheinlich mehr Rechenpower kosten.
Also angenommen,
Schuldsumme 10000
Zinssatz 14% jährlich nominal
Ratenzahl 36
Zinsen werden monatlich der Schuldsumme zugeschlagen
Monate werden alle mit 30 Tagen berechnet
Erste Rate nach dem ersten Monat
dann hat man
nach Monat
1 10000 + 0.14/12*10000 - Rate ==> 10000 * (1+0.14/12) - Rate
2 (10000 * (1+0.14/12) - Rate) * (1+0.14/12) - Rate
==> 10000 * (1+0.14/12)² - Rate*(2+0.14/12)
3 (10000 * (1+0.14/12)² - Rate*(2+0.14/12)) * (1+0.14/12) - Rate
==> 10000 * (1+0.14/12)³ - Rate*(3+0.14/12)
...
sehe ich das richtig?
Das kann man dann umkehren und daraus die Kapitalsumme abschätzen, die eigentlich zurückgeführt wird. Die benutz man dann zur Ermittlund der Einstiegsrate und lässt die Funktion wieder von vorne mit der originalen Auszahlungsssumme laufen. Je nachdem, ob man dann am Ende > 0, < 0 oder gar ==0 herausbekommt, mus man die Rate vergrößern, verkleinern oder abbrechen.
Man muss aber darauf achten, dass das Increment/Dekrement der Rate von einem Rechenversuch zum nächsten nicht kleiner 0.01 (kleinste Währungsstückelung) wird und monatlich darauf gerundet wird. Denn das tut die Bank auch. Insofern bringt eine Iteration ohnehin die wirklichkeitsgetreuere Lösung.
Hoffe jetzt, dass ich nicht selber einen Denkfehler drinstecken habe. Ist bei mir auch "verdamp lang her".
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Tom,
$ks = 1000; // Kreditsumme in EUR
$lz = 36; // Laufzeit in Monate
$zs = 10; // Zins in Prozent$monatlRate = " meine Frage der Formel"
nur diese Formel, mehr nicht.
Rechnet man da mit monatlicher Verzinsung?
Wird der jährlich effektive oder der nominelle Zinssatz angegeben?
Nicht so kompliziert.
Schuldsumme 10000
Zinssatz 14% jährlich nominal
Ratenzahl 36
Zinsen werden monatlich der Schuldsumme zugeschlagen
Monate werden alle mit 30 Tagen berechnet
Erste Rate nach dem ersten Monatdann hat man
nach Monat
1 10000 + 0.14/12*10000 - Rate ==> 10000 * (1+0.14/12) - Rate
2 (10000 * (1+0.14/12) - Rate) * (1+0.14/12) - Rate
==> 10000 * (1+0.14/12)² - Rate*(2+0.14/12)
3 (10000 * (1+0.14/12)² - Rate*(2+0.14/12)) * (1+0.14/12) - Rate
==> 10000 * (1+0.14/12)³ - Rate*(3+0.14/12)
...
Weiss nich, es muss 341,78 rauskommen (laut Excel).
Wieviel sind es bei Dir?
Heiko
Hello,
Hallo Tom,
$ks = 1000; // Kreditsumme in EUR
$lz = 36; // Laufzeit in Monate
$zs = 10; // Zins in Prozent$monatlRate = " meine Frage der Formel"
nur diese Formel, mehr nicht.
Wie meisnt Du das?
Du willst im Selfraum eine Formel "abstauben" und weigerst Dich sogar, die Funktionsweise zu verstehen? Da sehe ich wenig Chance für Dich, eine schnelle Antwort zu bekommen ;-)
Rechnet man da mit monatlicher Verzinsung?
Wird der jährlich effektive oder der nominelle Zinssatz angegeben?Nicht so kompliziert.
Nur so kompliziert. Viellicht kann man die Mathematik dabei etwas auffrischen. Unter anderem bin ich auch deshalb so gerne hier, weil es da Leute gibt, von ich sowas nochmal wieder lernen kann. Die Schule ist eben doch schon zu lange her.
Schuldsumme 10000
Zinssatz 14% jährlich nominal
Ratenzahl 36
Zinsen werden monatlich der Schuldsumme zugeschlagen
Monate werden alle mit 30 Tagen berechnet
Erste Rate nach dem ersten Monatdann hat man
nach Monat
1 10000 + 0.14/12*10000 - Rate ==> 10000 * (1+0.14/12) - Rate
2 (10000 * (1+0.14/12) - Rate) * (1+0.14/12) - Rate
==> 10000 * (1+0.14/12)² - Rate*(2+0.14/12)
3 (10000 * (1+0.14/12)² - Rate*(2+0.14/12)) * (1+0.14/12) - Rate
==> 10000 * (1+0.14/12)³ - Rate*(3+0.14/12)
...
Weiss nich, es muss 341,78 rauskommen (laut Excel).
Wieviel sind es bei Dir?
Ich habe die Iteration nicht fertig gemacht. Ich dachte, dass Du das mal versuchen willst?
Ich habe mich da oben wohl sowieso geirrt beim Ausmultiplizieren und wieder zusammenfassen, oder?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Tom,
Wie meisnt Du das?
Du willst im Selfraum eine Formel "abstauben" und weigerst Dich sogar, die Funktionsweise zu verstehen? Da sehe ich wenig Chance für Dich, eine schnelle Antwort zu bekommen ;-)
So soll es nicht sein. Ich verstehe es besser anhand eines Beispiels.
Nur so kompliziert. Viellicht kann man die Mathematik dabei etwas auffrischen. Unter anderem bin ich auch deshalb so gerne hier, weil es da Leute gibt, von ich sowas nochmal wieder lernen kann. Die Schule ist eben doch schon zu lange her.
So wie ich
Ich habe die Iteration nicht fertig gemacht. Ich dachte, dass Du das mal versuchen willst?
Dann muss ich von vorn anfangen. Der Befriff Iteration sagt mir nichts, ich habe nur die 10. Klasse gemacht (und das ist 20 Jahre her).
Ich habe mich da oben wohl sowieso geirrt beim Ausmultiplizieren und wieder zusammenfassen, oder?
Es war ein wenig viel für mich, aber ich danke Dir sehr.
Es würde mich freuen wenn Du mich ein wenig noch aufklärst.
Aber bitte mit einfachen Worten.
HeikoH
Hello,
Ich habe die Iteration nicht fertig gemacht. Ich dachte, dass Du das mal versuchen willst?
Dann muss ich von vorn anfangen. Der Befriff Iteration sagt mir nichts, ich habe nur die 10. Klasse gemacht (und das ist 20 Jahre her).
Iteration ist die möglichst konvergente Annäherung an den gesuchten Wert durch Proberechnung. Konvergenz ist das Gegenteil von Divergenz und bedeutet, dass man sich eben dem Wert mit jeder Proberechnung annähert und nicht das Gegenteil. Also ist "konvergente Annäherung" eigentlich doppelt gemoppelt.
Die Überlegung mit der Formel galt der Abschätzung des ersten Annahmewertes für die Rate. Man schätzt einfach das gesamte zurückzuführende Kapital ab und nimmt dann nur eine einfache teilung durch die Anzahl der zu lesitenden Raten vor, um die Rate zu ermitteln.
mit dieser Rate steigt man dann in die Berechnungsschleife nach der ersten Formel ein, und schaut, was nach der vorgegeben Anzahl von Raten übrig bleibt. Ist es zuviel, muss die Rate erhöht werden, ist das Ergebnis kleiner 0, muss sie eben verringert werden. Der Trick an einer guten Iteration ist eigentlich die Wahl eines möglichst passenden Startwertes UND einer schlau gewählten Formel für das Incrementes/Decrementes. Zweiteres ist eigentlich noch viel wichtiger.
Wenn also der Fehler am Ende 10% beträgt, also nach der 36. Rate noch 1000 übrig sind, dann könnte man jetzt die Rate auch um 10% erhöhen, was aber leicht voraussehbar zu einer Überzahlung (alsoe negativem Endwert führen wird).
Bei diesen Zinsaufgaben hat sich als Dekrement/Increment die Wurzel des Fehlers bewährt.
Die Abweichung beträgt 0.1 (10%) dann müsste die Rate also mit sqrt(1.1) verändet werden.
Wenn jetzt als nächstes ein negativer Betrag rauskommt, ist der Fehler z.B -0.05
Dann müsste die Rate ja verringert werden, und da bietet sich sqrt(0.95) als Faktor an.
Du müsstest also versuchen, dass nun in eine Funktion zu gießen, die den Restwert ermittelt und eine Funktion, die den Faktor für die neue Rate der nächsten Proberechnung bestimmt.
Und dann darauf achten, dass die Fehler eben immer kleiner werden, und nicht größer.
Pseudocode:
Kapital = 10000
Restwert = Kapitel
sooft Raten gezahlt werden sollen >>
Restwert = Restwert * (1+Zins_decimal/12) - Rate
<<Rückgabe Restwert
Faktor = sqrt(Kapital/Restwert);
Rate = Rate * Faktor;
und die obere Schleife nochmal.
Das ganze solange, wie der Betrag der Abweichung von einem zum nächsten Durchlauf immer
kleiner wird.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Tom,
noch einmal vielen Dank für Deine Erklärungen.
Es hat ein wenig gedauert bis ich mich melde, aber ich musste das erst mal verarbeiten (in meinem Kopf reinbekommen).
Jetzt verstehe ich auch warum es so kompliziert sein muss.
Aber die grösste Aufgabe steht noch bevor.
Das ganze in einem PHP Script verpacken (und immer fleissig mit dem Ergebniss aus Excel vergleichen)!
Sicherlich werden noch einige Fragen auftauchen, aber dazu wenn die Zeit reif ist.
Also noch mal vielen Dank
HeikoH