Izmantojot rekursīvu procedūru, izveidojiet Pitagora koka figūru. Open Library - atvērta izglītības informācijas bibliotēka. Funkcija Pitagora koka konstruēšanai C valodā

Vēl viens piemērs varētu būt slavenais "Pitagora koks". To bieži attēlo, kā parādīts attēlā. 3.2. Katram no taisnleņķa trīsstūriem šajā kokā ir 45° iekšējais leņķis.

Atkal mēs izmantosim nejaušu skaitļu ģeneratoru, lai izveidotu vispārīgāku programmu, kas var ģenerēt ne tikai rīsus. 3.2, bet arī rada mazāk regulārus kokus. Attēlam leņķi iestatīti uz 45°. 3.2 parasti tiks iestatīts nejauši diapazonā no (45 - delta)° un (45+ delta)° , kur ir vērtība delta tiek norādīts kā ievades parametrs kopā ar parametru n, kas nosaka rekursijas dziļumu. Parastā versija, kas parādīta attēlā. 3.2, iegūts, precizējot delta= 0 un n = 7. Attēlā parametrs P nosaka trīsstūru skaitu ceļā no koka saknes līdz lapām. Programmas kodols būs rekursīvā funkcija kvadrāts_un_trijstūris ("kvadrāts un trīsstūris") ar parametru n, kas nosaka rekursijas dziļumu, kā pirmo argumentu. Ja parametra n vērtība ir lielāka par nulli, tad funkcijas kvadrāts_un_trijstūris uzdevums, kā noteikts tās nosaukumā, būs uzzīmēt tai virsū kvadrātu un trīsstūri un pēc tam vēl divas reizes izsaukt sevi ar atbilstošiem jaunajiem argumentiem, no kuriem pirmais ir iestatīts uz n-1. Kvadrāta lielumu un novietojumu pilnībā nosaka četri parametri: X0, Y0, a un j (skat. 3.3. att.). Lai uzzīmētu trīsstūri, ir ārkārtīgi svarīgi zināt leņķi a. Šis leņķis, izteikts grādos, ir vienāds ar 45+novirze, kur novirze ir vienāda ar vienu no veseliem skaitļiem no rindas -delta, -delta+I, ... , delta, kas izvēlēta nejauši. Attēlā 3.3 nepieciešamie punkti tiek numurēti ar secīgiem skaitļiem 0,1,2,3,4. Funkcijas izsaukumā ir norādītas punkta O koordinātas X0, Y0. Lai aprēķinātu atlikušos punktus, vispirms apsveram vienkāršāku situāciju ar j = 0, tas ir, kad kvadrāta mala 0 1 ieņem horizontālu pozīciju.

Šajā pozīcijā punktu koordinātas ir ļoti viegli noteikt. Οʜᴎ ir ierakstīti x un y masīvos. Tad visa konstrukcija tiek pagriezta ap punktu O ar leņķi j. Rotācijas rezultāts tiek ierakstīts xx un yy masīvos.

/* PYTH_TREE: Pitagora koka variants */

#include "math.h"

#include "stdlib.h"

#include "time.h"

#define pi 3.1415927

#include "stdio.h"

struct (pludināt xx; peldēt yy; int ii;) s;

void pfopen())( fp=fopen("scratch", "wb"); )

tukšs pmove(peldēt x, peldēt y)

