| |
|
|
p.specht
| Die Formel für den n.ten Term einer Folge mit dem multiplikativ-additiv erzeugenden Bildungsgesetz x[n+1] = a*x[n] + b lautet:
Anmerkung: Könnte noch beschleunigt werden wegen der bekannten Zinseszins- Formel SUM(i=0..N: x^i ) = ( x^(N+1) - 1 ) / ( x - 1)
Damit kann man z.B. die Nettoverzinsung bei periodisch anfallenden Fixkosten berechnen. Der Wert a wäre dann der Zinssatz (wenn es noch Zinsen gäbe ) und b (als negativer Wert!!) die periodischen Kontoführungskosten.
WindowTitle "N.tes Folgeglied einer multiplikativ-additiven"+\
" Folge berechnen - Version 2.0":WindowStyle 24
declare x!,x1!,a!,sgn!,b!,sum!,i&,k&,n&
lup:
CLS rgb(200,200,200):font 2
print "\n Bildungsgesetz x[n+1] = a * x[n] + b"
print "\n Faktor a (nun auch negativ erlaubt) = ";:input a!:sgn!=(a!>0)-(a!<0)
print "\n Summand b = ";:input b!
print "\n 1. Glied der Folge x[1] = ";:input x1!
print "\n"
print " Bis zu welchem Folgeglied-Index berechnen? N = ";
input n&:n&=abs(n&):casenot n&:n&=17
print
x!=x1!
print " Index Iterativ: per Formel: "
print " --------------------------------------------------------"
whileloop n&:k&=&Loop
print " x[";k&;"]=",tab(15);format$("%g",x!),tab(40);
sum!=0
if sgn!<>0
whileloop 0,K&-2
sum!=sum!+if(sgn!>0,1,if(&Loop mod 2,-1,1))*abs(a!)^&loop
endwhile
print format$("%g",x1!*if(sgn!>0,1,if(&Loop mod 2,1,-1))*abs(a!)^(k&-1)+b!*sum!),
else
print format$("%g",b!),
endif
print
x!=x!*a!+b!
endwhile
waitinput
goto "lup"
|
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 30.05.2021 ▲ |
|
|
|
|
p.specht
| Hier mein Versuch, die obige Staffelrechnung umzukehren und aus Anfangsbetrag, Anzahl Perioden und Endbetrag auf den Faktor (Verzinsung) und das additive Glied (Prämie/Periodenspesen) zu schließen. Achtung, weitgehend ungeprüft und rein experimentell!
WindowTitle "Rückschluss von verzinseszinsten Beträgen und Kontospesen auf den Nominalzinssatz"
'(X) Experimentalwär 2019-05 by p.specht/Wien - ohne jede Gewähr!!!
WindowStyle 24:set("decimals",17):font 2
declare an!,a!,x1!,n&,xn!,b!,bn!
declare i&,j&,eps!,sahi!,siahi!,W$
eps!=val("1e-12")
x1!=1000
n&=20
xn!=4000
b!=-20
a!= 7 /100+1
lup:
CLS rgb(190+rnd(66),190+rnd(66),190+rnd(66))
print "\n Nominalzins [1] oder Spesen [2] oder beides [3, experimentell] berechnen?: ";
input w$
case w$="2":goto "lup2"
case w$="3":goto "lup3"
CLS rgb(190+rnd(66),190+rnd(66),190+rnd(66))
print "\n A N G A B E N : "
print "\n Anfangsbetrag: ";:input w$:case w$>"":x1!=val(w$)
print "\n Anzahl Perioden: ";:input w$:case w$>"":n&=val(w$)
print "\n Endbetrag: ";:input w$:case w$>"":xn!=val(w$)
print "\n Prämien minus Spesen je Periode: ";:input w$:case w$>"":b!=val(w$)
print
locate 1,1
print "\n A N G A B E N : "
print "\n Anfangsbetrag: ";format$("%g",x1!)
print "\n Anzahl Perioden: ";n&
print "\n Endbetrag: ";format$("%g",xn!)
print "\n Prämien minus Spesen je Periode: ";format$("%g",b!)
print
print "\n E R G E B N I S: \n"
print " Zinsfaktor: Spesendurchschnitt: \n\n"
Whileloop 1000
sahi!=SUM_ahi(n&-2,a!)
an!=a!-(x1!*a!^(n&-1)+b!*sahi! - xn!)/(x1!*(n&-1)*a!^(n&-2)+b!*SUM_iahi(n&-3,a!))
' bn!=b!-(x1!*a!^(n&-1)+b!*sahi! - xn!)/sahi!
locate %csrlin-1,2:print a!,b!
case (abs(an!-a!)<eps!) :break'and (abs(bn!-b!)<eps!)
a!=an!
' b!=bn!
case &Loop=1000:print "\n ERGEBNIS INSTABIL!"
endwhile
beep
print "\n Nominalzinssatz: ";format$("###0.#### %",(a!-1)*100)
print "___"
waitinput
goto "lup"
proc SUM_ahi :parameters bis&,a!
declare s!,i&
whileloop 0,bis&
s!=s!+a!^&Loop
endwhile
return s!
endproc
proc SUM_iahi :parameters bis&,a!
declare s!,i&
whileloop 0,bis&
s!=s!+&Loop*a!^&Loop
endwhile
return s!
endproc
lup2:
WindowTitle "Rückschluss von verzinseszinsten Beträgen und Nominalzinsfaktor auf Periodenspesen"
CLS rgb(190+rnd(66),190+rnd(66),190+rnd(66))
print "\n A N G A B E N : "
print "\n Anfangsbetrag: ";:input w$:case w$>"":x1!=val(w$)
print "\n Anzahl Perioden: ";:input w$:case w$>"":n&=val(w$)
print "\n Endbetrag: ";:input w$:case w$>"":xn!=val(w$)
print "\n Nominalzinsfaktor:";:input w$:case w$>"":a!=val(w$)
print
locate 1,1
print "\n A N G A B E N : "
print "\n Anfangsbetrag: ";format$("%g",x1!)
print "\n Anzahl Perioden: ";n&
print "\n Endbetrag: ";format$("%g",xn!)
print "\n Nominalzinsfaktor:";format$("%g",a!)
print
print "\n E R G E B N I S: \n"
print " Zinsfaktor: Spesendurchschnitt: \n\n"
Whileloop 1000
sahi!=SUM_ahi(n&-2,a!)
' an!=a!-(x1!*a!^(n&-1)+b!*sahi! - xn!)/(x1!*(n&-1)*a!^(n&-2)+b!*SUM_iahi(n&-3,a!))
bn!=b!-(x1!*a!^(n&-1)+b!*sahi! - xn!)/sahi!
locate %csrlin-1,2:print a!,b!
case (abs(bn!-b!)<eps!) :break'and (abs(an!-a!)<eps!)
' a!=an!
b!=bn!
case &Loop=1000:print "\n ERGEBNIS INSTABIL!"
endwhile
beep
print "\n Nominalzinssatz: ";format$("###0.#### %",(a!-1)*100)
print "\n Fixbetrag ";if(b!>0,"Prämien(+)","Spesen");" je Periode: ";format$("#####0.#####",b!)
print "___"
waitinput
goto "lup"
lup3:
WindowTitle "Rückschluss von verzinseszinsten Beträgen auf Nominalzinsfaktor und Periodenspesen"
CLS rgb(190+rnd(66),190+rnd(66),190+rnd(66))
print "\n A N G A B E N : "
print "\n Anfangsbetrag: ";:input w$:case w$>"":x1!=val(w$)
print "\n Anzahl Perioden: ";:input w$:case w$>"":n&=val(w$)
print "\n Endbetrag: ";:input w$:case w$>"":xn!=val(w$)
locate 1,1
print "\n A N G A B E N : "
print "\n Anfangsbetrag: ";format$("%g",x1!)
print "\n Anzahl Perioden: ";n&
print "\n Endbetrag: ";format$("%g",xn!)
print
print "\n E R G E B N I S: \n"
print " Zinsfaktor: Spesendurchschnitt: \n\n"
Whileloop 1000
sahi!=SUM_ahi(n&-2,a!)
bn!=b!-(x1!*a!^(n&-1)+b!*sahi! - xn!)/sahi!
an!=a!-(x1!*a!^(n&-1)+b!*sahi! - xn!)/(x1!*(n&-1)*a!^(n&-2)+b!*SUM_iahi(n&-3,a!))
locate %csrlin-1,2:print a!,b!
case (abs(bn!-b!)<eps!) and (abs(an!-a!)<eps!):break
a!=an!
b!=bn!
case &Loop=1000:print "\n E R G E B N I S I N S T A B I L !"
endwhile
beep
print "\n Nominalzinssatz: ";format$("###0.#### %",(a!-1)*100)
print "\n Fixbetrag ";if(b!>0,"Prämien(+)","Spesen");" je Periode: ";format$("#####0.####",b!)
print "___"
waitinput
goto "lup"
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 30.05.2021 ▲ |
|
|
|
|
p.specht
| Verzinseszinsungsdauer unter Speseneinfluss ================================== Ergänzend hier eine vereinfachte Berechnung, wie man aus den (im nachstehenden Snippet testweise fest einprogramierten) Werten Anfangsbetrag, Verzinsungsfaktor, Periodenspesen und einem Endbetrag auf die Anzahl der Verzinsungsperioden rückschliessen kann. Natürlich wieder mal ohne Gewähr!
WindowTitle "Aus Anfangsbetrag, Verzinsung, Spesen und Endbetrag auf die Periode schließen"
cls
declare a!,b!,x1!,xn!,n!
a!=2'Zinsfaktor (zB: 1.04 = 4%)
b!=-1'Spesen
x1!=2'Anfangsbetrag
xn!=9'Endbetrag
n!=(ln(((a!-1)*(xn!-1))/((a!-1)*x1!+b!))+ln(a!))/ln(a!)
print " Diese Daten treten am Ende der ";format$("%g",n!);". Periode auf!"
waitinput
End
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 30.05.2021 ▲ |
|
|
|