Autor | Zpráva | ||
---|---|---|---|
Jan Valenta Profil * |
Nevíte, jak naprogramovat kalkulačku, která mi spočítá RPSN ? Vzorec je moc složitý a snažím se, ale pořád mi to nejde. Vstupní data jsou: Výše úvěru, výše splátky a počet splátek a výstupní je RPSN. Máte prosím někdo hotový script, přiblížení nebo dobrou radu ?
|
||
Petr ZZZ Profil |
#2 · Zasláno: 18. 1. 2011, 18:53:55
Co to je, to RPSN? Roční procentní sazba nákladů?
|
||
Jan Valenta Profil * |
#3 · Zasláno: 18. 1. 2011, 19:41:39
Přesně tak http://cs.wikipedia.org/wiki/RPSN
|
||
ninja Profil |
#4 · Zasláno: 18. 1. 2011, 23:46:25
Uvedená data nejsou dostatečná. Je potřeba znát ještě dobu splácení, respektive periodicitu splátek.
|
||
Alphard Profil |
#5 · Zasláno: 19. 1. 2011, 00:21:10 · Upravil/a: Alphard
[#4] ninja
Za předpokladu měsíčních splátek se bez těchto údajů obejdeme. A aspoň to bude geometrická řada :-) Jan Valenta: V rychlosti jsem naťukal tohle. Je to upravené z wikipedie pro jednodušší případ. Beru finanční měsíc jako 30 dní. Zdůrazňuji, že nemám vzdělání ve finančnictví, jen jsem upravil ten vzorec z wikipedie. <?php class RPSN { public $A, $B, $n; public function setLoan($A) { $this->A = $A; } public function setRepayment($B) { $this->B = $B; } public function setNumRepayment($n) { $this->n = $n; } public function getValue($in) { $A = $this->A; $B = $this->B; $n = $this->n; return $A - ($B/pow(1+$in, 1/12)*((pow(1+$in, -1*$n/12)-1)/(pow(1+$in, -1/12)-1))); } public function calculate() { $l = 0.000001; $r = 2; $cOld = -1; for ($i = 0; $i <= 50; $i++) { $c = ($l + $r)/2; $lv = $this->getValue($l); $rv = $this->getValue($r); $cv = $this->getValue($c); if ($lv < 0 && $cv < 0 && $rv > 0) { $l = $c; } elseif ($lv < 0 && $cv > 0 && $rv > 0) { $r = $c; } else { throw new Exception("Invalid interval"); } if (round($c, 7) == round($cOld, 7)) { return round($c, 7); } else { $cOld = $c; } } throw new Exception("Can't solve"); } } $bs = new RPSN; $bs->setLoan(50000); // půjčka $bs->setRepayment(949); // měsíční splátka $bs->setNumRepayment(84); // počet měsíčních splátek echo $bs->calculate()*100, " %"; |
||
Jan Valenta Profil * |
#6 · Zasláno: 19. 1. 2011, 11:13:31
Mockrát Vám děkuji !
|
||
Joker Profil |
#7 · Zasláno: 19. 1. 2011, 11:31:42
Alphard:
„Za předpokladu měsíčních splátek se bez těchto údajů obejdeme.“ Za předpokladu měsíčních splátek známe periodicitu splácení :-D Jan Valenta: Připomínám, že do RPSN se nepočítají jen splátky úvěru, ale i všechny další náklady na úvěr (třeba poplatek za uzavření smlouvy). |
||
Alphard Profil |
#8 · Zasláno: 19. 1. 2011, 11:36:49
Joker:
„Za předpokladu měsíčních splátek známe periodicitu splácení :-D“ No dobře, mohl jsem tam napsat předpokládejme měsíční splátky. Také jsem mohl přesně spočítat počet iterací a první pravá mez je zřejmě zbytečně vysoká, jestli jsou ještě nějaké připomínky :-). Je to jen rychlý nástřel řešení. |
||
Jan Valenta Profil * |
#9 · Zasláno: 19. 1. 2011, 14:02:48
Já bych tohle neudělal ani za měsíc a objekty se teprve začínám učit, ale je to dobrá věc :) .. Časem zahrnu i další poplatky, zatím mi to postačí obecně.
|
||
Jan Valenta Profil * |
#10 · Zasláno: 19. 1. 2011, 15:36:46
Mohu se ještě prosím zeptat, kde mohu štelovat s intervaly ? Počítá mi to jen do 200 % RPNS, poté chyba.
|
||
Jan Valenta Profil * |
#11 · Zasláno: 19. 1. 2011, 15:39:12
Už to mám :)
|
||
Petr ZZZ Profil |
#12 · Zasláno: 19. 1. 2011, 22:29:28
Jan Valenta:
„Už to mám :)“ Co? Jak? Čtenáře zajímá řešení! |
||
Alphard Profil |
#13 · Zasláno: 19. 1. 2011, 22:50:35
Petr ZZZ:
„Čtenáře zajímá řešení!“ Ani jsem to nekomentoval :-) Snad každého programátora po přečtení kódu napadne, že defaultní pravá mez intervalu je nastavena na 34. řádku. |
||
Časová prodleva: 2 roky
|
|||
mikexc Profil * |
#14 · Zasláno: 19. 9. 2012, 12:28:24
Dobrý den,
Vím, že je toto téma již delší dobu neaktivní, avšak nechci zakládat zbytečně nové téma. Koukám se na výše uvedený kód na výpočet RPSN, avšak stále nemohu přijít na to, jak do tohoto vzorce zakomponovat také poplatek za zřízení půjčky. Mohl by prosím někdo poradit, případně mě nasměrovat? Děkuji |
||
Časová prodleva: 3 měsíce
|
|||
Alphard Profil |
#15 · Zasláno: 6. 12. 2012, 17:07:49
mikexc:
Je to stále aktuální? Jestli se k tomu dostanu, tak tu třídu upravím. |
||
Časová prodleva: 6 měsíců
|
|||
Palo42 Profil * |
#16 · Zasláno: 29. 5. 2013, 13:39:19
Dobrý den, bylo by možné třídu upravit pro týdenní splátky. Díky
|
||
Časová prodleva: 12 let
|
0