Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

ALGORYTMY KLASYCZNE ________ FRAKTALE. Zastosowanie algorytmów iteracyjnych w rysowaniu fraktali FRAKTALE.

Podobne prezentacje


Prezentacja na temat: "ALGORYTMY KLASYCZNE ________ FRAKTALE. Zastosowanie algorytmów iteracyjnych w rysowaniu fraktali FRAKTALE."— Zapis prezentacji:

1 ALGORYTMY KLASYCZNE ________ FRAKTALE

2 Zastosowanie algorytmów iteracyjnych w rysowaniu fraktali FRAKTALE

3 Fraktal (łac. fractus – złamany, cząstkowy, ułamkowy) w znaczeniu potocznym oznacza zwykle obiekt samo-podobny (tzn. taki, którego części są podobne do całości) albo "nieskończenie subtelny" (ukazujący subtelne detale nawet w wielokrotnym powiększeniu).łac. FRAKTALE

4 FRAKTALE

5 FRAKTALE

6 Śnieżynka Kocha Powstaje w ten sposób, że do boków trójkąta równobocznego dokleja się trzy trójkąty pomniejszone np.. w skali 1:3, do otrzymanej gwiazdy sześcioramiennej – 12 trójkątów zmniejszonych np. w skali 1:9 itd. Śnieżynka Kocha jest jednym z najprostszych modeli matematycznych pełnej linii brzegowej, np. oddzielającej morze od lądu. FRAKTALE

7 Śnieżynka Kocha

8 Najpierw rysujemy trójkąt równoboczny o długości boku np. 1. Każdy bok trójkąta dzielimy na trzy równe części i doklejamy do części środkowej, tak jak na rysunku, trójkąt równoboczny o boku trzy razy krótszym. Z trójkąta powstała 12 boczna gwiazda. Każdy jej bok ma długość równą 1/3 FRAKTALE

9 Następnie... Każdy bok gwiazdy dzielimy znowu na trzy równe części i do części środkowej doklejamy trójkąt równoboczny o boku trzy razy krótszym niż poprzednio. Otrzymamy 48 boczną gwiazdę o długości boku 1/9. FRAKTALE

10 Kolejne kroki są następujące: W kolejnych krokach postępujemy podobnie jak poprzednio. W trzecim kroku powstanie gwiazdka, która ma 34 3 =192 jednakowej długości boków. Rysunek poniżej pokazuje gwiazdkę po 5 krokach konstrukcyjnych. Gwiazdka ta ma teraz 34 5, czyli 3072 boki. Rysunek poniżej pokazuje piramidę po 5 krokach konstrukcyjnych. FRAKTALE

11 Śnieżynka Kocha view_all?id=geometric_sequence_accou nt_constant_ratio_common_page_9 view_all?id=geometric_sequence_accou nt_constant_ratio_common_page_9 FRAKTALE

12 Dywan Sierpińskiego to fraktal otrzymany z kwadratu za pomocą podzielenia go na dziewięć mniejszych kwadratów (3x3), usunięcia środkowego kwadratu i ponownego rekurencyjnego zastosowania tej samej procedury do każdego z pozostałych ośmiu kwadratów. FRAKTALE Dywan Sierpińskiego

13 Jak konstruuje się Dywan Sierpińskiego? Najpierw rysujemy kwadrat, który dzielimy na dziewięć równych części i usuwamy środkowy kwadrat. FRAKTALE

14 Następnie … Każdy z pozostałych ośmiu mniejszych kwadratów dzielimy znowu na dziewięć równych części i usuwamy znowu środkowe kwadraciki. FRAKTALE

15 Kolejne kroki są następujące: W kolejnych krokach postępujemy podobnie jak poprzednio. Po n krokach kwadrat będzie miał, aż n-1 dziur, którymi to dziurami są usunięte kwadraty, które są różnej wielkości. Rysunek poniżej pokazuje dywan po 5 krokach konstrukcyjnych. FRAKTALE

16 Jak konstruuje się Trójkąt Sierpińskiego Najpierw rysujemy trójkąt równoboczny, o długości boku np. 1. Środki boków trójkąta łączymy odcinkami. Otrzymaliśmy cztery trójkąty równoboczne, każdy o długości boku 1/3. Usuwamy środkowy trójkąt. FRAKTALE

17 Następnie … Każdy z pozostałych trzech mniejszych trójkątów dzielimy znowu na cztery równe trójkąty. Ich wierzchołkami są środki boków trójkątów otrzymanych w pierwszym kroku. Usuwamy środkowe trójkąty. FRAKTALE

