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í, protože 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 možné hodnoty podmínek v rámci tolerance mùžeme dostat radikálnì odlišné 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 naše úèely bereme f racionální lomenou, f(x)= [Maple Math] , 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);

[Maple Math]

> 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);

[Maple Plot]

Animace ukazuje prvních nìkolik iterací èísla 0,55 funkcí [Maple Math] . 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 [Maple Math] , 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);

[Maple Math]

> 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);

[Maple Plot]

> kolikrat2:=10:

> lin2:=x->0.5+(x-0.5)*1.2;

[Maple Math]

> 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);

[Maple Plot]

Definice: bod x nazveme pevným bodem zobrazení f , jestliže x = f(x) .

Banachùv princip kontrakce zaruèuje existenci pevného bodu pro každé kontrahující zobrazení, tj. takové, že pro x, y [Maple Math] X: [Maple Math]

Jak je vidìt lineární funkce buï jednoduše 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;

[Maple Math]

> 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:`);

[Maple Plot]

Obrázek ukazuje možnou 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);

[Maple Math]

Podle definice pevný bod dostaneme jako øešení rovnice:

fce(x)=x

> solve(fce(x)=x,x);

[Maple Math]

> 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);

[Maple Plot]

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 [Maple Math] (x)=x, kde n je nejmenší možné.

Podle této definice je pevný bod periodickým bodem s periodou 1.

Pro periodický bod s periodou n platí:

x= [Maple Math] (x), podíváme se konkrétnì na bod periody 4

> result1:=[solve(x=(fce@@4)(x),x)];

[Maple Math]
[Maple Math]

> 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:`);

[Maple Plot]

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);

[Maple Plot]

Definice: Posloupnost [Maple Math] , [Maple Math] , .., [Maple Math] takovou, že f( [Maple Math] ) = [Maple Math] , f( [Maple Math] ) = [Maple Math] , ..., f( [Maple Math] ) = x1 nazveme cyklem délky n .

Pojem periodického bodu si ještì 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 , jestliže [Maple Math] (x) je periodický bod s periodou n .

Pøíklad: Hledám preperiodický bod s preperiodou 3 a periodou 2

[Maple Math] (x)= [Maple Math] (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:`);

[Maple Plot]

Když se podíváme na body periody 3 naší funkce, zjistíme, že nìkterá øešení jsou v komplexním oboru. Na chování komplexních funkcí se teï zamìøíme, protože je v mnohém zajímavìjší...