17.07.2013 Views

PDF: Galaxen Nr. 17 - Marts 1998 - SmartData

PDF: Galaxen Nr. 17 - Marts 1998 - SmartData

PDF: Galaxen Nr. 17 - Marts 1998 - SmartData

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

8<br />

<strong>Nr</strong>. <strong>17</strong> – <strong>Marts</strong> <strong>1998</strong> GALAXEN<br />

NOGLE TEGNINGER PÅ TI-82<br />

Af Jens Carstensen<br />

Vi skal se på, hvordan man med<br />

forholdsvis enkle programmer på<br />

TI-82 kan få tegnet fraktale billeder.<br />

Desuden skal vi beskrive et program<br />

til tegning af plane kurver, hvis<br />

ligninger kendes.<br />

Affine transformationer<br />

En såkaldt affin transformation f af<br />

planen på sig selv er på matrixform<br />

givet ved<br />

⎛x<br />

⎞ ⎛a<br />

f ⎜<br />

⎟ = ⎜<br />

⎝y<br />

⎠ ⎝c<br />

b⎞⎛<br />

x⎞<br />

⎛ e ⎞<br />

⎟<br />

⎜<br />

⎟ + ⎜<br />

⎟<br />

⎟.<br />

d⎠⎝<br />

y⎠<br />

⎝ f ⎠<br />

Vi vælger et passende tegnevindue,<br />

nemlig [0;12]×[0;12], som vi indtaster<br />

på forhånd. Dernæst indfører vi tre<br />

affine transformationer f, g og h, der<br />

alle benytter den samme matrix B<br />

bestemt ved<br />

1 ⎛ 3<br />

B = ⎜<br />

⎝ 0<br />

0⎞<br />

⎟.<br />

1 ⎟<br />

3 ⎠<br />

Denne fremstiller en multiplikation<br />

1<br />

med 3 ud fra koordinatsystemets<br />

begyndelsespunkt. Vi definerer nu<br />

⎛ x⎞<br />

⎛ x⎞<br />

f ⎜<br />

⎟ = B ⎜<br />

⎟<br />

⎝ y⎠<br />

⎝ y⎠<br />

⎛ x⎞<br />

⎛ x⎞<br />

⎛8⎞<br />

g ⎜<br />

⎟ = B ⎜<br />

⎟ + ⎜<br />

0 ⎟<br />

⎝ y⎠<br />

⎝ y⎠<br />

⎝ ⎠<br />

⎛ x⎞<br />

⎛ x⎞<br />

⎛8⎞<br />

h ⎜<br />

⎟ = B ⎜<br />

⎟ + ⎜ .<br />

8 ⎟<br />

⎝ y⎠<br />

⎝ y⎠<br />

⎝ ⎠<br />

Vi kan skrive f, g og h ud i koordinater:<br />

1 1<br />

f ( x,<br />

y)<br />

= ( x,<br />

y)<br />

3<br />

1 1<br />

g(<br />

x,<br />

y)<br />

= ( 3 x + 8,<br />

3 y)<br />

1 h(<br />

x,<br />

y)<br />

= ( x + 8,<br />

y + 8)<br />

.<br />

3<br />

Vi samler konstanterne i en 3×7matrix,<br />

som vi i programmet betegner<br />

[A]:<br />

3<br />

1<br />

3<br />

⎛0,<br />

33<br />

⎜<br />

⎜<br />

⎜<br />

⎝0,<br />

33<br />

0<br />

[ A]<br />

= 0,<br />

33 0 0 0,<br />

33 8 0 0,<br />

66 .<br />

0<br />

0<br />

0<br />

0,<br />

33<br />

0,<br />

33<br />

0<br />

8<br />

0<br />

8<br />

0,<br />

33⎞<br />

⎟<br />

⎟<br />

1<br />

⎟<br />

⎠<br />

Denne matrix tastes ind på hovedskærmen<br />

inden programmet sættes i<br />

gang. Programmet kan nemlig så<br />

referere til matricen. Første række<br />

angiver konstanterne a, b, c, d, e, f<br />

hørende til f og indeholder som sidste<br />

element den kumulerede sandsynlighed<br />

for at programmet vælger f, g<br />

eller h. Tilsvarende indeholder 2.<br />

række konstanterne for g og 3. række<br />

for h.<br />

Selve programmet, der tegner det<br />

fraktale billede vises nedenfor.<br />

Konstanten M angiver antallet af<br />

iterationer. Hvis M som her sættes til<br />

1000, får man billedet på figur 1, og<br />

det tager ca. 3 minutter.<br />

Programmet fungerer på den måde,<br />

at det ved hvert gennemløb med<br />

1<br />

sandsynligheden 3 vælger afbildnin-<br />

gen f, g eller h. Til slut i programmet<br />

sørger vi for, at kun iterationer efter<br />

de første 10 tegnes.<br />

Fig. 1<br />

Sierpinskitrekanten og snefnugfraktal<br />

Vi kan ændre lidt på konstanterne i<br />

den matrix [A], der beskriver de tre<br />

affine afbildninger, fx sådan:<br />

⎛0,<br />

5<br />

⎜<br />

⎜<br />

⎜<br />

⎝0,<br />

5<br />

0<br />

[ A]<br />

= 0,<br />

5 0 0 0,<br />

5 6 0 0,<br />

66 .<br />

0<br />

0<br />

0<br />

0,<br />

5<br />

0,<br />

5<br />

0<br />

3<br />

0<br />

6<br />

0,<br />

33⎞<br />

⎟<br />

⎟<br />

1<br />

⎟<br />

⎠<br />

Så får vi den velkendte Sierpinskitrekant<br />

frem som vist på figur 2. Her er<br />

der brugt M = 2000 iterationer.<br />

Fig. 2<br />

Prøv at ændre matricen [A] til<br />

⎛0,<br />

5<br />

⎜<br />

⎜<br />

⎜<br />

⎝0,<br />

5<br />

0<br />

[ A]<br />

= 0,<br />

5 0 0 −0,<br />

5 12 6 0,<br />

66 .<br />

0<br />

0<br />

0<br />

−0,<br />

5<br />

−0,<br />

5<br />

6<br />

9<br />

6<br />

12<br />

0,<br />

33⎞<br />

⎟<br />

⎟<br />

1<br />

⎟<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!