18 Kolejne kroki są następujące: W kolejnych krokach postępujemy podobnie jak poprzednio. Po n krokach kwadrat będzie miał, aż n-1, dziur, którymi to dziurami są usunięte trójkąty, które są różnej wielkości. Rysunek poniżej pokazuje trójkąt po 5 krokach konstrukcyjnych. FRAKTALE

19

20 Trójkąt Sierpińskiego view_all?id=geometric_sequence_accou nt_constant_ratio_common_t_page_7 view_all?id=geometric_sequence_accou nt_constant_ratio_common_t_page_7 n=com_content&view=article&id=9&Itemi d=10 n=com_content&view=article&id=9&Itemi d=10 FRAKTALE

21 Dywany Sierpińskiego FRAKTALE

22 Dywany Sierpińskiego FRAKTALE

23 ALGORYTMY KLASYCZNE iteracja i rekurencja mmazur.eu.org

24 Iteracja (łac. iteratio – powtarzanie) – czynność powtarzania (najczęściej wielokrotnego) tej samej instrukcji (albo wielu instrukcji) w pętli. Mianem iteracji określa się także operacje wykonywane wewnątrz takiej pętli. Rekurencja, zwana także rekursją to w logice, programowaniu i w matematyce odwoływanie się np. funkcji lub definicji do samej siebie. Algorytmy klasyczne

25 Algorytm Euklidesa Wyszukiwanie największego wspólnego dzielnika (NWD) dwóch liczb naturalnych. Algorytmy klasyczne

26

27 ZAPIS ALGORYTMU W C++

28 Algorytm Euklidesa – sposób I #include using namespace std; int main() { int a,b; cin >> a >> b; while(a != b) if(a > b) a -= b; else b -= a; cout << a << endl; system("pause"); } Algorytmy klasyczne

29 #include using namespace std; int main() { int a,b,r; cin >> a >> b; while(b) { r = a % b; a = b; b = r; } cout << a << endl; system("pause"); } Algorytm Euklidesa – sposób II Algorytmy klasyczne

30 Jest to algorytm sortowania szybkiego. DZIEL - problem główny zostaje podzielony na podproblemy ZWYCIĘŻAJ - znajdujemy rozwiązanie podproblemów POŁĄCZ - rozwiązania podproblemów zostają połączone w rozwiązanie problemu głównego Metoda dziel i zwyciężaj Algorytmy klasyczne

31 Idea sortowania szybkiego jest następująca : DZIEL : najpierw sortowany zbiór dzielimy na dwie części w taki sposób, aby wszystkie elementy leżące w pierwszej części (zwanej lewą partycją) były mniejsze lub równe od wszystkich elementów drugiej części zbioru (zwanej prawą partycją). ZWYCIĘŻAJ : każdą z partycji sortujemy rekurencyjnie tym samym algorytmem. POŁĄCZ : połączenie tych dwóch partycji w jeden zbiór daje w wyniku zbiór posortowany. Algorytmy klasyczne

32 ZAPIS ALGORYTMU W C++ Algorytmy klasyczne

33 #include using namespace std; const int N = 20; // Liczebność zbioru. int d[N]; // Procedura sortowania szybkiego // void Sortuj_szybko(int lewy, int prawy) { int i,j,piwot; i = (lewy + prawy) / 2; piwot = d[i]; d[i] = d[prawy]; for(j = i = lewy; i < prawy; i++) if(d[i] < piwot) { swap(d[i], d[j]); j++; } d[prawy] = d[j]; d[j] = piwot; if(lewy < j - 1) Sortuj_szybko(lewy, j - 1); if(j + 1 < prawy) Sortuj_szybko(j + 1, prawy); } Algorytmy klasyczne

34 // Program główny // int main() { int i; srand((unsigned)time(NULL)); cout << "Przed sortowaniem:\n\n"; // Najpierw wypełniamy tablicę d[] liczbami pseudolosowymi // a następnie wyświetlamy jej zawartość for(i = 0; i < N; i++) d[i] = rand() % 100; for(i = 0; i < N; i++) cout << setw(4) << d[i]; cout << endl; // Sortujemy Sortuj_szybko(0,N - 1); // Wyświetlamy wynik sortowania cout << "Po sortowaniu:\n\n"; for(i = 0; i < N; i++) cout << setw(4) << d[i]; cout << endl; system("pause"); } Algorytmy klasyczne

35 LICZBY FIBONACCIEGO Liczby naturalne tworzące ciąg o takiej własności, że kolejny wyraz (z wyjątkiem dwóch pierwszych) jest sumą dwóch poprzednich nazywa się liczbami Fibonacciego i pojawiają się w tak wielu sytuacjach, że wydaje się to niemożliwe. Algorytmy klasyczne Leonardo Pisano Fibonacci eoearth.org