(s.xx=x; s.yy=y; s.ii=0; /* 0 = pildspalva uz augšu */ /* 0 = pildspalva uz augšu */

fwrite(&s, s izmērs, 1, fp);

void pdraw(peldēt x, peldēt y)

(s.xx=x; s.yy=y; s.ii=1; /* 1 = pildspalva uz leju */ /* 1 = pildspalva uz leju */

fwrite(&s, s izmērs, 1, fp);

Void pfclose())( fclose(fp); )

tukšums kvadrāts_un_trijstūris(int n, peldēt x0, peldēt y0, peldēt a, peldēt phi)

( peldēt x, y, xx, yy, cphi, sphi, c1, c2, b, c,

alfa, kalfa, salfa;

int i, novirze; /* phi un alfa radiānos */

/* delta grādos */

if(n==0) atgriešanās; /* leņķi phi un alfa radiānos */

/* leņķa delta grādos */

novirze=rand()%(2*delta+1)-delta;

alfa=(45+novirze)*pi/180.0;

x=x=x0; x=x=x0+a;

y=y=y0; y=y=y0+a;

calpha=cos(alfa); salfa=sin(alfa);

c=a*calpha; b=a*salfa;

/* Rotācija ap (x0, y0) caur leņķi phi ; */

/* Pagriezt ap punktu (x0, y0) par leņķi phi;*/

cphi=cos(phi); sphi=sin(phi);

c1=x0-x0*cphi+y0*sphi;

c2=y0-x0*sphi-y0*cphi;

priekš (i=0; i<5; i++)

(xx[i]=x[i]*cphi-y[i]*sphi+c1;

yy[i]=x[i]*sphi+y[i]*cphi+c2;

priekš (i=0; i<5; i++) pdraw(xx[i],yy[i]);

kvadrāts_un_trijstūris(n-1, xx, yy, c, phi+alfa);

kvadrāts_un_trijstūris(n-1, xx, yy, b, phi+alfa-0,5*pi);

pfopen(); laiks(&sēkla); srand((int)sēkla);

printf(" Iestatīt delta leņķi grādos (0< delta < 45) ");

scanf("%d", &delta);

printf(" Iestatīt rekursijas dziļumu n "); scanf("%d", &n);

kvadrāts_un_trijstūris(n, 0,0, 0,0, 1,0, 0,0);

Šī programma ģenerē failu SKRĀPĒT kas jāapstrādā programmai G PLOT no lekcijas 2. Programmas grafiskais rezultāts priekš delta= 30 un n = 7 ir parādīts attēlā. 3.4.

Sveiki, draugi, kurus interesē fraktāļi un citi. Sākot ar šo brīdi, es uzsāku virkni ierakstu, kuros izskaidrošu vienkāršāko fraktāļu konstruēšanas principus. Mācīties vienmēr ir interesanti, un es tev palīdzēšu šajā jautājumā: turpmāk mēs zināsim daudzus, daudzus fraktāļus. Lorenca atraktors rakstā par haosu bija piemērs tam. Un šodien es jums pastāstīšu par Pitagora koku.

Tātad, kas tas ir? Pitagora koks ir vienkāršākais fraktālis, ko var uzzīmēt uz papīra. Bet kāpēc šo fraktāli sauc par Pitagora koku? Fakts ir tāds, ka šeit ir saistība ar Pitagora teorēmu - vienu no Eiklīda ģeometrijas pamatiem. Atcerieties viņu? Atgādināšu: a2 + b2 = c2 (kāju garumu kvadrātu summa ir vienāda ar hipotenūzas garuma kvadrātu). Šī teorēma ir zināma kopš seniem laikiem, šobrīd ir vairāk nekā 400 teorēmas pierādījumu, un tikai Pitagors bija pirmais, kas to pierādīja ģeometriski. Viņš uzcēla šādu figūru: viņš paņēma taisnleņķa trīsstūri un uz tā malām uzzīmēja kvadrātus. Šo figūru sauc arī par "Pitagora biksēm":

Ja mēs turpinām šo konstrukciju rekursīvi, mēs nonākam pie Pitagora koka:
1 iterācija (mūsu Pitagora kokā leņķis ir 45 grādi):


Otrā iterācija:


Trešā iterācija:


Desmitā iterācija:


Svarīga Pitagora koka īpašība: ja pirmā kvadrāta laukums ir vienāds ar vienu, tad katrā līmenī kvadrātu laukumu summa arī būs vienāda ar vienu.
Ja leņķi maina no 45 grādiem, tad var konstruēt cita veida Pitagora kokus.
Šeit, piemēram, ir tā sauktais “vēja izpūstais Pitagora koks”:


Daži fraktāļu grafikas ģeneratori ievieš formulu fraktāļu konstruēšanai, pamatojoties uz Pitagora koku. Šī ieviešana ļoti atgādina IFS sistēmu, it īpaši, ja kvadrātus aizstājat ar taisnstūriem vai iegarenām formām.
Tas arī viss šodienai, līdz nākamajām sanāksmēm, kurās būs daudz citu interesantu fraktāļu)

Īpatnības

Viena no Pitagora koka īpašībām ir tāda, ka, ja pirmā kvadrāta laukums ir vienāds ar vienu, tad katrā līmenī kvadrātu laukumu summa arī būs vienāda ar vienu.

Ja klasiskajā Pitagora kokā leņķis ir 45 grādi, tad ir iespējams konstruēt arī vispārinātu Pitagora koku, izmantojot citus leņķus. Šo koku bieži sauc Vēja izpūsts Pitagora koks. Ja zīmējam tikai segmentus, kas kaut kādā veidā savieno izvēlētos trīsstūru “centrus”, mēs iegūstam kails Pitagora koks.

Piemēri

    Pitagora koks 1.gif

    Klasisks Pitagora koks

    Pitagora koks 2.gif

    Vēja pūsts Pitagora koks

    Pitagora koks 3.gif

    Pitagora pliks koks

    Pitagora koks 4.gif

    Atsegtais Pitagora koks, ko pūta vējš

Skatīt arī

Uzrakstiet atsauksmi par rakstu "Pitagora koks"

Pitagora koku raksturojošs fragments

Kamēr Krievija bija pa pusei iekarota, Maskavas iedzīvotāji bēga uz tālām guberņām, un milicija pēc milicijas cēlās, lai aizstāvētu tēvzemi, mums, kas tolaik vēl nedzīvojām, neviļus šķiet, ka visi krievu cilvēki, gan jauni, gan veci, bija. aizņemts tikai ar to, lai upurētu sevi, glābtu tēvzemi vai raudātu par tās iznīcināšanu. Tā laika stāsti un apraksti bez izņēmuma runā tikai par pašaizliedzību, tēvzemes mīlestību, krievu izmisumu, bēdām un varonību. Patiesībā tas tā nebija. Mums šķiet, ka tas tā ir tikai tāpēc, ka mēs no pagātnes redzam vienu tā laika kopīgo vēsturisko interesi un neredzam visas tās personiskās, cilvēciskās intereses, kas bija tā laika cilvēkiem. Tikmēr patiesībā tās tagadnes personīgās intereses ir tik daudz nozīmīgākas par vispārējām interesēm, ka to dēļ vispārējā interese nekad nav jūtama (pat nepamanāma). Lielākā daļa tā laika cilvēku nepievērsa nekādu uzmanību vispārējai lietu gaitai, bet vadījās tikai no tagadnes personīgajām interesēm. Un šie cilvēki bija tā laika visnoderīgākās figūras.
Tie, kas centās izprast lietu vispārējo gaitu un gribēja tajā piedalīties ar pašatdevi un varonību, bija visnejēdzīgākie sabiedrības pārstāvji; viņi redzēja visu no iekšpuses, un viss, ko viņi darīja labā, izrādījās bezjēdzīgas muļķības, piemēram, Pjēra, Mamonova pulki, kas izlaupīja krievu ciematus, kā dāmu plūktas pūkas un nekad nesasniedz ievainotos utt. Pat tie, kas Vēloties būt gudriem un paust savas jūtas, viņi runāja par pašreizējo situāciju Krievijā, savās runās neviļus nesot vai nu izlikšanās un melu, vai bezjēdzīga nosodījuma un dusmu nospiedumus uz cilvēkiem, kas apsūdzēti par kaut ko tādu, par ko neviens nevar būt vainīgs. Vēstures notikumos visredzamākais ir aizliegums ēst zināšanu koka augļus. Tikai neapzināta darbība nes augļus, un cilvēks, kurš spēlē lomu vēsturiskā notikumā, nekad nesaprot tā nozīmi. Ja viņš mēģina to saprast, viņu pārsteidz tā bezjēdzība.

Pētot elektrokardiogrammas notikumu noteikšanas algoritmus sava darba pētnieciskajai daļai, atklāju, ka kardiogrammas R-R intervāla ilgums, kas aprēķināts pat līdz otrajai zīmei aiz komata, diezgan precīzi raksturo konkrētā cilvēka sirds un asinsvadu sistēmu. Tā kā ar fraktāļu ģeometriju aizraujos jau labu laiku, galvā uzreiz radās doma, kā kādam vienkāršam fraktāļu objektam piešķirt “personiskās” īpašības.

Tā parādījās “Elektrokardiogrāfiskais Pitagora koks”.

Teorētiskā daļa – 1. Par elektrokardiogrammu

Grafisks ieraksts par potenciālu starpību, kas rodas starp dažādām sirds muskuļa daļām tās ierosināšanas laikā, tiek saukts par elektrokardiogrammu (EKG). Šo sirds potenciālu orientāciju un lielumu elektrokardiogrammā izsaka viļņu amplitūda un to virziens (polaritāte) attiecībā pret izoelektrisko līniju. Un tie aptver diapazonu 0,15...300 Hz pie signāla līmeņa 0,3...3 mV.

Parasta EKG sastāv no viļņiem un horizontāli izvietotiem līniju segmentiem starp tiem (1. attēls).

1. attēls – normālas elektrokardiogrammas shematisks attēlojums.

Klīniskajā praksē vadus izmanto no dažādām ķermeņa virsmas daļām. Šos vadus sauc par virspusējiem. Ierakstot EKG, parasti tiek izmantoti 12 parastie vadi, seši no ekstremitātēm un seši no krūtīm. Pirmos trīs standarta pārsvarus ierosināja Einthovens. Sirdsdarbības ātrumu (HR) nosaka viena sirds cikla ilgums, t.i. pēc R – R intervāla ilguma.

Standarta un ērtākais pulsa noteikšanai ir svins II pēc Einthovena, jo tajā R vilnim ir vislielākā amplitūda.

Praktiskā daļa – 1

Aprēķiniem izmantosim reālu veselīga cilvēka EKG II vadībā pēc Einthovena, kas iegūta no fizioloģisko signālu datu bāzes.

EKG parametri:
ADC izšķirtspēja 12 biti;
Iztveršanas frekvence 100 Hz;
Ilgums 10 sekundes;

2. attēls – normālas EKG attēls no datu bāzes.

Tālāk mēs noteiksim QRS kompleksu, lai pēc tam iegūtu no tā R vilni.

Izklausās sarežģītāk, nekā izskatās:

Kur x(n)- EKG signāls, N- loga platums, kurā tiek aprēķināta pirmās kārtas starpība, kvadrātā un svērta, izmantojot koeficientu (N-i+1).

Svēruma koeficients lineāri samazinās, sākot no pašreizējās starpības, līdz starpībai, kas aprēķināta plkst N skaita agrāk, kas nodrošina izlīdzinošu efektu.

Turpmākā izlīdzināšana tiek veikta, izmantojot mainīgā vidējā filtru M punkti:

Pie paraugu ņemšanas frekvences 100 Hz filtra loga platums ir iestatīts kā M=N=8. Šis algoritms katram QRS kompleksam rada vienu maksimumu un nomāc P un T viļņus Apstrādes rezultātā mēs iegūstam šādu EKG skatu (3. attēls).

3. attēls – EKG attēls pēc filtrēšanas.

R viļņa atrašanu apstrādātajā signālā var veikt, izmantojot vienkāršu pīķa noteikšanas algoritmu:
1. Signāla fragmenta skenēšana g(n), kurā sagaidāma maksimuma klātbūtne, un maksimālās vērtības noteikšana gmax.
2. sliekšņa noteikšana kā noteikta daļa no maksimuma, Th=0,8gmax.
3. Visiem g(n)>Th tiek atlasīti tie rādījumi, kuriem atbilstošās vērtības g(n) vairāk nekā noteikts skaits M iepriekšējie vai nākamie lasījumi g(n).

Šādi definētais komplekts (p) satur visu signālā atrasto indeksus g(n) virsotnes
Artefaktu radītās virsotnes var noraidīt ar papildu nosacījumiem, piemēram, minimālo intervālu starp divām blakus esošām virsotnēm.

4. attēls – EKG attēls ar R-viļņiem.

Tālāk seko pats vienkāršais uzdevums - noteiktā EKG R-R intervāla vidējā garuma noteikšana. Un šajā gadījumā tas ir vienāds ar 733 ms. Izklaidei aprēķināsim sirdsdarbības ātrumu: 60/0.733=81.85 sitieni/min. Tagad mums ir vērtība, kas raksturo konkrēta cilvēka sirds darbu.

Neliels skaidrojums:
Sirds nav metronoms, tā nevar pārspēt sitienu ar vienādiem laika intervāliem starp sitieniem. R-R intervāls veselam cilvēkam svārstās nelielās robežās. Ja intervāla svārstības ir ievērojamas, tas norāda uz aritmiju un citu traucējumu klātbūtni. Svārstību mehānisms ir ļoti sarežģīts procesu kopums, kas saistīts ar konkrētas sirds elektrisko vadītspēju.

Izmantojot vidējā R-R intervāla vērtību kā parametru, veidojot Pitagora koku, varat piešķirt tam “unikālas” (“personiskas”) pazīmes.

Teorētiskā daļa – 2. Par fraktāļiem

Fraktāļi ir ģeometriski objekti: līnijas, virsmas, telpiski ķermeņi, kuriem ir ļoti izturīga forma un kuriem piemīt līdzības īpašība. Fraktāļu teorijas pamatlicējs, franču-amerikāņu matemātiķis Benuā Mandelbrots, terminu fraktāls izveidoja no latīņu divdabas fractus. Atbilstošais darbības vārds frangere tiek tulkots kā lauzt, lauzt, t.i. izveidot neregulāras formas fragmentus. Pašlīdzība iepriekš nosaka fraktāļu objekta galveno ģeometrisko pazīmju mēroga invarianci (mērogošanu), to nemainīgumu, mainoties mērogam. Fraktāļu objektu robaino līniju atkārtojamība var būt pilnīga (šajā gadījumā mēs runājam par regulāriem fraktāliem), vai arī var novērot kādu nejaušības elementu (šādus fraktāļus sauc par nejaušiem). Nejaušo fraktāļu struktūra mazos mērogos nav gluži identiska visam objektam, taču to statistiskie raksturlielumi ir vienādi.

Pitagora koks ir ģeometriski regulāra fraktāļu veids, kura pamatā ir figūra, kas pazīstama kā "Pitagora bikses".

Ģeometriskā fraktāļa konstruēšanas princips ir rekursija.

Praktiskā daļa – 2

Pitagora koka konstruēšanas algoritms:
1) Konstruēt vertikālu segmentu;
2) No šī segmenta augšējā gala mēs rekursīvi uzbūvējam vēl 2 mazāka garuma segmentus 90° leņķī viens pret otru;
3) Izsauciet funkciju divu secīgu segmentu konstruēšanai katram koka zaram;

