Daniel Èech
Iterace komplexních funkcí a fraktály
1. iterace reálných funkcí
>
> with(plots):
> with(plottools):
> with(linalg):
Warning, new definition for norm
Warning, new definition for trace
Úvod
Iterace funkcí jsou vdìèné téma pro zkoumání, protoe pøedstavují jednoduchý matematický model, který mùe mít za jistých okolností velmi komplikované chování. V pøípadì, e budeme chtít pøedpovìdìt budoucí stav takto zavedeného systému, mùeme se dostat do principiálních obtíí. Problém se dá formulovat tøeba tak, e i kdy známe výchozí podmínky s libovolnou pøesností, pro moné hodnoty podmínek v rámci tolerance mùeme dostat radikálnì odliné výsledky. Iterace v komplexních èíslech jsou potom základem toho, co se obvykle nazývá deterministický chaos.
Definice: Diskrétní dynamický systém je dvojice (X,f), kde X je metrický prostor a f je spojité zobrazení f: X->X.
(pro nae úèely bereme f racionální lomenou, f(x)=
, kde P a Q jsou polynomy.)
Iterace reálných funkcí
>
grIter:=proc(f,x0,y0,kolikrat,barva)
if (kolikrat=0) then RETURN ({});
else RETURN ({line([x0,y0],[x0,f(x0)],linestyle=2,colour=barva),line([x0,f(x0)],[f(x0),f(x0)],linestyle=2,colour=barva)} union grIter(f,f(x0),f(x0),kolikrat-1,barva));
fi;
end:
> kolikrat1:=15:
> func:=x->1/2+1/2*sin(8*x);
> anm1:=seq(display(plot(x,x=0..1.2,thickness=2,colour=red),plot(func(x),x=0..1.2,thickness=2,colour=navy),grIter(func,0.55,0,i,black),scaling=constrained),i=1..kolikrat1):
> display(anm1,insequence=true,title=`animace iterace funkce:`,scaling=constrained);
Animace ukazuje prvních nìkolik iterací èísla 0,55 funkcí
. Ukazuje se, e pro tuto výchozí hodnotu má prùbìh iterace ustálí na urèitém bodì (aspoò z obrázku to tak vypadá).
Vezmìme nyní za
f
racionální lomenou funkci, tj. funkci tvaru
, pro polynomy
P
,
Q
stupnì
m
a
n
Nejjednoduí pøípad racionální lomenné funkce, kde m=n=0, vede na konstatní funkci. Z hlediska iterací tu není co zkoumat.
Lineární funkce pro m=1 a n=0 vykazují jednoduché iteraèní chování, které se dá dobøe pøedpovídat.
> lin1:=x->0.5+(x-0.5)*(-2/3);
> anm2:=seq(display(plot(x,x=0..1,thickness=2,colour=wheat),plot(lin1(x),x=0..1,thickness=2,colour=navy),grIter(lin1,0.9,0,i,black),grIter(lin1,0.5,0,i,black),grIter(lin1,0.1,0,i,black),scaling=constrained),i=1..kolikrat1):
> display(anm2,insequence=true,title=`animace konvergentni iterace linearni funkce:`,scaling=constrained);
> kolikrat2:=10:
> lin2:=x->0.5+(x-0.5)*1.2;
> anm3:=seq(display(plot(x,x=0..1,thickness=2,colour=wheat),plot(lin2(x),x=0..1,thickness=2,colour=navy),grIter(lin2,0.4,0,i,black),grIter(lin2,0.5,0,i,black),grIter(lin2,0.6,0,i,black),scaling=constrained),i=1..kolikrat2):
> display(anm3,insequence=true,title=`animace divergentni iterace linearni funkce:`,scaling=constrained);
Definice: bod x nazveme pevným bodem zobrazení f , jestlie x = f(x) .
Banachùv princip kontrakce zaruèuje existenci pevného bodu pro kadé kontrahující zobrazení, tj. takové, e pro x, y
X:
Jak je vidìt lineární funkce buï jednodue konverguje ke svému pevném bodu nebo ubíhá do nekoneèna. O tom, která situace nastane lze snadno rozhodnout na základì výchozí hodnoty a derivace funkce f .
Pro kvadratické funkce, m =2, n =0, iteraèní chování není tak jednoduché.
Iterace kvadratických funkcí stojí pøi základech
> kvadrat:=x->x^2;
> funkce:=plot(kvadrat(x),x=0..1.7,y=0..2,thickness=3,colour=red):
> osa:=plot(x,x=0..1.7,y=0..2,thickness=3,colour=wheat):
> display(funkce,osa,grIter(kvadrat,0.9,0,5,black),grIter(kvadrat,1,0,2,black),grIter(kvadrat,1.1,0,3,black),scaling=constrained,title=`iterace kvadratické funkce:`);
Obrázek ukazuje monou zmìnu chování kvadratické funkce v blízkosti pevného bodu
Zamìrme svou pozornost na zkoumání pevných bodù.
> fce:=x->4*x*(1-x);
Podle definice pevný bod dostaneme jako øeení rovnice:
fce(x)=x
> solve(fce(x)=x,x);
> graf:={plot(x,x=-0.1..1.1,thickness=2,colour=red),plot(fce(x),x=-0.1..1.1,thickness=2,colour=navy)}:
> display(graf,grIter(fce,3/4,0,2,black),point([0,0],symbol=circle),point([3/4,fce(3/4)],symbol=circle),title=`pevné body funkce:`,scaling=constrained,axes=boxed);
Urèitým zobecnìním pojmu pevného bodu zobrazení je periodický bod, co je výchozí bod, do kterého se funkce po n-té iteraci vrací.
Definice:
Bod
x
nazveme periodickým bodem funkce
f
s periodou
n
, pokud
(x)=x, kde n je nejmení moné.
Podle této definice je pevný bod periodickým bodem s periodou 1.
Pro periodický bod s periodou n platí:
x=
(x), podíváme se konkrétnì na bod periody 4
> result1:=[solve(x=(fce@@4)(x),x)];
>
display(graf,seq(point([result1[i],fce(result1[i])]),i=1..vectdim(result1)),seq(grIter(fce,result1[i],0,10,black),i=1..vectdim(result1)),scaling=constrained,title=`body periody 4:`);
Obrázek ukazuje zajímavou vlastnost, která se zdá samozøejmá. Naí definici periodických bodù vyhovují i body s periodou nií, ale soudìlnou. Samotný intuitivní pojem periodického bodu periody právì n by vedl na komplikovanìjí definici, ale nepøedstavuje ádné formální komplikace. V dalím bude chápán periodický bod právì v tomto smyslu.
Pokud si ná obrázek rozdìlíme, najdeme tu body period 1, 2 a 4:
> per:=display(graf,seq(point([result1[i],fce(result1[i])]),i=1..vectdim(result1)),grIter(fce,result1[2],0,10,black),grIter(fce,result1[3],0,10,green),grIter(fce,result1[4],0,10,gold),grIter(fce,result1[5],0,10,orange),grIter(fce,result1[6],0,10,plum),scaling=constrained,title=`body period 1, 2 a 4:`):
> popis:=textplot({[0.1,0.07,`4`],[0.38,0.07,`2`],[0.78,0.07,`1`]}):
> display(per,popis);
Definice:
Posloupnost
,
, ..,
takovou, e
f(
)
=
,
f(
)
=
, ...,
f(
)
=
x1
nazveme cyklem délky
n
.
Pojem periodického bodu si jetì zobecníme. Preperiodický bod s preperiodou s a periodou p je takový bod, e se po s iteracích funkce dostane do cyklu délky n .
Definice
: Bod
x
nazveme preperiodický s preperiodou
s
a periodou
p
, jestlie
(x) je periodický bod s periodou
n
.
Pøíklad: Hledám preperiodický bod s preperiodou 3 a periodou 2
(x)=
(x)
> result2:=[solve((fce@@3)(x)=(fce@@5)(x),x)]:
> display(graf,grIter(fce,result2[11],0,10,black),scaling=constrained,title=`preperiodický bod s preperiodou 3 a periodou 2:`);
Kdy se podíváme na body periody 3 naí funkce, zjistíme, e nìkterá øeení jsou v komplexním oboru. Na chování komplexních funkcí se teï zamìøíme, protoe je v mnohém zajímavìjí...