08-22-2022, 03:57 PM
(08-22-2022, 03:49 PM)Pete Wrote: Hey, I did better than Mark (bplus), because I recognized one word... Damit. Well damn it, I never knew that was a German word!
Well my mad math skills are 40 years behind me, so that example is lost on me in present time, damit.
Pete
You enjoy math: It could be this formula conversion (photo), but I'm not sure.
Maybe I'll try to implement this in Basic.
Do you know what "gift" means in German?
Code: (Select All)
void effektivZins( double nominal_zins, double kurs, double p_annu, int t_frei )
{
int x, tz;
double AZ, Co, q, t, n;
double p, pi, g, r, rl;
double fk1, fk2, fg1, fg2, pa;
double pd1, pd2, qi1, qi2;
double C1, C2, dy;
char puffer[64]; //AZ=Abschluázahlung
//Co=Ausgabekurs
//p=Nominalzins
//pi=Effektivzins
//q=Aufzinsfaktor, q=1+i
//fg=nachsch. Rentenbarwertfaktor
//fk, fk2=Hilfsvariablen
//r=Laufzeit
//g=ganzzahliger Teil der Laufzeit
//rl=restl. Laufzeit
//t=Tilgungssatz
//n=g+1
//pa=Prozentannuit„t
//pd1,2 qi1,2 C1,2 dy=Hilfsvariable
printf( "\nDie Effektivverzinsung der Annuitaetenschuld mit %d tilgungsfreien ", t_frei);
printf( "Jahr(en) \nbetraegt : " );
p = nominal_zins;
pa = p_annu;
tz = t_frei;
Co = kurs;
//------------------------------------
q = 1 + (p / 100);
t = pa - p; //Tilgungssatz
//Laufzeit (6-31) S.228
r = (log(pa) - log(t)) / log(q);
x = 1;
//... und ganzzahlige Tilgungsdauer ermitteln
rl = fmod(r, x);
g = r - rl;
//** Effektivzins bei P.-annuität mit tilgungsfreier Zeit S.232(77) **
//====================================================================
//Abschlußzahlung (6-30) und S.228
AZ = ((100 * pow(q, g)) - (pa * ((pow(q, g) - 1) / (q - 1)))) * q;
//Laufzeit mit Abschluázahlung S.230 unten
n = g + 1;
//Effektivzins nach Nährungsformel (6-7) "Faustformel"
pi = ((p + ((100 - Co) / n)) / Co) * 100;
x = 1;
//Zwei Zinsätze fr C1 und C2 ermitteln
dy = fmod(pi, x); //Nachkommarest ermitteln
//Bandbreite der Zinss„tze z.B.: pi=7.2 --> pd1=7.0 -- pd2=7.5
if ( dy > 0.5 )
{
pd1 = pi - (dy / 2);
pd2 = pi + (dy / 2);
}
else
{
pd1 = pi - dy;
pd2 = pi + dy + 0.1;
}
//Effekt.- Aufzinsfaktoren der beiden Zinss„tze fr C1, C2 bestimmen
qi1 = 1 + (pd1 / 100);
qi2 = 1 + (pd2 / 100);
//** Jeweils 2 (fk,fg) und nach! den Eff.-aufzinsfaktoren **
//'fk' (6-32), wie nachschüssiger Rentenbarwertfaktor (6-18) S.215
fk1 = (1 / pow(qi1, tz)) * ((pow(qi1, tz) - 1) / (qi1 - 1));
fk2 = (1 / pow(qi2, tz)) * ((pow(qi2, tz) - 1) / (qi2 - 1));
//'fg'(6-32), wie oben
fg1 = (1 / pow(qi1, g)) * ((pow(qi1, g) - 1) / (qi1 - 1));
fg2 = (1 / pow(qi2, g)) * ((pow(qi2, g) - 1) / (qi2 - 1));
//Ausgabekurs (6-34) S.230, fr beide Zinss„tze
C1 = p * fk1 + ((pa * fg1 + (AZ * (1 / pow(qi1, n)))) * (1 / pow(qi1, tz)));
C2 = p * fk2 + ((pa * fg2 + (AZ * (1 / pow(qi2, n)))) * (1 / pow(qi2, tz)));
//Eff.-zins Nährungslösung durch lineare Interpolation (Kopie S.642)
pi = pd1 + ((pd2 - pd1) * ((C1 - Co) / (C1 - C2)));
printf( "%7.5f", pi);
printf( " %%\n" );
//getch();
}