Funkcija Pitagora koka konstruēšanai C valodā.

Void Draw(double x, double y, double L, double a) ( ja(L > max) (L*=0,7; pārvietot uz(x,y); lineto((int)(x+L*cos(a)) ,(int)(y-L*sin(a))) (x,y,L,a-Pi/m);
5. attēls – Pitagora koks EKG pie R-R: 733 ms.

Vienīgais, kas jāmaina, ir kā mainīgo L izmantot aprēķināto vidējā R-R EKG intervāla garumu programmā.

Tādā veidā jūs varat iegūt "personīgu" Pitagora koku, kas atkarībā no fiziskās aktivitātes "elpos", un zaru garums un to vijums "pēc iespējas precīzāk aprakstīs" jūsu personību.

Bibliogrāfija

1. Kompleksu fizioloģisko signālu izpētes resurss:

Ja lielākais laukums ir L × L, viss Pitagora koks cieši iekļaujas 6L × 4L kastē. Koka smalkumi atgādina Levy līkni.

Būvniecība

Pitagora koka celtniecība sākas ar kvadrātu. Virs šīs teritorijas ir uzbūvēti divi kvadrāti, katrs samazināts lineārais koeficients½ √ 2, tāpēc kvadrātu leņķi sakrīt pa pāriem. Tāda pati procedūra tiek piemērota rekursīvi, pēc tam diviem - vēl mazākiem kvadrātiem, bezgalīgi. Zemāk esošajā attēlā parādītas dažas pirmās iterācijas būvniecības procesā.

Kvadrāts

N - konstrukcijā tiek pievienoti 2n (½ √ 2) N laukumi, uz kopējo platību 1, tādējādi šajā daļā koks varētu augt bez ierobežojumiem N → ∞. Tomēr daži apgabali pārklājas, sākot ar 5. iterācijas secību, un kokam faktiski ir ierobežots laukums, jo tas atbilst izmēriem 6 × 4. Nav grūti pierādīt, ka Pitagora koka laukumam A ir jāatrodas diapazons no 5<А <18, которая может быть сужена в дальнейшем дополнительными усилиями.

Leņķa maiņa

Interesantu variāciju kopu var izveidot, saglabājot vienādsānu trīsstūri, bet mainot bāzes leņķi (90 grādi standarta Pitagora kokam). Jo īpaši, ja pamata pusleņķis ir 30° = arkīns (0,5), ir viegli redzēt, ka šūnu izmērs paliek nemainīgs. Pirmā pārklāšanās notiek ceturtajā iterācijā. Kopējais dizains būtībā ir rombveida trīssešstūra flīze, kur sešstūru masīvu ierobežo kvadrātu dizains.

Robežā, kad pusleņķis ir 90 grādi, acīmredzami nav pārklāšanās, un kopējā platība ir divreiz lielāka par kvadrāta pamatnes laukumu. Būtu interesanti uzzināt, vai pastāv saistība starp pamata pusleņķa algoritmisko vērtību un iterāciju, kurā kvadrāti pārklājas viens ar otru.

Modificēts un modificēts Pitagora koks (fraktālis) izmantošanai antenu tehnoloģijā.

Izmantojot oriģinālu fraktāļu koks Pitagoru (UPTF) izgudroja holandiešu matemātiķis Alberts E. Bosmans 1942. gadā. Pitagora koks ir 2D fraktālis, kas veidots no kvadrātiem. Kā aprakstīts iepriekš, sākot ar piekto iterāciju, daži apgabali pārklājas, un fraktāļu kokam faktiski ir ierobežots laukums, jo tas iekļaujas 6 × 4 lodziņā. Šī iemesla dēļ ir nepieciešams aizkavēt kreisās un labās rokas pirkstu pārklāšanos UPTF ceturtajā iterācijā, tāpēc mēs projektējam MPT - fraktāli, izslēdzot pirmās lielā laukuma iterācijas un mainām vienādsānu taisnstūri par vienādsānu trīsstūri ar stāvu. leņķi (α = 10 grādi), lai samazinātu fraktāļu augstumu un izveidotu kompaktas antenas. Mūsu mērķis veselības aprūpes iestādes projektēšanā ir izmantot šo fraktāli, lai kontrolētu rezonanses joslas platumu un pretestību. Pamatojoties uz Pitagora koka modifikācijas simulācijas rezultātiem, ir vērojams ļoti labs miniaturizācijas potenciāls, pateicoties tās pašlīdzības īpašībai, būtiski nesamazinot antenas caurlaidspēju un efektivitāti.

Flāmu mākslinieks Jos de Mey radīja daudzus darbus ar Pitagora koku kā galveno motīvu. Zemāk jūs varat redzēt viņa darbu.



http://demonstrations.wolfram.com/PythagorasTree/- Fraktāļu dizains, pamatojoties uz Pitagora teorēmu. Šī ir asimetriska iespēja; iespējams arī simetrisks variants.

http://demonstrations.wolfram.com/download-cdf-player.html- lejupielādējiet atskaņotāju apskatei

Avots: http://en.wikipedia.org/wiki/Pythagoras_tree_(fractal)

Tulkojums: Dmitrijs Šahovs



Vai jums ir jautājumi?

Ziņot par drukas kļūdu

Teksts, kas tiks nosūtīts mūsu redaktoriem: