ALGORYTMY KLASYCZNE ________ FRAKTALE

Slides:



Advertisements
Podobne prezentacje
DOWODY TWIERDZENIA PITAGORASA.
Advertisements

TRÓJKĄTY Karolina Szczypta.
Materiały pochodzą z Platformy Edukacyjnej Portalu
Programowanie I Rekurencja.
Filip Andrzejewski Remigiusz Chiluta
Języki programowania C++
Konstrukcje trójkątów
Trójkąty.
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Projekt „AS KOMPETENCJI’’
#include #include main () { cout
Algorytmy Marek Pudełko
Fraktale.
Wzory skróconego mnożenia Klikaj....
Fraktale Zobaczyć świat w ziarenku piasku, Niebiosa w jednym kwiecie z lasu. W ściśniętej dłoni zamknąć bezmiar, W godzinie - nieskończoność czasu.
Ułamki zwykłe i liczby mieszane.
Podstawy programowania
Fraktale Michał Nowakowski Dariusz Cieślicki Wojciech Maciejewski.
Instrukcje sterujące część 2
Semantyczna poprawność algorytmów – dowodzenie za pomocą niezmienników
Georg Cantor i jego zbiór
Jak zrobić ażurową gwiazdę z papieru?
Zadanie Dev C++.
Przekazywanie argumentów
Pętla do ... While C++ Źródło:
Programowanie w Logo Projekt Edukacyjny.
Programowanie strukturalne i obiektowe
Fraktale.
ITERACJA - powtórzenie
FRAKTALE   „Geometria fraktalna spowoduje, że zobaczysz świat innymi oczyma. W dalszej lekturze kryje się niebezpieczeństwo. Możesz utracić swój nabyty.
i Rachunek Prawdopodobieństwa
Dane INFORMACYJNE (do uzupełnienia)
Wielokąty foremne.
Instrukcja for. Instrukcja warunkowa mgr inż. Agata Pacek.
Wielokąty foremne.
Fraktale.
Konstrukcje GEOMETRYCZNE.
Składnia pętli do … while do instrukcja while (wyrażenie); gdzie: instrukcja – instrukcja pojedyncza lub blok instrukcji wyrażenie – wyrażenie przyjmujące.
Programowanie strukturalne i obiektowe C++
Instrukcje iteracyjne
Programowanie strukturalne i obiektowe C++
Fraktale Historia Fraktali
Na Ziemi nie ma tych lądów, rzek i mórz! To sztuczne obrazy!
Programowanie strukturalne i obiektowe C++
Derekursywacja i optymalizacja kodu
TRÓJKĄT SIERPIŃSKIEGO
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Magiczne kwadraty Przygotowali: Paulina Zmuda Maja Grześkiewicz
Rekurencja.
Algorytm znajdowania Największego Wspólnego Dzielnika.
Algorytmy – wprowadzenie
Temat 3: Podstawy programowania Algorytmy – 2 z 2 _________________________________________________________________________________________________________________.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
„Między duchem a materią pośredniczy matematyka. ”
Programowanie I Rekurencja.
Fraktal to zbiór o skomplikowanej budowie. Niezależnie od tego jak mały jego fragment będziemy oglądać będzie on równie skomplikowany jak całość.
Praca wykonana przez Kamila Jareckiego, Bartosza Drabarka i Jakuba Litke.
Fraktale.
FRAKTALE Maciej Przybysz IIa Piotr Puchała IIa.
Aleksander Wysocki IIc
Liczby 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, …(i tak dalej) nazywamy liczbami naturalnymi. Tak jak z liter tworzy się słowa, tak z cyfr tworzymy liczby. Dowolną.
Algorytmy. Co to jest algorytm? Przepis prowadzący do rozwiązania zadania.
czyli geometria (i nie tylko) w sztuce. Fraktale w Logo Komeniuszu
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
UŁAMKI ZWYKŁE ?.
F r a k t a l e.
SKALA 2 :1 1 : 1 1 : 2 OBRAZ DWUKROTNIE POWIĘKSZONY 8 cm 6 cm
FRAKTALE MATEMATYCZNE.
FRAKTAL Słowo fraktal pochodzi z łaciny od słowa fractus – złamany. Co ciekawe nie istnieje jeszcze ścisła definicja fraktalu. Podany wyżej cytat Jamesa.
Programowanie I Rekurencja.
Zapis prezentacji:

ALGORYTMY KLASYCZNE ________ FRAKTALE

Zastosowanie algorytmów iteracyjnych w rysowaniu fraktali FRAKTALE Zastosowanie algorytmów iteracyjnych w rysowaniu fraktali

FRAKTALE 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). http://pl.wikipedia.org/wiki/Fraktal

FRAKTALE http://wazniak.mimuw.edu.pl/index.php?title=Grafika:GKIW_M6_Slajd_28.png

FRAKTALE http://wazniak.mimuw.edu.pl/index.php?title=Grafika:GKIW_M6_Slajd_28.png

Śnieżynka Kocha FRAKTALE 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.

Śnieżynka Kocha http://talina.boo.pl/gimnazjum/fraktale/www/lubinski/platek.html

Najpierw rysujemy trójkąt równoboczny FRAKTALE 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 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.

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

Śnieżynka Kocha FRAKTALE http://nauczyciel.pl/page.php/resources/view_all?id=geometric_sequence_account_constant_ratio_common_page_9 http://shinemedia.pl/?page_id=298

Dywan Sierpińskiego FRAKTALE 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. www.algorytmy.com/iteracyjne/*e2*97*8f+Dywany+Sierpi*c5*84skiego+(Opis)+*e2*97*8f

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

FRAKTALE 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. www.algorytmy.com/iteracyjne

Kolejne kroki są następujące: FRAKTALE Kolejne kroki są następujące: W kolejnych krokach postępujemy podobnie jak poprzednio. Po n krokach kwadrat będzie miał, aż 1+8+82+83+ .... +8n-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. www.algorytmy.com/iteracyjne

Jak konstruuje się Trójkąt Sierpińskiego FRAKTALE 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. www.algorytmy.com/iteracyjne

FRAKTALE 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. www.algorytmy.com/iteracyjne

Kolejne kroki są następujące: FRAKTALE Kolejne kroki są następujące: W kolejnych krokach postępujemy podobnie jak poprzednio. Po n krokach kwadrat będzie miał, aż 1+3+32+33+ .... +3n-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. www.algorytmy.com/iteracyjne

Trójkąt Sierpińskiego FRAKTALE Trójkąt Sierpińskiego http://nauczyciel.pl/page.php/resources/view_all?id=geometric_sequence_account_constant_ratio_common_t_page_7 http://agn.oeiizk.waw.pl/index.php?option=com_content&view=article&id=9&Itemid=10

Dywany Sierpińskiego FRAKTALE www.algorytmy.com/iteracyjne/*e2*97*8f+Dywany+Sierpi*c5*84skiego+(Opis)+*e2*97*8f

Dywany Sierpińskiego FRAKTALE www.algorytmy.com/iteracyjne/*e2*97*8f+Dywany+Sierpi*c5*84skiego+(Opis)+*e2*97*8f

iteracja i rekurencja ALGORYTMY KLASYCZNE mmazur.eu.org

Algorytmy klasyczne 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. http://pl.wikipedia.org/

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

ZAPIS ALGORYTMU W C++ http://shinemedia.pl

Algorytm Euklidesa – sposób I Algorytmy klasyczne Algorytm Euklidesa – sposób I #include <iostream> #include<cstdlib> 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"); } http://edu.i-lo.tarnow.pl/inf/utils/010_2010/0208.php

Algorytm Euklidesa – sposób II Algorytmy klasyczne #include <iostream> #include<cstdlib> 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"); http://edu.i-lo.tarnow.pl/inf/utils/010_2010/0208.php

Metoda „dziel i zwyciężaj” Algorytmy klasyczne Metoda „dziel i zwyciężaj” 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 http://edu.i-lo.tarnow.pl/inf/alg/003_sort/0018.php

Idea sortowania szybkiego jest następująca: Algorytmy klasyczne 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. http://edu.i-lo.tarnow.pl/inf/alg/003_sort/0018.php

Algorytmy klasyczne ZAPIS ALGORYTMU W C++ http://shinemedia.pl

Algorytmy klasyczne #include <iostream> #include <iomanip> #include <cstdlib> #include <time.h> 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); http://edu.i-lo.tarnow.pl/inf/alg/003_sort/0018.php

Algorytmy klasyczne // 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"; system("pause"); } http://edu.i-lo.tarnow.pl/inf/alg/003_sort/0018.php

Algorytmy klasyczne 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. Leonardo Pisano Fibonacci eoearth.org

Algorytmy klasyczne Ciąg Fibonacciego to ciąg liczb określony rekurencyjnie w sposób następujący: F0 = 0 F1 = 1 Fn = Fn-1 + Fn-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 - przykład Przykład wykorzystania ciągu Fibonacciego

Algorytmy klasyczne ZAPIS ALGORYTMU W C++ http://shinemedia.pl

Ciąg Fibonacciego - iteracyjnie Algorytmy klasyczne Ciąg Fibonacciego - iteracyjnie #include <iostream> #include <conio.h> using namespace std; int main() { unsigned int ktora,w; cout<<"ktora liczbe z ciagu Fibonacciego chcesz zobaczyc"<<endl; cin>>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("<<ktora<<") ="<<w; getch(); return 0;

Ciąg Fibonacciego - rekurencyjnie Algorytmy klasyczne Ciąg Fibonacciego - rekurencyjnie #include <iostream> #include <conio.h> using namespace std; int fib (int); int main() { int n; cout<<"Podaj wart. do ciagu fibonnacciego: "<<endl; cin>>n; cout<<"Fib("<<n<<") = "<<fib(n); getch(); return 0; } int fib(int n) if (n==0) return 0; else if (n==1) return 1; else if (n>1) return fib(n-1)+fib(n-2);

Zastosowanie ciągu Fibonacciego w przyrodzie Algorytmy klasyczne Zastosowanie ciągu Fibonacciego w przyrodzie http://www.youtube.com/watch?v=-WF6V9RQFz8&feature=player_embedded#! http://shinemedia.pl

Algorytmy klasyczne Schemat Hornera 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.

Algorytmy klasyczne Schemat Hornera pozwala na wyznaczenie ilorazu Q(x) z dzielenia wielomianu W(x) = anxn + an-1xn-1 + ... + a2x2 + a1x + a0     przez dwumian x - c.

Algorytmy klasyczne ZAPIS ALGORYTMU W C++ http://shinemedia.pl

Schemat Hornera #include <iostream> #include <conio.h> using namespace std; int main() { int n; cout<<"podaj stopien wielomianu"<<endl; cin>>n; int *a=new int [n]; cout<<"Podaj wartosci a"<<endl; for (int i=0;i<=n;i++) cout<<"a["<<i<<"] ="; cin>>a[i]; } int x; cout<<"Podaj x:"; cin>>x; int w; w=a[0]; for (int i=1;i<=n;i++) w=w*x+a[i]; cout<<"wynik to: "<<w; delete [] a; getch(); return 0;

Algorytmy klasyczne Sito Eratostenesa Sito Eratostenesa - przypisywany Eratostenesowi z Cyreny algorytm wyznaczania liczb pierwszych z zadanego przedziału [2, n] http://pl.wikipedia.org/wiki/Sito_Eratostenesa

Algorytmy klasyczne http://old.scholaris.pl/uruchom/faktoryzacja,liczby,naturalnej,i,sito,eratostenesa http://shinemedia.pl

Algorytmy klasyczne ZAPIS ALGORYTMU W C++

Sito Eratostenesa #include <iostream> #include <conio.h> using namespace std; int main() { bool tab[10000]; unsigned int i,ile,w; cout<<"Do jakiej liczby mam wypisywac liczby pierwsze?"<<endl; cin>>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<<i<<","; getch();

Algorytmy klasyczne 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! http://www.math.edu.pl/hanoi

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

Koniec. Zakończenie styczeń 2013 r. Programowanie strukturalne i obiektowe styczeń 2013 r. http://shinemedia.pl