Affina avbildningar, itererade funktionssstem och fraktala bilder
En linjär funktion/avbildning F : R 2 R 2 kan skrivas F (ex ) = eax där A är en konstant 2 2 - matris. Vi använder standardbasen och skriver utan e ( ( ( ) x a b x F ( ) = ) c d) Om man till en linjär avbildning adderar en konstant vektor fås en så kallad affin avbildning: ( ( ( ) ( ) x a b x e F ( ) = ) c d) f För envariabelfunktioner är f (x) = ax linjär och f (x) = ax b affin.
( x Låt F ( ) ) = Affina avbildningar ( /2 0 0 /2 ) ( ) x = 2 ( ) x Låt K = enhetskvadraten och F (K) det som K avbildas på med F (en mindre kvadrat eftersom F halverar alla vektorer). Om vi avbildar F (K) med F igen får vi F (F (K)) = F 2 (K) etc. K /2 F (K) /4 F 2 (K) /4 /2 x
( ) ( x /2 0 Låt F 2 ( ) = 0 /2 ) ( x ) ( ) /2 0 F 2 är affin, som F men flttar också /2 i x-led. /2 /4 K F (K) F 2 (K) F 2 (K) F F 2 (K) F 2 F (K) F 2 22 22 (K) /4 /2 3/4 x
( ( ( ) ( ) x /2 0 x 0 Låt F 3 ( ) = ) 0 /2) /2 F 3 är affin, som F 2 men flttar i stället /2 i -led. /2 F 3 (K) /4 F (K) F 2 (K) /4 /2 x 3/4 /2 /4 F 32 (K) F 3 F (K) F 3 F 2 (K) F F 3 (K) F 2 F 3 (K) F 2 (K) F F 2 (K) F 2 F (K) F 2 22 22 (K) /4 /2 3/4 x
Om vi använder trianglar i stället för kvadrater och stegar på med alla sammansättningar av F, F 2 och F 3 får vi till slut en fraktal bild. Efter många steg fås bilden på nästa sida som också kan genereras med en slumpstegsmetod.
Affina avbildningar Om vi bo rjar i (0,0) och tar slumpvis en av F, F2 eller F3 kan vi t.ex. fa 0 F3 F3 F F3 F F2 4 8 6 32 2 7 7 7 7 7 2 7 3 3 0 0 2 6 4 8 33 97 97 97 64 32 F 7 2 28 64 F 7 256 28 F 7 3 52 39 256 F 7... Om vi tar 0.000 steg och plottar alla punkter fa r vi en fraktal bild som a r samma som fa s med sstematiska metoden pa fo rra sidan: with stats random : with plots : Mat d linalg matrix 0.0, 0.0, 0.0, 0.6 ;
F 2 (K) F 2 (K) ( ) ( ) ( ) x 0 0 x Låt nu F ( ) = 0 0.6 ( ) ( ) ( ) ( ) x 0.85 0.04 x 0 F 2( ) = 0.04 0.85.6 ( ) ( ) ( ) ( ) x 0.2 0.26 x 0 F 3( ) = 0.23 0.22.6 ( ) ( ) ( ) ( ) x 0.5 0.28 x 0 F 4( ) = 0.26 0.24 0.44 K F (K) x
Affina avbildningar Om vi bo rjar i (0,0) och tar steg med F, F2, F3 eller F4 med sannolikheter 0.0, 0.85, 0.07 resp. 0.07, fa r vi om vi plottar 0.000 fo rsta punkterna:
Ett itererat funktionssstem (IFS) består av ett antal affina funktioner F,..., F n med tillhörande sannolikheter p,..., p n. Om man stegar sig fram och plottar alla punkter fås en fraktal bild. IFS kan användas i datorgrafik. Omvänt, om man har en given bild finns metoder för att approximera den med en fraktal bild och hitta affina funktioner och ett IFS som leder till bilden. Detta ger en metod för bildkompression genom lagring av en bild med mcket mindre information (affina funktionerna sannolikheter) än vad som behövs för att lagra alla pixlar. I stället för att ange hur bilden ser ut i minsta detalj anger man ett enkel algoritm som skapar den. Vi kommer senare se andra metoder från linjär algebra som används för bildkompression.
Maple-koder för de IFS som ger bilderna ovan. with stats random : with plots : n d 0000 : Mat d linalg matrix 0.5, 0.0, 0.0, 0.5 : Mat2 d linalg matrix 0.5, 0.0, 0.0, 0.5 : Mat3 d linalg matrix 0.5, 0.0, 0.0, 0.5 : Vector d linalg vector 0, 0 : Vector2 d linalg vector 0, 0.5 : Vector3 d linalg vector 0.5, 0 : Prob d / 3 : Prob2 d / 3 : Prob3 d / 3 : P d linalg vector 0, 0 : for m from to n do prob d uniform : if prob Prob then P d evalm Mat&*P C Vector elif prob Prob C Prob2 then P d evalm Mat2&*P C Vector2 else Pd evalm Mat3&*PC Vector3 ; fi: A m, d P : A m, 2 d P 2 : od: C d matrix n, 2, i, j / A i, j : pointplot C, scaling = constrained, axes = none, color = green ; with stats random : with plots : n d 0000 : Mat d linalg matrix 0.0, 0.0, 0.0, 0.6 : Mat2 d linalg matrix 0.85, 0.04, K0.04, 0.85 : Mat3 d linalg matrix 0.2,K0.26, 0.23, 0.22 : Mat4 d linalg matrix K0.5, 0.28, 0.26, 0.24 : Vector d linalg vector 0, 0 : Vector2 d linalg vector 0,.6 : Vector3 d linalg vector 0,.6 : Vector4 d linalg vector 0, 0.44 : Prob d 0.0 : Prob2 d 0.85 : Prob3 d 0.07 : Prob4 d 0.07 : Pd linalg vector 0, 0 : for m from to n do prob d uniform : if prob Prob then P d evalm Mat&*P C Vector elif prob Prob C Prob2 then P d evalm Mat2&*P C Vector2 elif prob Prob C Prob2 C Prob3 then P d evalm Mat3&*P C Vector3 else Pd evalm Mat4&*PC Vector4 ; fi: A m, d P : A m, 2 d P 2 : od: C d matrix n, 2, i, j / A i, j : pointplot C, scaling = constrained, axes = none, color = green ;