Fractali
Download
1 / 30

Fractali - PowerPoint PPT Presentation


  • 102 Views
  • Uploaded on

Fractali. Desenarea arborilor binari. Motto: Ionformatica nu inseamna calcul.Calculul este facut de masini de calcul.Informaticii ii apartine fantezia , imaginatia , demonstratia . Fractali. Generatitati.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Fractali' - kellsie


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Fractali

Desenareaarborilorbinari


Motto:

Ionformatica nu inseamnacalcul.Calcululestefacut de masini de calcul.Informaticii ii apartinefantezia, imaginatia, demonstratia.



Generatitati

Fractaliiau fostintrodusi in anul 1975 prinlucrarearevolutionara a matematicianuluifrancezBenoit Mandelbrot,' O teorie a seriilorfractale' cereunestetotodatadiverseleteoriidinainteasa.

El estecel care a inventatcuvantul ,,fractal", de provenientalatina(,,frângere"-a sparge in fragmentenenumarate).

Notiuneade fractal a aparut ca urmare a studiuluivietiireale in care informatiageneticacontinuta in nucleuluneicelule se repeta la diferitescari. Calculatorulperimte ca o anumitafigura (de ex:un segment) sa se transformeintr-o alta,formata din maimultefiguriinitiale (de ex: o liniefranta)sifiecarefiguraobtinutasa se transforme in mod asemanator (acestetransformarinecesitafoartemultecalcule).

Acesteformegeometrice au fostconsiderate in trecuthaotiicesau ,,aberatiigeometrice", iarmultedintreeleerauatat de complexeincatnecesitaucalculatoareperformantepentru a le vizualiza.Peparcurs, domeniistiintificeca fizica,chimia,biologiasaumeteorologiadescopereauelementeasemanatoare , care de multeoricontrazicaparenta ,daracesteadepasesc cu multcunostintele de matematica din liceu.

Inainte de a vaprezentacatevaexempletrebuiecunoscutenotiunile de baza pt a lucra in mod grafic.


Elemente de grafica
Elemente de grafica

Limbajul Pascal contine o serie de procedurisifunctii care permit realizareaunoraplicatiigrafice.Acesteasunt reunite un unitateaGRAPH ce se gaseste in subacatalogulUNITS.

Pentru ca o imagine sapoataapareapeecrancalculatorulutilizeaza o placa video care difera in functie de memoria video sialtiparametrii.Pt a accesa o placa video trebuiesafolosimanumiterutinespecialespecificelornumiteDriver-e.Limbajul Pascal detine o colectie de astfel de component software si in functie de placace a fostdetectata de sistem se incearca un driver saualtul. Acestefisiere au extensia “bgi “ .In continuare ne vomreferidoar la driverulVGA ( Video Graphics Array ) dezvoltat de firma IBM.Driverul VGA poate lucre in maimultemoduriinsavom prefer modul standard de inaltarezolutie“VGAHI”( constanta de tip intreg) cepoateafisa 640x480 puncte in 16 culori.


Selectarea driver-uluisi a modului de lucru se face prinutilizareaproceduriiinitgraph. Aceasta are 3 parametrii: gdriver (de tip integer) care continecodulasociatdrever-ului, gmode(de tip integer) care retinemodul de lucrusi o variabila de tip string, care aratacaleacatreunitateaGRAPH.Formagenerala o proceduriieste:

initpraph(gdriver,gmode, ‘cale’); .

Primiidoiparametriisunttransmisiprinreferinta.


Initializarea sitemului grafic se poate face in 2 feluri
Initializareasitemuluigrafic se poate face in 2 feluri:

1) Prin a solicitasa se identifice automat placagraficasicorespunzatoreisa se incarce un naumit driver sisa se selectezemodul de lucru

  • procedure initg;

  • begin

  • gdriver:= detect;

  • initgraph (gdriver,gmode, ‘c:\tp\bgi’);

  • if graphresult <> 0 then

  • begin

  • writeln (‘Tentativaesuata!”);

  • halt

  • end

  • end;

    Constanta detect are valoarea 0 si se specificaproceduriiidentificarea automata a driver-uluisi a modului de lucru.


2) Prinindicarea cu ajutorulprimilor 2 parametriaiunu driver si a unui mod de lucrusolicitate de progamator

  • griver:= VGA;

  • gmode:=VGAHI;

  • initgraph (gdriver,gmode, ‘c:\tp\bgi’);

  • if graphresult <> 0 then

  • begin

  • writeln (‘Tentativaesuata!”);

  • halt

  • end

  • end;

    Tentativa de initializaregraficapoateesua din diverse motive, cum arfilipsaunitatiiGRAPH,calea indicate gresitetc.Testarea se realizeaza cu functiaintreagagraphresult care returneaza 0 in cazafirmativsi o valoarediferita de 0 in cazcontrar.