36 Ciąg Fibonacciego to ciąg liczb określony rekurencyjnie w sposób następujący: F 0 = 0 F 1 = 1 F n = F n-1 + F n-2, dla n 2 *** Początkowe wartości tego ciągu to: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,... Podstawowy ciąg liczb Fibonacciego to: 1, 1, 2, 3, 5, 8,... Każda liczba w ciągu jest sumą dwóch poprzednich (poza pierwszą i drugą). Mamy więc do czynienia z ciągiem rekurencyjnym. Algorytmy klasyczne

37 Algorytmy klasyczne - przykład Przykład wykorzystania ciągu Fibonacciego

38 ZAPIS ALGORYTMU W C++ Algorytmy klasyczne

39 Ciąg Fibonacciego - iteracyjnie #include using namespace std; int main() { unsigned int ktora,w; cout<<"ktora liczbe z ciagu Fibonacciego chcesz zobaczyc"<>ktora; int a=1,b=1; if (ktora==0) w=0; else if (ktora==1 || ktora==2) w=1; else { for (int i=3;i<=ktora;i++) { w=a+b; a=b; b=w; } cout<<"Fib("<

40 Ciąg Fibonacciego - rekurencyjnie #include using namespace std; int fib (int); int main() { int n; cout<<"Podaj wart. do ciagu fibonnacciego: "<>n; cout<<"Fib("<1) return fib(n-1)+fib(n-2); } Algorytmy klasyczne

41 Zastosowanie ciągu Fibonacciego w przyrodzie WF6V9RQFz8&feature=player_embedded#! Algorytmy klasyczne

42 Schemat Hornera Algorytmy klasyczne Schemat Hornera powiązany z nazwiskiem Hornera - brytyjskiego matematyka żyjącego na przełomie XVIII i XIX wieku. Schemat Hornera to sposób obliczania wartości wielomianu dla danej wartości argumentu wykorzystujący minimalną liczbę mnożeń. Jest to również algorytm dzielenia wielomianu W(x) przez dwumian x - c.

43 Schemat Hornera pozwala na wyznaczenie ilorazu Q(x) z dzielenia wielomianu W (x ) = a n x n + a n -1 x n a 2 x 2 + a 1 x + a 0 przez dwumian x - c. Algorytmy klasyczne

44 ZAPIS ALGORYTMU W C++ Algorytmy klasyczne

45 #include using namespace std; int main() { int n; cout<<"podaj stopien wielomianu"<>n; int *a=new int [n]; cout<<"Podaj wartosci a"<>x; int w; w=a[0]; for (int i=1;i<=n;i++) { w=w*x+a[i]; } cout<<"wynik to: "<

46 Sito Eratostenesa Sito Eratostenesa - przypisywany Eratostenesowi z Cyreny algorytm wyznaczania liczb pierwszych z zadanego przedziału [2, n] Algorytmy klasyczne

47 czby,naturalnej,i,sito,eratostenesa Algorytmy klasyczne

48 ZAPIS ALGORYTMU W C++ Algorytmy klasyczne

49 #include using namespace std; int main() { bool tab[10000]; unsigned int i,ile,w; cout<<"Do jakiej liczby mam wypisywac liczby pierwsze?"<>ile; if (ile>10000) cout<<"Podales ich za duzo"; else { for (i=2;i<=ile;i++) tab[i]=true; for (i=2;i<=ile;i++) { if ((i!=2) && (i%2==0)) i++; w=i+i; while (w<=ile) { tab[w]=false; w+=i; } for (i=2;i<=ile;i++) if (tab[i]) cout<

50 Wieża Hanoi Łamigłówka polega na przełożeniu wszystkich krążków z środkowego drążka na dowolny sąsiedni drążek przestrzegając zasady, iż nie można położyć krążka większego na mniejszym oraz jednorazowo można przenieść tylko jeden krążek. Przekładanie nie jest trudne pod warunkiem, że odkryje się rekurencyjną zasadę przekładania. Zagraj! Algorytmy klasyczne

51 Wieża Hanoi edu.i-lo.tarnow.pl

52 Koniec. Zakończenie styczeń 2013 r. Programowanie strukturalne i obiektowe


Pobierz ppt "ALGORYTMY KLASYCZNE ________ FRAKTALE. Zastosowanie algorytmów iteracyjnych w rysowaniu fraktali FRAKTALE."

Podobne prezentacje


Reklamy Google