Obecne vytahy 1
> with(plots);

> VstupniPoplatek:=.01*CilovaCastka;
SP:=x->min(3000,0.15*x);
xi:=0.02;

> 
Obecne vztahy a pojmy
> StavNaKonciRoku(Datum(Pocatek)[3]-1):=VstupniPoplatek*
(1+xi)^((CisloDne(
Datum(Pocatek)[1],Datum(Pocatek)[2],
Datum(Pocatek)[3]-1)-Pocatek)/365.25)
> 
Warning, premature end of input

> Pol:=proc() # pomocna procedura vraci x[j], pokud je x pole a x pokud je to jedno cislo
if nargs<=2 then
 args[1]
else args[args[nargs]]
fi
end;

StavNaKonciRoku:=t->
`if`(t<Datum(Pocatek)[3],0,
StavNaKonciRoku(t-1)*(1+xi)+
add
#sum
(
Pol(Ulozky[t],j)[1]*(1+xi)^((CisloDne(31,12,t)-Pol(Ulozky[t],j)[2])/DelkaRoku(t)),j=1..nops([Ulozky[t]]))

-PoplatekZaVedeni*(1+xi)^((CisloDne(31,12,t)-CisloDne(1,3,t))/DelkaRoku(t)) # ocekavam poplatek za vedeni uctu 1. 3. 
+
StatniPodpora(t-1)*(1+xi)^((CisloDne(31,12,t)-CisloDne(1,3,t))/DelkaRoku(t))

)
; # ocekavam statni podporu 1. 3. 

#for i from 2005 to 2020 do
#i,StavNaKonciRoku(i),nops([Ulozky[i]]),Ulozky[i],(CisloDne(31,12,i)-Pol(Ulozky[i],1#)[2]);
#od;

NasporenaCastka:=t->`if`(t<Datum(Pocatek)[3],0,StavNaKonciRoku(t)-StavNaKonciRoku(t-1)-StatniPodpora(t-1));

StatniPodpora:=t->SP(NasporenaCastka(t));

StavEkv:=tau->
add(
  `if`(Datum(UlozkyEkv[i][2])[3]>tau,
       0,
       UlozkyEkv[i][1])
*(1+'zeta')^((CisloDne(31,12,tau)-Pol(UlozkyEkv[i][2]))/DelkaRoku(t)),
i=1..nops(UlozkyEkv));

Data a vypocty
> Pocatek:=CisloDne(1,11,2006);
CilovaCastka:=300000;

> A:=NULL;

for z from 1000 by 2000 to 22000 do
Ulozky:='Ulozky';NULL;
for t from 2005 to  2020 do
x:=0.;
Ulozky[t]:=[x,CisloDne(31,1,t)]
od;
Ulozky[Datum(Pocatek)[3]]:=[VstupniPoplatek,Pocatek];
for t from 2006 to  2006+6 do
x:=z;
Ulozky[t]:=Ulozky[t],[x,CisloDne(20,1,t)]
od;

UlozkyEkv:=convert(Ulozky,list);

CilovaCastka:=StavNaKonciRoku(2012);
VstupniPoplatek:=.01*CilovaCastka;

rce:=StavNaKonciRoku(2012)=StavEkv(2012);
A:=A,[x,fsolve(rce)];
od:

> nops([A]);
> pointplot([A],title="Vynosnost v zavislosti na velikosti ulozek" #,style=line
);

> B:=NULL;

for z from 1000 by 500 to 22000 do
Ulozky:='Ulozky';NULL;
for t from 2005 to  2020 do
x:=PoplatekZaVedeni;
Ulozky[t]:=[x,CisloDne(31,1,t)]
od;
Ulozky[Datum(Pocatek)[3]]:=[VstupniPoplatek,Pocatek];
for t from 2009 to  2006+6 do
x:=z;
Ulozky[t]:=Ulozky[t],[x,CisloDne(20,1,t)]
od:

UlozkyEkv:=convert(Ulozky,list):

CilovaCastka:=StavNaKonciRoku(2012);
VstupniPoplatek:=.01*CilovaCastka:

rce:=StavNaKonciRoku(2012)=StavEkv(2012):
B:=B,[x,fsolve(rce)];
od:

> pointplot([B], title="Vynosnost v zavislotsti na velikost ulozek (pri kratsi dobe sporeni)"#,style=line
);

> C:=NULL;
for K from 2006 to 2011 do
#for z from 1000 by 500 to 22000 do
z:=19000;
Ulozky:='Ulozky';NULL;
for t from 2005 to  2020 do
x:=PoplatekZaVedeni;
Ulozky[t]:=[x,CisloDne(31,1,t)]
od;
Ulozky[Datum(Pocatek)[3]]:=[VstupniPoplatek,Pocatek];
for t from K to  2006+6 do
x:=z;
Ulozky[t]:=Ulozky[t],[x,CisloDne(20,1,t)]
od:

UlozkyEkv:=convert(Ulozky,list):

CilovaCastka:=StavNaKonciRoku(2012);
VstupniPoplatek:=.01*CilovaCastka:

rce:=StavNaKonciRoku(2012)=StavEkv(2012):
C:=C,[2012-K,fsolve(rce)];
od:

> pointplot([C], title="Vynosnost v zavislosti na delce sporeni");

> E:=NULL;
for K from 2010 to 2015 do
#for z from 1000 by 500 to 22000 do
z:=19000;
Ulozky:='Ulozky';NULL;
for t from 2005 to  2020 do
x:=PoplatekZaVedeni;
Ulozky[t]:=[x,CisloDne(31,1,t)]
od;
Ulozky[Datum(Pocatek)[3]]:=[VstupniPoplatek,Pocatek];
for t from 2006 to  K do
x:=z;
Ulozky[t]:=Ulozky[t],[x,CisloDne(20,1,t)]
od:

UlozkyEkv:=convert(Ulozky,list):

CilovaCastka:=StavNaKonciRoku(2012);
VstupniPoplatek:=.01*CilovaCastka:

rce:=StavNaKonciRoku(K)=StavEkv(K):
E:=E,[K-2005,fsolve(rce)];
print(E[nops([E])]);
od:
pointplot([E], title="Vynosnost v zavislosti na delce sporeni");

Warning, computation interrupted

> pointplot([E], title="Vynosnost v zavislosti na delce sporeni");

> 
> NadN:=x->`if`(x>0,x,0);

> NadN(-2);

> X:=[0,0,0,21000,20000,18000];
S:=1;
delta:=1000;

while delta>100 do

for kappa from 0 to 0 do
Ulozky:='Ulozky';NULL;
for t from 2005 to  2020 do
x:=PoplatekZaVedeni;
Ulozky[t]:=[x,CisloDne(31,1,t)]
od;
# print(`....`);
Ulozky[Datum(Pocatek)[3]]:=[VstupniPoplatek,Pocatek];
for t from 2006 to  2011 do
# print(t,aaaaa[kappa][t-2006+1]);
x:=X[t-2006+1];
Ulozky[t]:=Ulozky[t],[x,CisloDne(20,1,t)]
od:

UlozkyEkv:=convert(Ulozky,list):

CilovaCastka:=StavNaKonciRoku(2011);
VstupniPoplatek:=.01*CilovaCastka:

rce:=StavNaKonciRoku(2011)=StavEkv(2011):
Z[kappa]:=fsolve(rce);
od;

ZZ:=Z[kappa]; #=Z[0]

> 
> print(Z[0],X);
for kappa from 0 to 6 do
Ulozky:='Ulozky';NULL;
for t from 2005 to  2020 do
x:=PoplatekZaVedeni;
Ulozky[t]:=[x,CisloDne(31,1,t)]
od;
# print(`....`);
Ulozky[Datum(Pocatek)[3]]:=[VstupniPoplatek,Pocatek];
  XX[kappa]:=[seq(NadN(X[j]-`if`(kappa=j,delta,0)),j=1..6)];# zaporne ulozky zak.
#   print(XX[kappa]);
  for t from 2006 to  2011 do
    x:=XX[kappa][t-2006+1];
    Ulozky[t]:=Ulozky[t],[x,CisloDne(20,1,t)]
  od:

UlozkyEkv:=convert(Ulozky,list):

CilovaCastka:=StavNaKonciRoku(2011);
VstupniPoplatek:=.01*CilovaCastka:

rce:=StavNaKonciRoku(2011)=StavEkv(2011):
Z[kappa]:=fsolve(rce);
  # print(Z[kappa]);
if Z[kappa]<Z[0] then
 #  print(`malo`);
  XX[kappa]:=[seq(NadN(X[j]-`if`(j=kappa,delta,0)),j=1..6)];
  for t from 2006 to  2011 do
   x:=XX[kappa][t-2006+1];
   Ulozky[t]:=Ulozky[t],[x,CisloDne(20,1,t)]
  od:

UlozkyEkv:=convert(Ulozky,list):

CilovaCastka:=StavNaKonciRoku(2011);
VstupniPoplatek:=.01*CilovaCastka:

rce:=StavNaKonciRoku(2011)=StavEkv(2011):
Z[kappa]:=fsolve(rce);
#print(`opravne`,Z[kappa]);
#else print(`dost`);
fi;

if Z[kappa]>Z[0] then
X:=XX[kappa];
fi;

od:
> 
> 
> delta:=delta-round(100/1.5);

od:

> .4957438236e-1, [20000, 20000, 20000, 20000, 20000, 20000]
.5202445659e-1, [12226, 12226, 12226, 18067, 18067, 12422]
---
.5294023996e-1, [20, 200, 2000, 20000, 20000, 20000]
.5505762024e-1, [0, 0, 2000, 19000, 19000, 13876]
. . .
.5493548982e-1, [0, 0, 2000, 19000, 19000, 13876]
??
> 

> 

> 

> permute(6)[k];

> PermutaceSOpakovanim:=a->permute((op(choose(a,a))));

> 

> i:=2;j:=4;
A:=permute(i);

> B:=permute(A);

> permute((op(choose(3,3))));

> PermutaceSOpakovanim(3);

>