Elementeleuni fractal

1.Initiatorul

2.Legea de constructie

3.Procesul de generare


Copac fractal


Primiifractalifaimosi

Triunghiul lui Sierpinski

Sita lui Sierpinski

Covorul lui Sierpinski 1

Covorul lui Sierpinski 2


Praful lui Cantor

Curba lui Koch


FulgulluiCoch



Arborelebinar fractal


Definitie
Definitie

  • Un arbore binar este o multime finita de noduri care este fie vida,fie reprezinta un arbore ordonat in care fiecare nod are cel mult 2 descendenti.

  • Din definitie rezulta ca un arbore binar contine cel mult doi sub-arbori binari(stang sau drept).Ei se obtin deci prin suprimarea radacinii si a muchiilor incidente cu aceasta.Oricare din ei poate sa fie vid.Daca arborele binar este format dintr-un singur nod,atunci ambii subarbori sunt vizi.

  • Un nod fara descendenti se numeste nod terminal sau frunza.

  • Un arbore binar in care fiecare nod care nu este terminal are exact doi descendenti,se numeste arbore binar complet


Se da un segment AB. Cu ajutorul lui se construieste un arbore,asa cum se vede in figura de mai jos:

Lungimea fiecarei ramuri este o treime din lungimea initiala a segmentului .Fiecare latura se transforma in mod asemanator.Se cere sa se vizualizeze figura astfel rezultata ,dupa 1s transformari.


Pentru obtinerea ramurilor se procedeaza astfel: arbore,asa cum se vede in figura de mai jos:

  • se considera punctul situat pe dreapta determinata de segment si pentru care avem:

    k= CA/CB=3 ; X=(X1-3*x2)/(1-3);

    y=(y1-3*y2)/(1-3)=(3*y2-y1)/2;

  • se roteste acest punct in jurul punctului B (x2,y2) cu un unghi de π/4;

  • se rotestepunctul in jurullui B cu unghiul

    -π/4

    In urmaacesteirotatii se obtincoordonatelepunctelor care ,impreuna cu punctulB,determinasegmentelececonstituieramurilearborelui.


Procedura arbore,asa cum se vede in figura de mai jos:desenez are ca parametri de intrarecoordonateleunui segment ,numarul de transformariefectuate(n) sinumarul de transformari care trebuieefectuate (1s).In cazul in care nu s-au efectuattoatetransformarile ,se treseazasegmentul (cu o culoareoarecare), se calculeazacoordonatelepunctelor care determinaramurilesi,pentrufiecare segment ,se reapeleazaprocedura.


Programul de desenare a arborilor
Programul arbore,asa cum se vede in figura de mai jos: de desenare a arborilor :

  • uses graph,crt;

  • var gdriver,gmode,1s:integer

  • xmax,ymax:integer;

  • procedure initg;

  • ....

  • procedure retplan (xc,yx,x1,y1:integer;x,y :integer;unghi:real);

  • ...

  • procedure desenez(x1 ,y1 x2,y2,n,ls:integer);

  • varx,y :integer;

  • begin

  • if n<=1s then


  • begin arbore,asa cum se vede in figura de mai jos:

  • setcolor(1+random(15));

  • moveto(x1,y1);

  • lineto(x2,y2);

  • rotplan(x2,y2,(3*x2-x1) div 2, (3*y2-y1) div 2,x,y,pi?4);

  • desenez (x2,y2,x,y,n+1,1s);

  • end

  • end;

  • begin

  • randomize;

  • write ( ‘1s=’);readln(1s);

  • initg;

  • setbkcolor(white);

  • desenez (getmaxx div 2, getmaxy, getmaxx div 2, getmaxy-250,1,1s);

  • readln

  • end.


Aplicatie
Aplicatie arbore,asa cum se vede in figura de mai jos:

Pentru evidenţa elevilor unei şcoli se defineşte un arbore binar de căutare, în care fiecare nod va memora numărul matricol, numele şi numărul de absenţe ale unui elev. Căutarea în arbore se va face după numărul matricol al elevilor. Scrieţi un program care, prin intermediul unui meniu, selectează în mod repetat, atâta timp cât utilizatorul doreşte acest lucru, una din următoarele acţiuni:

  • adăugarea unui elev;

  • afişarea absenţelor pentru numărul matricol minim;

  • afişarea absenţelor pentru numărul matricol maxim;

  • modifică numărul de absenţe al unui elev pentru care se cunoaşte numărul matricol;

  • afişează toţi elevii al căror nume începe cu litera „B”.


  • program aplicatie; arbore,asa cum se vede in figura de mai jos:

  • type pnod=^nod;

  • nod=record

  • nr:integer;

  • nume:string;

  • abs:integer;

  • st, dr: pnod;

  • end;

  • var r:pnod; n,op: integer; num:string;

  • abs1:integer; exista:boolean;

  • procedure creare (var p:pnod;n:integer; num:string; abs1:integer);

  • {creeaza un nod al arborelui ce va contine un elev cu

  • numarul matricol n, numele num si nr. de absente abs1}

  • begin

  • if p<>nil then

  • begin

  • if n<p^.nr then creare(p^.st, n, num, abs1)

  • else

  • if n>p^.nr then creare(p^.dr, n, num, abs1)

  • else writeln(' elevul exista')

  • end else begin

  • new(p); p^.nr:=n;

  • p^.nume:=num;

  • p^.abs:=abs1;

  • p^.st:=nil;p^.dr:=nil;

  • end;

  • end;


  • procedure SRD(p:pnod); arbore,asa cum se vede in figura de mai jos:

  • begin

  • if p<>nil then begin

  • SRD(p^.st);

  • writeln(' ',p^.nr,' ',p^.nume,' ',p^.abs);

  • SRD(p^.dr);

  • end;

  • end;

  • function min(p:pnod):integer;

  • { cheia minima se gaseste in nodul cel mai

  • din stinga, pornind de la radacina}

  • begin

  • if p^.st<>nil then min:=min(p^.st)

  • else min:=p^.abs;

  • end;

  • function max(p:pnod):integer;

  • {cheia maxima se gaseste in nodul cel mai

  • din dreapta, pornind de la radacina}

  • begin

  • if p^.dr<>nil then max:=max(p^.dr)

  • else max:=p^.abs;

  • end;


  • procedure elevi_B(p:pnod); arbore,asa cum se vede in figura de mai jos:

  • { afiseaza elevii care au numele incepind cu litera B}

  • begin

  • if p<>nil then begin

  • if (p^.nume[1]='B') then begin

  • exista:=true;

  • writeln(' ',p^.nr,' ',p^.nume,' ',p^.abs);

  • end;

  • elevi_B(p^.st); elevi_B(p^.dr);

  • end

  • end;

  • procedure modifica_abs(p:pnod;n:integer);

  • { modifica nr. de absente pentru care

  • se cunoaste numarul matricol}

  • begin

  • if p<>nil then begin

  • if n<p^.nr then modifica_abs(p^.st, n)

  • else if n>p^.nr then

  • modifica_abs(p^.dr, n)

  • else begin

  • write(' absenta=');

  • readln(abs1);

  • p^.abs:=abs1;

  • end

  • end

  • else writeln(' Elevul cu numarul matricol ',n,' nu exista');

  • end;


  • begin arbore,asa cum se vede in figura de mai jos:

  • r:=nil;

  • repeat

  • writeln(' alegeti optiunea:');

  • writeln(' 1 - ADAUGAREA unui elev');

  • writeln(' 2 – Absente pentru matricol MINIM');

  • writeln(' 3 – Absente pentru matricol MAXIM');

  • writeln(' 4 - MODIFICA numarul de absente');

  • writeln(' 5 - ELEVII cu numele - B');

  • writeln(' 6 - LISTA tuturor elevilor');

  • writeln(' 0 - IESIRE');

  • writeln;

  • readln(op);

  • case op of


  • 1:begin arbore,asa cum se vede in figura de mai jos:

  • write(' numar matricol= '); readln(n);

  • write(' nume elev= '); readln(num);

  • write(' numar absente= '); readln(abs1);

  • creare(r,n,num,abs1);

  • end;

  • 2:begin writeln(' Valoarea absentei pentru matricol MINIM');

  • writeln(' min=',min(r));

  • end;

  • 3: begin writeln(' Valoarea absentei pentru matricol MAXIM');

  • writeln(' max=',max(r));

  • end;

  • 4: begin write(' numar matricol=');

  • readln(n);

  • modifica_abs(r,n);

  • end;

  • 5:begin exista:=false;

  • elevi_B(r);

  • if not exista then

  • writeln(' nu exista elevi cu numele - B');

  • end;

  • 6:begin writeln;

  • writeln(' lista tuturor elevilor');

  • SRD(r);

  • end;

  • end;

  • until op=0;

  • readln;

  • end.


Realizatori arbore,asa cum se vede in figura de mai jos::

CALUGARANDREI

CosteaAnneliese

CREMINEDENISA


Rolurile arbore,asa cum se vede in figura de mai jos: in echipa


BIBLIOGRAFIE: arbore,asa cum se vede in figura de mai jos:

  • ManuanualinformaticaintensivEditura L&S Soft

  • http://cnamd.wikispaces.com

  • www.google.ro (imagini)

  • http://facultate.regielive.ro

  • http://ro.wikipedia.org