Pitagorino drvo nošeno vjetrom. R-val elektrokardiograma kao parametar Pitagorinog stabla. Funkcija za konstruiranje Pitagorinog stabla u C jeziku

Pitagorino stablo je vrsta fraktala koja se temelji na figuri poznatoj kao Pitagorine hlače.

Dokazujući svoj poznati teorem, Pitagora je konstruirao lik u kojem su na svakoj stranici pravokutnog trokuta bili kvadrati. S vremenom se ova Pitagorina figura pretvorila u cijelo stablo. Prvi koji je za vrijeme Drugog svjetskog rata konstruirao Pitagorino stablo bio je A. Bosman, koristeći obično crtaće ravnalo.

Jedno od glavnih svojstava Pitagorinog stabla je da kada je površina prvog kvadrata jedan, tada će na svakoj razini zbroj površina kvadrata također biti jednak jedan. Klasično Pitagorino stablo ima kut od 45 stupnjeva, ali također je moguće konstruirati generalizirano Pitagorino stablo koristeći druge kutove. Takvo stablo naziva se Pitagorino stablo vjetrom. Ako nacrtate samo segmente koji na neki način spajaju određene "centre" trokuta, tada ćete dobiti golo Pitagorino stablo.

Drugi primjer bi bilo poznato "Pitagorino stablo". Često se prikazuje kao što je prikazano na sl. 3.2. Svaki od pravokutnih trokuta u ovom stablu ima unutarnji kut od 45°.

Upotrijebimo opet generator slučajnih brojeva da stvorimo općenitiji program koji može generirati ne samo rižu. 3.2, ali također generiraju manje pravilna stabla. Kutovi postavljeni na 45° za sl. 3.2, općenito će se postaviti nasumično unutar raspona između (45 - delta)° i (45 + delta)° , gdje je vrijednost delta dan je kao ulazni parametar zajedno s parametrom n, koji određuje dubinu rekurzije. Redovna verzija prikazana na sl. 3.2, dobiven specificiranjem delta= 0 i n = 7. Na slici je parametar P određuje broj trokuta na putu od korijena do lišća stabla. Srž programa bit će rekurzivna funkcija square_and_triangle ("kvadrat i trokut") s parametrom n koji određuje dubinu rekurzije kao prvim argumentom. Ako je vrijednost parametra n veća od nule, tada će funkcija kvadrat_i_trokut, kao što joj ime govori, nacrtati kvadrat i trokut preko njega, a zatim se još dva puta pozvati s odgovarajućim novim argumentima, od kojih je prvi postaviti na n-1. Veličinu i položaj kvadrata u potpunosti određuju četiri parametra: X0, Y0, a i j (vidi sl. 3.3). Da biste nacrtali trokut, morate znati kut a. Ovaj kut, izražen u stupnjevima, jednak je 45+devijacija, gdje je devijacija jednaka jednom od cijelih brojeva niza -delta, -delta+I, ... , delta, slučajno odabranih. Na sl. 3.3 potrebne točke su numerirane uzastopnim brojevima 0,1,2,3,4. Koordinate X0, Y0 točke O navedene su u pozivu funkcije. Za izračunavanje preostalih točaka, prvo ćemo razmotriti jednostavniju situaciju s j = 0, tj. kada stranica 0 1 kvadrata zauzima horizontalni položaj.


U ovom položaju vrlo je lako odrediti koordinate točaka. Pohranjeni su u x i y nizovima. Zatim se cijela struktura zakrene oko točke O za kut j. Rezultat rotacije bilježi se u nizovima xx i yy.

/* PYTH_TREE: Varijanta Pitagorinog stabla */

#include "math.h"

#include "stdlib.h"

#uključi "vrijeme.h"

#definiraj pi 3.1415927

#include "stdio.h"

struct (float xx; float yy; int ii;) s;

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

void pmove(float x,float y)



( s.xx=x; s.yy=y; s.ii=0; /* 0 = olovka gore */ /* 0 = olovka gore */

fwrite(&s, sizeof s, 1, fp);

void pdraw(float x,float y)

( s.xx=x; s.yy=y; s.ii=1; /* 1 = olovka dolje */ /* 1 = olovka dolje */

fwrite(&s, sizeof s, 1, fp);

void pfclose())( fclose(fp); )

void kvadrat_i_trokut(int n,float x0,float y0, float a, float phi)

( float x, y, xx, yy, cphi, sphi, c1, c2, b, c,

alfa, kalfa, salfa;

int i, odstupanje; /* fi i alfa u radijanima */

/* delta u stupnjevima */

if(n==0) povratak; /* kutovi phi i alpha u radijanima */

/* delta kuta u stupnjevima */

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

alfa=(45+odstupanje)*pi/180,0;

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

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

calpha=cos(alpha); salfa=grijeh(alfa);

c=a*kalfa; b=a*salfa;

/* Rotacija oko (x0, y0) kroz kut phi ; */

/* Rotacija oko točke (x0, y0) za kut phi;*/

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

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

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

za (i=0; i<5; i++)

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

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

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

kvadrat_i_trokut(n-1, xx, yy, c, phi+alpha);

kvadrat_i_trokut(n-1, xx, yy, b, phi+alpha-0,5*pi);

pfopen(); vrijeme(&sjeme); srand((int)seed);

printf(" Postavite delta kut u stupnjevima (0< delta < 45) ");

scanf("%d", &delta);

printf(" Postavi dubinu rekurzije n "); scanf("%d", &n);

kvadrat_i_trokut(n, 0,0, 0,0, 1,0, 0,0);

Ovaj program generira datoteku OGREPSTI koji se moraju obraditi programom G ENPLOT iz predavanja 2. Grafički rezultat programa za delta= 30 i n = 7 prikazan je na sl. 3.4.

Pitagorino stablo

Pitagorino stablo je vrsta fraktala koja se temelji na figuri poznatoj kao Pitagorine hlače.

Priča.

Pitagora je, dokazujući svoj poznati teorem, konstruirao lik s kvadratima na stranicama pravokutnog trokuta. U našem je stoljeću ova Pitagorina figura izrasla u cijelo stablo. Pitagorino stablo prvi je izgradio A.E. Bosman (1891.-1961.) tijekom Drugog svjetskog rata, koristeći obično crtačko ravnalo.

Osobitosti.

Jedno od svojstava Pitagorinog stabla je da ako je površina prvog kvadrata jednaka jedan, tada će na svakoj razini zbroj površina kvadrata također biti jednak jedan.

Ako je u klasičnom Pitagorinom stablu kut 45 stupnjeva, onda je također moguće konstruirati generalizirano Pitagorino stablo koristeći druge kutove. Ovo se stablo često naziva vjetrom nošeno Pitagorino drvo. Ako prikažete samo segmente koji na neki način povezuju odabrana "središta" trokuta, dobit ćete golo Pitagorino stablo.

Klasično pitagorino stablo

Vjetrom nošeno Pitagorino drvo

Golo Pitagorino drvo

Izloženo vjetrom nošeno Pitagorino stablo

Pitagorina trojka

Pitagorine trojke su brojevi koji zadovoljavaju Pitagorin teorem:

3, 4, 5; 7, 24, 25; 11,60, 61; 15, 8, 17; 33, 56, 65;

35, 12, 37; 63, 16, 65;

Ovi brojevi imaju niz zanimljivih svojstava:

Jedna od nogu mora biti višekratnik tri

Jedna od nogu mora biti višekratnik četiri

Jedan od Pitagorinih brojeva mora biti višekratnik broja pet

U matematici, Pitagorina trojka je skup od tri prirodna broja koji zadovoljavaju Pitagorinu relaciju:

Primitivne trojke

Budući da je jednadžba homogena, kada se pomnoži s istim prirodnim brojem, dobiva se još jedna Pitagorina trojka. Pitagorina trojka se naziva primitivnom ako se na ovaj način ne može dobiti iz neke druge Pitagorine trojke, odnosno, radi se o međusobno prostim brojevima.

pitagorin teorem hlače drvo

Lako je vidjeti da u primitivnoj trojki brojevi x i y imaju različite paritete, te je paran broj djeljiv s 4, a z je uvijek neparan.

Bilo koja primitivna Pitagorina trojka gdje je x neparan, a y paran, može se jedinstveno prikazati u obliku za neke prirodne međusobno proste brojeve različitih pariteta, koji se mogu izračunati pomoću formula:

Naprotiv, svaki takav par brojeva definira primitivnu Pitagorinu trojku

Svojstva.

Trokut čije su duljine stranica jednake Pitagorinim brojevima je pravokutan. Osim toga, svaki takav trokut je Heronov trokut, to jest sve njegove stranice i površina su cijeli brojevi. Najjednostavniji od njih je egipatski trokut sa stranama

Svaka Pitagorina trojka definira točku s racionalnim koordinatama na jediničnoj kružnici

Ne zna se postoje li dvije različite Pitagorine trojke koje imaju isti umnožak.

Pitagorino stablo je vrsta fraktala koja se temelji na figuri poznatoj kao Pitagorine hlače.

Dokazujući svoj poznati teorem, Pitagora je konstruirao lik u kojem su na svakoj stranici pravokutnog trokuta bili kvadrati. S vremenom se ova Pitagorina figura pretvorila u cijelo stablo. Prvi koji je za vrijeme Drugog svjetskog rata konstruirao Pitagorino stablo bio je A. Bosman, koristeći obično crtaće ravnalo.

Jedno od glavnih svojstava Pitagorinog stabla je da kada je površina prvog kvadrata jedan, tada će na svakoj razini zbroj površina kvadrata također biti jednak jedan. Klasično Pitagorino stablo ima kut od 45 stupnjeva, ali također je moguće konstruirati generalizirano Pitagorino stablo koristeći druge kutove. Takvo stablo naziva se Pitagorino stablo vjetrom. Ako nacrtate samo segmente koji na neki način spajaju određene "centre" trokuta, tada ćete dobiti golo Pitagorino stablo.

Pozdrav, prijatelji zainteresirani za fraktale i još mnogo toga. Počevši od ovog trenutka, pokrećem seriju postova u kojima ću objasniti principe konstruiranja najjednostavnijih fraktala. Uvijek je zanimljivo proučavati i ja ću vam pomoći u tome: od sada ćemo znati mnogo, mnogo fraktala. Lorenzov atraktor u članku o kaosu bio je primjer za to. A danas ću vam pričati o Pitagorinom stablu.

Pa što je to? Pitagorino stablo je najjednostavniji fraktal koji se može nacrtati na papiru. Ali zašto se ovaj fraktal naziva Pitagorino stablo? Činjenica je da ovdje postoji veza s Pitagorinim teoremom - jednim od temelja euklidske geometrije. Sjećaš se nje? Da vas podsjetim: a2 + b2 = c2 (zbroj kvadrata duljina kateta jednak je kvadratu duljine hipotenuze). Ovaj teorem je poznat od davnina; trenutno postoji više od 400 dokaza teorema, a samo ga je Pitagora prvi geometrijski dokazao. Sastavio je sljedeću figuru: uzeo je pravokutni trokut i na njegovim stranicama nacrtao kvadrate. Ova figura se također naziva "Pitagorine hlače":

Ako ovu konstrukciju nastavimo rekurzivno, završit ćemo s Pitagorinim stablom:
1. ponavljanje (u našem Pitagorinom stablu kut je 45 stupnjeva):


Druga iteracija:


Treća iteracija:


Deseta iteracija:


Važno svojstvo pitagorejskog stabla: ako je površina prvog kvadrata jednaka jedan, tada će na svakoj razini zbroj površina kvadrata također biti jednak jedan.
Ako se kut promijeni od 45 stupnjeva, tada se mogu konstruirati druge vrste Pitagorinog stabla.
Evo, na primjer, takozvanog "vjetrom nošenog Pitagorinog stabla":


Neki generatori fraktalne grafike implementiraju formulu za konstruiranje fraktala na temelju Pitagorinog stabla. Ova implementacija vrlo podsjeća na IFS sustav, pogotovo ako kvadrate zamijenite pravokutnicima ili izduženim oblicima.
To je sve za danas, do sljedećih susreta, u kojima će biti mnogo drugih zanimljivih fraktala)

mob_info