Pe scurt
Un fractal se construiește repetând aceeași regulă la scări tot mai mici. La curba Koch, fiecare segment se înlocuiește cu patru segmente, fiecare de trei ori mai scurt. La triunghiul Sierpinski, fiecare triunghi rămas este înlocuit cu trei triunghiuri mai mici, după eliminarea celui central. Figurile arată autosimilaritate: o parte seamănă cu întregul.
Metoda divide et impera împarte problema „desenează nivelul ” în subprobleme „desenează nivelul ”. Este necesar un caz de bază, altfel recursia nu se oprește. La nivelul al curbei Koch există un segment; la nivelul sunt , iar la nivelul sunt .
În detaliu
Un fractal este o figură autosimilară: fiecare parte a lui seamănă cu întregul. Construcția recursivă (divide et impera) reduce problema „desenează nivelul ” la problema „desenează nivelul ” de mai multe ori, la o scară mai mică. Fără un caz de bază, recursia nu se oprește, de aceea nivelul 0 este tratat direct: la curba Koch este un segment, la triunghiul Sierpinski este un triunghi. Curba Koch înlocuiește fiecare segment cu patru segmente, fiecare de trei ori mai scurt decât cel înlocuit. După pași numărul de segmente este , un segment are lungimea , iar lungimea totală este . Triunghiul Sierpinski se obține înlocuind fiecare triunghi cu trei triunghiuri de latură jumătate, după eliminarea triunghiului central. După pași sunt triunghiuri păstrate, iar aria lor totală este .
Exemplul 1 — numărarea segmentelor Koch. Numărul de segmente de la nivelul este de patru ori numărul de la nivelul , cu un segment la nivelul 0.
#include <iostream>
using namespace std;
long long segmente(int nivel) {
if (nivel == 0) return 1;
return 4 * segmente(nivel - 1);
}
int main() {
for (int i = 0; i <= 4; ++i)
cout << segmente(i) << " ";
return 0;
}
Programul afișează 1 4 16 64 256 . Pentru segmente(2) apelurile dau . Recursia simplă are timp proporțional cu pentru numărare, dar desenarea tuturor segmentelor de nivel cere operații, deoarece fiecare segment este produs separat. Tipul long long se depășește la niveluri suficient de mari, în jur de , unde ajunge la limita tipului.
Exemplul 2 — curba Koch la nivelul 3. Pentru un segment inițial de lungime și : sunt de segmente, fiecare cu lungimea , deci lungimea totală este . La nivelurile 0, 1, 2, 3 lungimea totală este , , și : crește cu un factor de la fiecare pas și nu are limită superioară, deși figura încape într-o zonă de mărime finită.
Exemplul 3 — triunghiul Sierpinski la nivelul 3. Sunt de triunghiuri păstrate, fiecare cu latura de opt ori mai mică decât a celui inițial. Aria totală este , deci aproape 58% din aria inițială a fost eliminată. Din același motiv, la fiecare pas rămân din aria precedentă, iar aria tinde spre 0 când crește, deși numărul de triunghiuri crește.
Cum se desenează. Pentru curba Koch, o procedură recursivă koch(lungime, nivel) desenează un segment dacă nivel este 0; altfel apelează de patru ori koch(lungime / 3, nivel - 1), cu rotiri de 60 de grade la stânga, 120 de grade la dreapta și 60 de grade la stânga între apeluri, astfel încât cele patru segmente să alcătuiască „vârful” curbei. Procedura are un singur parametru care scade, nivel, deci numărul apelurilor la nivelul este .
Exemplul 4 — fulgul lui Koch. Pornind de la un triunghi echilateral cu latura și aplicând regula pe fiecare latură, perimetrele sunt , și la nivelurile 0, 1 și 2: la nivelul 2 sunt de segmente de lungime 1.
Greșeli frecvente
- Greșit: la fractali recursia nu are nevoie de caz de bază.Corect: fără nivelul 0 apelurile nu se mai opresc.
- Greșit: la curba Koch numărul segmentelor se dublează la fiecare pas.Corect: se înmulțește cu 4, fiind .
- Greșit: lungimea curbei Koch rămâne aceeași la toate nivelurile.Corect: se înmulțește cu la fiecare pas.
Testează-te pe această lecție
Lecția o citești aici, fără cont. Testele pe lecții și capitole sunt în cont, cu grile originale Didaxis și explicația fiecăreia: gratuit 10 grile pe zi, fără limită cu Premium, 49 de lei pe lună pentru fiecare copil.
Înainte și după
Surse și referințe
Redactare proprie, conform programei:
- OMECI 5099/2009, anexa 5, Informatică, p. 4–5, clasa X intensiv; rocnee.eu
Documente consultate
- Programa școlară de informatică intensiv, clasa a X-a (OMECI 5099/2009, anexa 5), CNCE, p. 4–5; rocnee.eu
- Wolfram MathWorld, „Koch Snowflake” și „Sierpiński Sieve”, secțiunile construcție și numărare; mathworld.wolfram.com ; mathworld.wolfram.com
Desene: Redactare proprie (desen original)
