Rakenna Pythagoraan puun kuvio rekursiivisen menettelyn avulla. Avoin kirjasto – avoin koulutustiedon kirjasto. Funktio Pythagoraan puun rakentamiseen C-kielellä

Toinen esimerkki olisi kuuluisa "Pytagoraan puu". Se esitetään usein kuvan mukaisesti. 3.2. Jokaisen tämän puun suorakulmaisen kolmion sisäkulma on 45°.

Käytämme jälleen satunnaislukugeneraattoria luodaksemme yleisemmän ohjelman, joka voi tuottaa riisin lisäksi. 3.2, mutta myös tuottaa vähemmän säännöllisiä puita. Kulmat asetettu 45°:een kuvassa 1. 3.2 asetetaan yleensä satunnaisesti välillä (45 - delta)° ja (45+ delta)° , missä on arvo delta annetaan syöteparametrina yhdessä parametrin n kanssa, joka määrittää rekursion syvyyden. Kuvassa näkyvä tavallinen versio. 3.2, saatu määrittämällä delta= 0 ja n = 7. Kuvassa parametri P määrittää kolmioiden lukumäärän puun juuresta lehtiin kulkevalla polulla. Ohjelman ydin on rekursiivinen funktio square_and_triangle ("neliö ja kolmio"), jonka ensimmäisenä argumenttina on parametri n, joka määrittää rekursion syvyyden. Jos parametrin n arvo on suurempi kuin nolla, neliö_ja_kolmio-funktion tehtävä sen nimen mukaisesti on piirtää neliö ja kolmio sen päälle ja kutsua sitten itseään vielä kahdesti vastaavilla uusilla argumenteilla, joista ensimmäinen on asetettu arvoon n-1. Neliön koko ja sijainti määräytyvät täysin neljällä parametrilla: X0, Y0, a ja j (katso kuva 3.3). Kolmion piirtämiseksi on erittäin tärkeää tietää kulma a. Tämä kulma ilmaistuna asteina on yhtä suuri kuin 45+poikkeama, jossa poikkeama on yhtä satunnaisesti valitun sarjan -delta, -delta+I, ... , delta kokonaisluvuista. Kuvassa 3.3 tarvittavat pisteet on numeroitu peräkkäisillä numeroilla 0,1,2,3,4. Pisteen O koordinaatit X0, Y0 määritetään funktion kutsussa. Jäljellä olevien pisteiden laskemiseksi tarkastellaan ensin yksinkertaisempaa tilannetta, jossa j = 0, eli kun neliön sivu 0 1 on vaaka-asennossa.

Tässä asennossa pisteiden koordinaatit on erittäin helppo määrittää. Οʜᴎ kirjoitetaan x- ja y-taulukoihin. Sitten koko rakennetta kierretään pisteen O ympäri kulmalla j. Kierron tulos tallennetaan xx- ja yy-taulukoihin.

/* PYTH_TREE: Pythagoraan puun muunnelma */

#include "math.h"

#include "stdlib.h"

#include "aika.h"

#define pi 3.1415927

#include "stdio.h"

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

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

void pmove(float x, float y)

