Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: greenlinuxguru 23. 10. 2023, 11:51:59
-
Mám následující problém, uvedu příklad, mám naspořeno 10.000.000 Kč, každý rok se mi částka očištěná o inflaci navýší o 4% (výnos 8%, inflace 4%), a každý rok se mi navýší vyplácená renta o inflaci, tedy o 4%, pokud budu chtít celou částku vybrat za 20 let, kolik si můžu vyplácet rentu (počáteční částka, tedy to první číslo bez inflace)?
Chtěl bych na to udělat webovou kalkulačku, ale zaboha nevím, jak na tohle vymyslet vzoreček či způsob výpočtu, neporadil by někdo?
Pro sebe to jsem schopnej manuálně odhadnout v excelu dosazováním čísel, ale musí existovat elegantnější způsob, veskrze to vypadá takto
nasporeno = 10.000.000
urok = 1.04
inflace = 1.04
renta = ?
sum 1^20 {
nasporeno = nasporeno x urok - renta x inflace
}
renta?
potřeboval bych to vypočítat v javascriptu
-
Pro výpočet takového problému můžete použít iterativní metodu, která bude postupně upravovat výši renty tak, aby po 20 letech bylo na spořícím účtu 0 Kč. Následující JavaScriptový kód by vám mohl pomoci s tímto výpočtem:
```javascript
function vypocetRenty(nasporeno, urok, inflace, pocetLet) {
let renta = 0;
for (let i = 0; i < pocetLet; i++) {
naspareno *= urok; // Zvýšíme úspory o úrok
renta *= inflace; // Zvýšíme rentu o inflaci
naspareno -= renta; // Snížíme úspory o rentu
if (naspareno < 0) {
// Pokud jsou úspory záporné, znamená to, že renta byla příliš vysoká
// Musíme snížit rentu a začít znovu
renta = 0;
naspareno = 10000000; // Nastavíme úspory na původní hodnotu
i = 0; // Začneme znovu od začátku
}
renta += 10000; // Zvýšíme rentu o 10 000 Kč
}
return renta;
}
const naspareno = 10000000;
const urok = 1.04;
const inflace = 1.04;
const pocetLet = 20;
const renta = vypocetRenty(nasporeno, urok, inflace, pocetLet);
console.log(`Počáteční výplata: ${renta.toFixed(2)} Kč`);
```
Tento kód postupně zvyšuje rentu o 10 000 Kč a kontroluje, zda jsou úspory po 20 letech kladné. Pokud nejsou, znamená to, že renta byla příliš vysoká, a začne znovu od začátku s nižší rentou. Na konci vám vrátí počáteční částku renty.
Tento kód je jednoduchý a může vám pomoci najít počáteční výplatu. Můžete také hrát s různými počátečními hodnotami renty nebo výšími zvyšování renty, abyste dosáhli požadovaného výsledku.
-
To je z ChatGPT, ne? ;D to je taková metoda hrubou silou, přeci musí existovat něco optimálnějšího
-
Pokud takto "iterativně", tak alespoň bisekcí (půlením intervalů). Funkce renta -> cílová částka je jistě monotónní (zbytek je během procesu zafixován, tak jak zadání chápu)
-
Pro výpočet takového problému můžete použít iterativní metodu, která bude postupně upravovat výši renty tak, aby po 20 letech bylo na spořícím účtu 0 Kč. Následující JavaScriptový kód by vám mohl pomoci s tímto výpočtem:
nicméně děkuji, chatgpt 3.5 vyjelo nesmysl, tohle je asi placená verze.
Když tak nad tím uvažuji, tak pokud řekneme pojedu po tisícovce měsíčně v rentě, tak to většinou tak do 100 iterací zvládnu, čistě prakticky i když je to suboptimální to asi pro většinu normálních případů nebude výpočetně moc náročné.
-
každý rok se mi částka očištěná o inflaci navýší o 4% (výnos 8%, inflace 4%)
Preco? Peniaze sice budu mat mensiu hodnotu, ale nominalna bude rast 8% kazdy rok. Inflacia je zohladnena v tej rente, to by mohlo stacit, nie?
Len sa pytam, nie som ekonom :)
-
Pozor na dva rozne casove ramce. Uroky ratas na roky, kdezto rentu ratas na mesiace. Tym padom treba tie 4, resp 8% rozlozit na mesiace (tak aby ich spolocne nasobky dali tie 1,04 alebo 1,08), alebo upravit odpocitavanie renty tiez na roky.
Dalsi problem je kedy sa rataju prirastky. Ak (dajme tomu ze stale beries rentu mesacne a uroky ratas iba raz za rok), logickejsie (ale stale nie najspravnejsie) je priratat urok az na konci roka (lepsie ked pocas roka tie este nevybrane peniaze nieco zarobia ako mat nulu uz v 19tom roku).
Cely vypocet by mal ist otocit, tj zoberiem rentu ako X, a hladam hodnotu tohto X taku, ze 12*20*X ^ (1,04^20) = 10mega
Vzorec len tak narychlo nabuchany, treba ho upravit podla vstupnych podmienok, casovych okien, a idealne prerobit na sumu, pretoze potrebujes ratat prirastky z roznych pociatocnych hodnot. Toto je len orientacne
-
I kdybyste neznal lepší vzorec, tak je to přeci jenom 20 let, takže si na to můžete vytvořit vzorec, který bude mít 20 členů. (Předpokládám, že úroky se připisují jednou ročně k aktuálnímu stavu účtu, což tak asi nebude, ale není problém vzorec upravit podle toho, jak bude útočení reálně nastaveno.)
Když označíte R měsíční rentu na začátku, tak po prvním roce budete mít zůstatek:
(10000000 - (12 × R)) × 1,04
Po druhém roce budete mít zůstatek:
((10000000 - (12 × R)) × 1,04 - (12 × R × 1,04)) × 1,04
Takhle si tam postupně můžete dosadit 20 členů. Chcete, aby na konci zbyla nula, tj. celý ten výraz s dvaceti členy pak položíte roven nule, a z této rovnice o jedné neznámé vyjádříte R. Nebo možná už při tom připisování dalších a dalších členů přijdete na to pravidlo, jak to napsat jenom s jedním výskytem R a pak jen vyjádříte R.
-
btw, tu je nejaka kalkulacka, netestoval som ci to dava spravne vysledky:
https://www.360financialliteracy.org/Calculators/Savings-Distribution-Calculator
-
Podobny problem vcetne vizualizace stavu uspor behem vyberu renty umi, zda se, vyresit i https://roknula.cz/
-
Kanonem na vrabce (ale prijde mi, ze to ukazuje robustnost, kdybyste chtel neco fikanejsiho): pro kazdy mesic i: zustatek uspor je promenna z_i, vyplacena renta r_i. Zjevne z_0 = 10M, z_241=0. Dale z_{i+1} = (z_i - r_i)*urok_za_mesic (je-li urok pripisovan mesicne). Co presne chcete od r_i-ček je samozrejme na vas - klidne necht jsou vsechny r_i = R.
Takhle dostanete soustavu linearnich rovnic, a z ni si vasi oblibenou metodou vyjadrete R jako funkci od z_0 :-)
-
Mám následující problém, uvedu příklad, mám naspořeno 10.000.000 Kč, každý rok se mi částka očištěná o inflaci navýší o 4% (výnos 8%, inflace 4%), a každý rok se mi navýší vyplácená renta o inflaci, tedy o 4%, pokud budu chtít celou částku vybrat za 20 let, kolik si můžu vyplácet rentu (počáteční částka, tedy to první číslo bez inflace)?
Chtěl bych na to udělat webovou kalkulačku, ale zaboha nevím, jak na tohle vymyslet vzoreček či způsob výpočtu, neporadil by někdo?
Pro sebe to jsem schopnej manuálně odhadnout v excelu dosazováním čísel, ale musí existovat elegantnější způsob, veskrze to vypadá takto
nasporeno = 10.000.000
urok = 1.04
inflace = 1.04
renta = ?
sum 1^20 {
nasporeno = nasporeno x urok - renta x inflace
}
renta?
potřeboval bych to vypočítat v javascriptu
Toto sa nazýva "časová hodnota peňazí" a vie to počítať aj excel. Konkrétne tento príklad: =PMT(0,04;20;10000000;0) t.j. 4% efektívna úroková miera, počet období 20, 10M je súčasná hodnota, 0 je budúca hodnota. Výsledok je ročná renta, nie mesačná, keďže úročenie je ročné. Pre mesačné zadať mesačné úročenie a navýšiť počet období.
Pokiaľ chceš vedieť, ako to počíta excel, vygoogliť "časová hodnota peňazí" alebo "time value of money".
-
to umí imho aji calc https://wiki.documentfoundation.org/Documentation/Calc_Functions/PMT (https://wiki.documentfoundation.org/Documentation/Calc_Functions/PMT)
-
mesicni/rocni rozdil v penezich dava diferencialni/diferencni rovnici pro d_penize/dt a pak uz se jedna o numericke reseni s strelbou na cil, aby se splnila okrajova podminka na konci.