( s.xx=x; s.yy=y; s.ii=0; /* 0 = kynä ylös */ /* 0 = kynä ylös */

fwrite(&s, s:n koko, 1, fp);

void pdraw(float x, float y)

( s.xx=x; s.yy=y; s.ii=1; /* 1 = kynä alas */ /* 1 = kynä alas */

fwrite(&s, s:n koko, 1, fp);

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

void square_and_triangle(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, poikkeama; /* phi ja alfa radiaaneina */

/* delta asteina */

if(n==0) return; /* kulmat phi ja alfa radiaaneina */

/* kulman delta asteina */

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

alfa=(45+poikkeama)*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;

/* Kierto noin (x0, y0) kulman phi läpi ; */

/* Kierrä pisteen (x0, y0) ympäri kulman phi verran;*/

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

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

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

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

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

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

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

neliö_ja_kolmio(n-1, xx, yy, c, phi+alfa);

neliö_ja_kolmio(n-1, xx, yy, b, phi+alfa-0,5*pi);

pfopen(); aika(&seed); srand((int)siemen);

printf(" Aseta deltakulma asteina (0< delta < 45) ");

scanf("%d", &delta);

printf(" Aseta rekursion syvyys n "); scanf("%d", &n);

neliö_ja_kolmio(n, 0,0, 0,0, 1,0, 0,0);

Tämä ohjelma luo tiedoston NAARMU jotka G-ohjelman on käsiteltävä ENPLOT luennolta 2. Ohjelman graafinen tulos delta= 30 ja n = 7 on esitetty kuvassa. 3.4.

Hei ystävät, jotka ovat kiinnostuneita fraktaaleista ja muusta. Tästä hetkestä alkaen aloitan sarjan postauksia, joissa selitän yksinkertaisimpien fraktaalien rakentamisen periaatteet. Opiskelu on aina mielenkiintoista ja autan sinua tässä: tästä lähtien tunnemme monia, monia fraktaaleja. Lorenzin attraktori kaaosta käsittelevässä artikkelissa oli esimerkki tästä. Ja tänään kerron sinulle Pythagoraan puusta.

Eli mikä se on? Pythagoraan puu on yksinkertaisin fraktaali, joka voidaan piirtää paperille. Mutta miksi tätä fraktaalia kutsutaan Pythagoraan puuksi? Tosiasia on, että tässä on yhteys Pythagoraan lauseeseen, joka on yksi euklidisen geometrian perusteista. Muistatko hänet? Muistutan teitä: a2 + b2 = c2 (jalkojen pituuksien neliöiden summa on yhtä suuri kuin hypotenuusan pituuden neliö). Tämä lause on ollut tiedossa muinaisista ajoista lähtien. Lauseen todisteita on tällä hetkellä yli 400, ja vain Pythagoras todisti sen ensimmäisenä geometrisesti. Hän rakensi seuraavan hahmon: otti suorakulmaisen kolmion ja piirsi neliöitä sen sivuille. Tätä hahmoa kutsutaan myös "Pythagoran housuiksi":

Jos jatkamme tätä rakennetta rekursiivisesti, päädymme Pythagoraan puuhun:
1 iteraatio (Pythagoraan puussamme kulma on 45 astetta):


Toinen iteraatio:


Kolmas iteraatio:


Kymmenes iteraatio:


Pythagoraan puun tärkeä ominaisuus: jos ensimmäisen neliön pinta-ala on yksi, niin kullakin tasolla neliöiden pinta-alojen summa on myös yhtä suuri.
Jos kulmaa muutetaan 45 astetta, voidaan rakentaa muun tyyppisiä Pythagoraan puita.
Tässä on esimerkiksi niin kutsuttu "tuulen puhaltama Pythagoran puu":


Jotkut fraktaaligrafiikkageneraattorit toteuttavat kaavan fraktaalin rakentamiseksi Pythagoraan puun perusteella. Tämä toteutus muistuttaa hyvin IFS-järjestelmää, varsinkin jos neliöt korvataan suorakulmioilla tai pitkänomaisilla muodoilla.
Siinä kaikki tälle päivälle, seuraaviin kokouksiin asti, joissa on monia muita mielenkiintoisia fraktaaleja)

Erikoisuudet

Yksi Pythagoraan puun ominaisuuksista on, että jos ensimmäisen neliön pinta-ala on yhtä suuri, niin kullakin tasolla neliöiden pinta-alojen summa on myös yhtä suuri.

Jos klassisessa Pythagoraan puussa kulma on 45 astetta, on myös mahdollista rakentaa yleistetty Pythagoraan puu käyttämällä muita kulmia. Tätä puuta kutsutaan usein Tuulen puhaltama Pythagoras-puu. Jos piirretään vain segmenttejä, jotka yhdistävät jollain tavalla valittuja kolmioiden "keskuksia", saamme alaston Pythagoraan puu.

Esimerkkejä

    Pythagoras-puu 1.gif

    Klassinen Pythagoraan puu

    Pythagoras puu 2.gif

    Tuulen puhaltama Pythagoraan puu

    Pythagoras puu 3.gif

    Pythagoraan alastonpuu

    Pythagoras puu 4.gif

    Tuulen puhaltama Pythagoraan puu

Katso myös

Kirjoita arvostelu artikkelista "Pythagoraan puu"

Ote Pythagoras-puusta

Kun Venäjä oli puoliksi vallattu ja Moskovan asukkaat pakenivat kaukaisiin provinsseihin ja miliisi toisensa jälkeen nousi puolustamaan isänmaata, meistä, jotka emme eläneet tuolloin, tuntuu tahattomasti, että kaikki venäläiset, niin nuoret kuin vanhatkin, olivat kiire vain uhraamaan itsensä, pelastamaan isänmaan tai itkemään sen tuhoa. Tuon ajan tarinat ja kuvaukset puhuvat poikkeuksetta vain uhrautumisesta, isänmaan rakkaudesta, epätoivosta, surusta ja venäläisten sankaruudesta. Todellisuudessa näin ei ollut. Meistä näyttää siltä, ​​että näin on vain siksi, että näemme menneisyydestä yhden tuon ajan yhteisen historiallisen intressin, emmekä näe kaikkia niitä henkilökohtaisia, inhimillisiä etuja, joita tuon ajan ihmisillä oli. Samaan aikaan todellisuudessa nuo nykyajan henkilökohtaiset edut ovat niin paljon tärkeämpiä kuin yleiset edut, että niiden takia yleistä etua ei koskaan tunneta (ei edes havaittavissa). Suurin osa tuon ajan ihmisistä ei kiinnittänyt mitään huomiota yleiseen asioiden kulkuun, vaan heitä ohjasivat vain nykyajan henkilökohtaiset edut. Ja nämä ihmiset olivat tuon ajan hyödyllisimpiä hahmoja.
Ne, jotka yrittivät ymmärtää asioiden yleistä kulkua ja halusivat osallistua siihen uhrautumalla ja sankaruudella, olivat yhteiskunnan hyödyttömimpiä jäseniä; he näkivät kaiken sisältä ulospäin, ja kaikki, mitä he tekivät hyödyksi, osoittautui hyödyttömäksi hölynpölyksi, kuten Pierren, Mamonovin rykmentit, jotka ryöstivät venäläisiä kyliä, kuin nukkaa, jonka naiset nykivät ja eivät koskaan saavuttaneet haavoittuneita jne. Jopa ne, jotka rakastaen olla fiksuja ja ilmaista tunteitaan, he puhuivat Venäjän nykytilanteesta ja kantoivat puheissaan tahattomasti joko teeskentelyn ja valheen tai turhan tuomitsemisen ja vihan jälkiä ihmisille, joita syytetään jostain, johon kukaan ei voinut olla syyllinen. Historiallisissa tapahtumissa ilmeisin on kielto syödä tiedon puun hedelmiä. Vain tiedostamaton toiminta kantaa hedelmää, ja historiallisessa tapahtumassa roolissa oleva henkilö ei koskaan ymmärrä sen merkitystä. Jos hän yrittää ymmärtää sitä, hän hämmästyy sen turhuudesta.

Tutkiessani elektrokardiogrammitapahtumien havaitsemisalgoritmeja opinnäytetyöni tutkimusosuutta varten huomasin, että kardiogrammin R-R-välin kesto, joka lasketaan jopa toisen desimaalin tarkkuudella, kuvaa varsin tarkasti tietyn henkilön sydän- ja verisuonijärjestelmää. Koska fraktaaligeometria on kiehtonut minua jo jonkin aikaa, heräsi heti mielessäni ajatus, kuinka antaa "henkilökohtaisia" ominaisuuksia jollekin yksinkertaiselle fraktaaliobjektille.

Näin "elektrokardiografinen Pythagoraan puu" ilmestyi.

Teoreettinen osa – 1. Tietoja elektrokardiogrammista

Graafista tallennusta potentiaalierosta, joka syntyy sydänlihaksen eri osien välillä sen virityksen aikana, kutsutaan elektrokardiogrammiksi (EKG). Näiden sydämen potentiaalien suuntaus ja suuruus EKG:ssa ilmaistaan ​​aaltojen amplitudina ja niiden suunnana (polariteetti) suhteessa isoelektriseen linjaan. Ja ne kattavat alueen 0,15...300 Hz signaalitasolla 0,3...3 mV.

Normaali EKG koostuu aalloista ja niiden välissä olevista vaakasuorista viivoista (kuva 1).

Kuva 1 – Kaavamainen esitys normaalista elektrokardiogrammista.

Kliinisessä käytännössä käytetään johtoja kehon pinnan eri osista. Näitä johtoja kutsutaan pinnallisiksi. EKG:tä tallennettaessa käytetään yleensä 12 tavanomaista kytkentää, kuusi raajoista ja kuusi rinnasta. Einthoven ehdotti kolmea ensimmäistä standardijohtoa. Syke (HR) määräytyy yhden sydänsyklin keston perusteella, ts. R - R -välin keston mukaan.

Normaali ja kätevin sykkeen määrittämiseen on Einthovenin mukaan lyijy II, koska siinä R-aalolla on suurin amplitudi.

Käytännön osa - 1

Laskennassa käytämme Einthovenin mukaista todellista fysiologisten signaalien tietokannasta saatua terveen ihmisen EKG:tä II-johdossa.

EKG-parametrit:
ADC-resoluutio 12 bittiä;
Näytteenottotaajuus 100 Hz;
Kesto 10 sekuntia;

Kuva 2 – Kuva normaalista EKG:stä tietokannasta.

Seuraavaksi määritämme QRS-kompleksin, jotta voimme erottaa siitä R-aallon. Tätä varten käytämme algoritmia, joka perustuu painotettuun ja neliöityyn ensimmäiseen derivaatan operaattoriin ja liukuvaan keskiarvosuodattimeen.

Kuulostaa monimutkaisemmalta kuin miltä näyttää:

Missä x(n)- EKG-signaali, N-ikkunan leveys, jossa ensimmäisen asteen ero lasketaan, neliötetään ja painotetaan kertoimen avulla (N-i+1).

Painotuskerroin pienenee lineaarisesti virtaerosta alkaen laskettuun erotukseen N laskee ajoissa aikaisemmin, mikä antaa tasoittavan vaikutuksen.

Lisätasoitus suoritetaan liukuvalla keskiarvosuodattimella M pisteet:

Näytteenottotaajuudella 100 Hz suodatinikkunan leveys asetetaan seuraavasti M = N = 8. Tämä algoritmi tuottaa yhden piikin jokaiselle QRS-kompleksille ja vaimentaa P- ja T-aallot Käsittelyn tuloksena saamme seuraavan EKG-näkymän (kuva 3).

Kuva 3 – EKG-kuva suodatuksen jälkeen.

R-aallon löytäminen käsitellystä signaalista voidaan tehdä käyttämällä yksinkertaista huipun etsintäalgoritmia:
1. Signaalin fragmentin skannaus g(n), jossa piikin läsnäolo odotetaan, ja maksimiarvon määrittäminen gmax.
2. Kynnyksen määrittäminen enimmäismäärän tiettynä murto-osana, Th = 0,8gmax.
3. Kaikille g(n)>Th:lle ​​valitaan ne lukemat, joille vastaavat arvot g(n) enemmän kuin tietty määrä M aikaisemmat tai myöhemmät lukemat g(n).

Näin määritelty joukko (p) sisältää kaikkien signaalista löytyneiden indeksit g(n) huiput
Artefaktien aiheuttamat piikit voidaan hylätä lisäehdoilla, esimerkiksi kahden vierekkäisen piikin välisellä vähimmäisvälillä.

Kuva 4 – EKG-kuva, jossa R-aallot on merkitty.

Seuraavaksi tulee itse yksinkertainen tehtävä - tietyn EKG:n R-R-välin keskimääräisen pituuden määrittäminen. Ja tässä tapauksessa se on 733 ms. Hauskuuden vuoksi lasketaan syke: 60/0.733=81.85 lyöntiä/min. Nyt meillä on arvo, joka luonnehtii tietyn henkilön sydämen työtä.

Pientä selitystä:
Sydän ei ole metronomi, se ei voi lyödä lyöntiä yhtäläisin aikavälein. Terveen ihmisen R-R-väli vaihtelee pienissä rajoissa. Jos intervallin vaihtelut ovat merkittäviä, tämä osoittaa rytmihäiriöiden ja muiden häiriöiden olemassaolon. Värähtelymekanismi on hyvin monimutkainen joukko prosesseja, jotka liittyvät tietyn sydämen sähkönjohtavuuteen.

Käyttämällä keskimääräisen R-R-välin arvoa parametrina Pythagoraan puuta rakennettaessa, voit antaa sille "ainutlaatuisia" ("henkilökohtaisia") ominaisuuksia.

Teoreettinen osa – 2. Fraktaaleja

Fraktaalit ovat geometrisia esineitä: viivoja, pintoja, avaruudellisia kappaleita, joilla on erittäin karu muoto ja joilla on samankaltaisuuden ominaisuus. Fraktaaliteorian perustaja, ranskalais-amerikkalainen matemaatikko Benoit Mandelbrot muodosti termin fraktaali latinalaisesta partisiippi fractus. Vastaava verbi frangere käännetään katkaista, rikkoa, ts. luoda epäsäännöllisen muotoisia fragmentteja. Itsesamankaltaisuus määrää ennalta fraktaaliobjektin geometristen pääpiirteiden mittakaavainvarianssin (skaalauksen), niiden invarianssin mittakaavan muuttuessa. Fraktaaliobjektien rosoisten viivojen toistettavuus voi olla täydellinen (tässä tapauksessa puhutaan säännöllisistä fraktaaleista) tai voidaan havaita jokin satunnaisuuselementti (tällaisia ​​fraktaaleja kutsutaan satunnaisiksi). Pienen mittakaavan satunnaisten fraktaalien rakenne ei ole aivan identtinen koko kohteen kanssa, mutta niiden tilastolliset ominaisuudet ovat samat.

Pythagoraan puu on eräänlainen geometrinen säännöllinen fraktaali, joka perustuu "Pythagoran housuina" tunnettuun hahmoon.

Geometrisen fraktaalin muodostamisen periaate on rekursio.

Käytännön osa - 2

Algoritmi Pythagoraan puun rakentamiseen:
1) Rakenna pystysegmentti;
2) Tämän segmentin yläpäästä rakennamme rekursiivisesti vielä 2 lyhyempää segmenttiä 90° kulmassa toisiinsa nähden;
3) Kutsu funktio kahden peräkkäisen segmentin rakentamiseksi jokaiselle puun haaralle;

Funktio Pythagoraan puun rakentamiseen C-kielellä.

Void Draw(double x, double y, double L, double a) ( if(L > max) ( L*=0,7; moveto(x,y); lineto((int)(x+L*cos(a)) ,(int)(y-L*sin(a))) (x,y,L,a-Pi/m);
Kuva 5 – Pythagoraan puu EKG:lle R-R:ssä: 733 ms.

Muutettavana on vain käyttää ohjelman keskimääräisen R-R EKG-välin laskettua pituutta muuttujana L.

Tällä tavalla saat "henkilökohtaisen" Pythagoraan puun, joka "hengittää" fyysisestä aktiivisuudesta riippuen ja oksien pituus ja niiden kierre "kuvailevat mahdollisimman tarkasti" persoonallisuuttasi.

Bibliografia

1. Monimutkaisten fysiologisten signaalien tutkimusresurssi:

Jos suurin pinta-ala on L × L, koko Pythagoraan puu mahtuu tiukasti 6L × 4L laatikkoon. Puun hienoudet tuovat mieleen Levy-käyrän.

Rakentaminen

Pythagoraan puun rakentaminen alkaa neliöstä. Tämän alueen päälle on rakennettu kaksi neliötä, joista jokainen on pienentynyt lineaarinen kerroin½ √ 2, joten neliöiden kulmat ovat pareittain samat. Samaa menettelyä sovelletaan rekursiivisesti, sitten kahteen - jopa pienempään neliöön, loputtomiin. Alla oleva kuva näyttää rakennusprosessin ensimmäiset iteraatiot.

Neliö

N-iterointi rakentamisessa lisää 2n neliötä, joiden koko on (½ √ 2) N, kokonaispinta-alalle 1, joten tässä osassa puu näyttäisi kasvavan rajattomasti N → ∞. Jotkut alueet ovat kuitenkin päällekkäisiä iteraatiosta 5 alkaen, ja puulla on itse asiassa äärellinen pinta-ala, koska se vastaa mittoja 6 × 4. Ei ole vaikeaa todistaa, että Pythagoraan puun alueen A on oltava alue 5<А <18, которая может быть сужена в дальнейшем дополнительными усилиями.

Kulman vaihtaminen

Mielenkiintoinen joukko variaatioita voidaan rakentaa ylläpitämällä tasakylkistä kolmiota, mutta muuttamalla kantakulmaa (90 astetta tavalliselle Pythagoraan puulle). Erityisesti kun kantapuolikulma on 30° = arksini (0,5), on helppo nähdä, että solujen koko pysyy vakiona. Ensimmäinen päällekkäisyys tapahtuu neljännessä iteraatiossa. Kokonaissuunnittelu on pohjimmiltaan timantti-kolmikulmainen laatta, jossa kuusikulmioryhmä on reunustettu neliöillä.

Rajassa, kun puolikulma on 90 astetta, ei ilmeisesti ole päällekkäisyyttä, ja kokonaispinta-ala on kaksi kertaa neliön pohjan pinta-ala. Olisi mielenkiintoista tietää, onko kantapuolikulman algoritmisen arvon ja iteraation välillä, jossa neliöt menevät päällekkäin.

Modifioitu ja modifioitu Pythagoraan puu (fraktaali) käytettäväksi antennitekniikassa.

Käyttämällä alkuperäistä fraktaalipuu Pythagoras (UPTF) keksi hollantilainen matemaatikko Albert E. Bosman vuonna 1942. Pythagoraan puu on neliöistä rakennettu 2D-fraktaali. Kuten aiemmin kuvattiin, viidennestä iteraatiosta alkaen jotkut alueet menevät päällekkäin ja fraktaalipuulla on itse asiassa rajallinen alue, koska se mahtuu 6 × 4 -ruutuun. Tästä syystä on tarpeen viivyttää vasemman ja oikean käden sormen päällekkäisyyttä UPTF 4. iteraatiossa, joten suunnittelemme MPT - fraktaalin eliminoimalla ensimmäiset suuren alueen iteraatiot ja muuttamalla tasakylkisen suorakulmaisen kolmion tasakylkiseksi kolmioksi, jossa on jyrkkä. kulmat (α = 10 astetta) fraktaalikorkeuden pienentämiseksi ja kompaktien antennien suunnittelemiseksi. Tavoitteemme terveydenhuollon suunnittelussa on käyttää tätä fraktaalia ohjaamaan resonanssien kaistanleveyttä ja impedanssia. Pythagoraan puun modifikaatiosimulaatiotulosten perusteella havaitaan erittäin hyvät mahdollisuudet miniatyrisoitumiseen sen itsesamankaltaisuusominaisuuden vuoksi, ilman että antennin suorituskyky ja hyötysuhde heikkenevät merkittävästi.

Flaamilainen taiteilija Jos de Mey loi monia teoksia, joiden pääaiheena oli Pythagoras-puu. Alta näet hänen työnsä.



http://demonstrations.wolfram.com/PythagorasTree/- Fraktaalisuunnittelu perustuu Pythagoraan lauseeseen. Tämä on epäsymmetrinen vaihtoehto; symmetrinen vaihtoehto on myös mahdollinen.

http://demonstrations.wolfram.com/download-cdf-player.html- Lataa soitin katselua varten

Lähde: http://en.wikipedia.org/wiki/Pythagoras_tree_(fractal)

Käännös: Dmitri Shakhov



Onko sinulla kysyttävää?

Ilmoita kirjoitusvirheestä

Teksti, joka lähetetään toimittajillemme: