itthon » A gomba pácolása » Kezdje a tudományban. Fibonacci-számok: szórakoztató matematikai tények

Kezdje a tudományban. Fibonacci-számok: szórakoztató matematikai tények

Leonardo Fibonacci olasz matematikus a 13. században élt, és Európában az elsők között használt arab (indiai) számokat. Egy kissé mesterséges problémával állt elő a farmon nevelkedő nyulakkal kapcsolatban, amelyek mindegyike nősténynek számít, a hímeket pedig figyelmen kívül hagyják. A nyulak két hónapos koruk után kezdenek szaporodni, majd havonta szülnek egy nyulat. A nyulak soha nem halnak meg.

Meg kell határoznunk, hogy hány nyúl lesz a farmon n hónap, ha a kezdeti időpontban csak egy újszülött nyúl volt.

Nyilvánvaló, hogy a gazdának egy nyúl van az első hónapban, és egy nyúl a második hónapban. A harmadik hónapban két nyúl lesz, a negyedik hónapban három stb. Jelöljük a nyulak számát n hónap tetszik. És így,
,
,
,
,
, …

Lehetőség van egy algoritmus összeállítására a kereséshez bármely n.

A problémafelvetés szerint a nyulak összlétszáma
V n A +1 hónap három részre oszlik:

    egyhónapos szaporodásra képtelen nyulak, mennyiségben

;


Így kapunk

. (8.1)

A (8.1) képlet lehetővé teszi számsorok kiszámítását: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, . ..

Az ebben a sorozatban szereplő számokat hívják Fibonacci számok .

Ha elfogadjuk
És
, akkor a (8.1) képlet segítségével meghatározhatja az összes többi Fibonacci-számot. A (8.1) képletet ún visszatérő képlet ( ismétlődés – latinul „visszatérés”).

8.1. példa. Tegyük fel, hogy van egy lépcsőház n lépések. Felmászhatunk rá egy- vagy kétlépcsős lépésekben. Hány különböző emelési mód kombinációja létezik?

Ha n= 1, a feladatnak csak egy megoldása van. Mert n= 2 2 lehetőség van: két szimpla lépés vagy egy dupla. Mert n= 3 3 lehetőség van: három szimpla lépés, vagy egy szimpla és egy dupla, vagy egy dupla és egy szimpla.

A következő esetben n= 4, 5 lehetőségünk van (1+1+1+1, 2+1+1, 1+2+1, 1+1+2, 2+2).

A véletlenszerűen feltett kérdés megválaszolásához n, jelöljük az opciók számát mint , és próbáljuk meg meghatározni
ismert szerint És
. Ha egyetlen lépéssel kezdjük, akkor megvan kombinációk a maradékhoz n lépések. Ha kettős lépéssel kezdjük, akkor megvan
kombinációk a maradékhoz n– 1 lépés. A következő opciók teljes száma n+1 lépés egyenlő

. (8.2)

A kapott képlet ikerként hasonlít a (8.1) képletre. Ez azonban nem teszi lehetővé a kombinációk számának azonosítását Fibonacci számokkal . Azt látjuk például
, De
. Azonban a következő függőség lép fel:

.

Ez erre igaz n= 1, 2, és mindenkire igaz is n. Fibonacci számok és kombinációk száma ugyanazzal a képlettel számítják ki, de a kezdeti értékeket
,
És
,
különböznek egymástól.

8.2. példa. Ez a példa gyakorlati jelentőséggel bír a hibajavító kódolás problémáinál. Keresse meg az összes hosszúságú bináris szó számát n, amely nem tartalmaz több nullát egymás után. Jelöljük ezt a számot . Magától értetődően,
, és a megkötésünket kielégítő 2 hosszúságú szavak: 10, 01, 11, azaz.
. Hadd
- egy ilyen szó n karakterek. Ha a szimbólum
, Azt
tetszőleges lehet (
)-szó szerinti szó, amely nem tartalmaz több nullát egymás után. Ez azt jelenti, hogy az egyre végződő szavak száma az
.

Ha a szimbólum
, akkor mindenképpen
, és az első
szimbólum
tetszőleges lehet, a figyelembe vett korlátok függvényében. Ezért van
szavak hossza n nullával a végén. Így a minket érdeklő szavak teljes száma egyenlő

.

Tekintve, hogy
És
, a kapott számsorozat a Fibonacci-számok.

8.3. példa. A 7.6. példában azt találtuk, hogy az állandó súlyú bináris szavak száma t(és hossza k) egyenlő . Most keressük meg az állandó súlyú bináris szavak számát t, amely nem tartalmaz több nullát egymás után.

Lehet így gondolkodni. Hadd
a nullák száma a kérdéses szavakban. Bármelyik szóban van
szóközök a legközelebbi nullák között, amelyek mindegyike egy vagy több egyet tartalmaz. Feltételezhető, hogy
. Egyébként egyetlen szó sincs szomszédos nullák nélkül.

Ha minden intervallumból pontosan egy egységet távolítunk el, akkor egy hosszúságú szót kapunk
tartalmazó nullák. Bármely ilyen szó a jelzett módon beszerezhető néhánytól (és csak egytől) k-szó szerinti szót tartalmazó nullák, amelyek közül nincs két szomszédos. Ez azt jelenti, hogy a szükséges szám egybeesik az összes hosszúságú szó számával
, amely pontosan tartalmazza nullák, azaz. egyenlő
.

8.4. példa. Bizonyítsuk be, hogy az összeg
egyenlő a Fibonacci számokkal bármely egész számra . Szimbólum
jelentése a legkisebb egész szám, amely nagyobb vagy egyenlő, mint . Például ha
, Azt
; és ha
, Azt
ceil("mennyezet"). Van egy szimbólum is
, ami azt jelöli legnagyobb egész szám kisebb vagy egyenlő, mint . Magyarul ezt a műveletet hívják padló ("padló").

Ha
, Azt
. Ha
, Azt
. Ha
, Azt
.

Így a vizsgált esetekben az összeg valóban megegyezik a Fibonacci-számokkal. Most bemutatjuk az általános eset bizonyítását. Mivel a Fibonacci-számokat a (8.1) ismétlődési egyenlettel kaphatjuk meg, az egyenlőségnek teljesülnie kell:

.

És tényleg működik:

Itt a korábban kapott (4.4) képletet használtuk:
.

      Fibonacci-számok összege

Határozzuk meg az első összegét n Fibonacci számok.

0+1+1+2+3+5 = 12,

0+1+1+2+3+5+8 = 20,

0+1+1+2+3+5+8+13 = 33.

Könnyen belátható, hogy minden egyenlet jobb oldalához hozzáadva ismét megkapjuk a Fibonacci-számot. Általános képlet az első összegének meghatározásához n A Fibonacci-számok alakja:

Bizonyítsuk be ezt a matematikai indukció módszerével. Ehhez írjuk:

Ennek az összegnek egyenlőnek kell lennie
.

Az egyenlet bal és jobb oldalát –1-gyel redukálva megkapjuk a (6.1) egyenletet.

      A Fibonacci-számok képlete

8.1. Tétel. A Fibonacci-számokat a képlet segítségével lehet kiszámítani

.

Bizonyíték. Ellenőrizzük ennek a képletnek az érvényességét n= 0, 1, majd igazoljuk ennek a képletnek az érvényességét egy tetszőlegesre n indukcióval. Számítsuk ki a két legközelebbi Fibonacci-szám arányát:

Látjuk, hogy ezeknek a számoknak az aránya 1,618 körül ingadozik (ha figyelmen kívül hagyjuk az első néhány értéket). A Fibonacci-számoknak ez a tulajdonsága egy geometriai progresszió tagjaihoz hasonlít. Fogadjuk el
, (
). Aztán a kifejezés

átalakítva

ami egyszerűsítések után így néz ki

.

Kaptunk egy másodfokú egyenletet, amelynek gyökei egyenlőek:

Most írhatjuk:

(Ahol c egy állandó). Mindkét tag És ne adj meg például Fibonacci számokat
, míg
. Azonban a különbség
kielégíti az ismétlődési egyenletet:

Mert n=0 ezt a különbséget adja , vagyis:
. Azonban mikor n=1 van
. Megszerezni
, el kell fogadnia:
.

Most két sorozatunk van: És
, amelyek ugyanazzal a két számmal kezdődnek, és ugyanazt az ismétlődési képletet teljesítik. Egyenlőnek kell lenniük:
. A tétel bizonyítást nyert.

Amikor növeli n tag közben nagyon nagy lesz
és a tag szerepe a különbség csökken. Ezért nagyban n nagyjából írhatunk

.

Figyelmen kívül hagyjuk az 1/2-t (mivel a Fibonacci-számok a végtelenségig nőnek, mint n a végtelenig).

Hozzáállás
hívott aranymetszés, a matematikán kívül használják (például szobrászatban és építészetben). Az aranymetszés az átló és az oldal aránya szabályos ötszög(8.1. ábra).

Rizs. 8.1. Szabályos ötszög és átlói

Az aranymetszés jelölésére a betűt szokás használni
a híres athéni szobrász, Phidias tiszteletére.

      prímszámok

Minden természetes szám, a nagy is, két osztályba sorolható. Az első olyan számokat tartalmaz, amelyeknek pontosan két természetes osztójuk van, egy és saját maga, a második tartalmazza az összes többit. Az első osztályú számokat hívják egyszerűés a második – összetett. Prímszámok az első három tízben: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, ...

A prímszámok tulajdonságait és kapcsolatukat minden természetes számmal Eukleidész (Kr. e. 3. század) vizsgálta. Ha prímszámokat ír fel egy sorba, észreveszi, hogy a relatív sűrűségük csökken. Az első tízre 4, azaz 40%, százra – 25, azaz. 25%, ezrelék – 168, i.e. kevesebb, mint 17%, millióanként – 78498, i.e. kevesebb, mint 8%, stb. Összes számuk azonban végtelen.

A prímszámok között vannak olyan számpárok, amelyek különbsége kettő (az ún. egyszerű ikrek), azonban az ilyen párok végessége vagy végtelensége nem bizonyított.

Eukleidész kézenfekvőnek tartotta, hogy csak prímszámok szorzásával minden természetes szám megkapható, és minden természetes szám egyedi módon (a tényezők sorrendjéig) ábrázolható prímszámok szorzataként. Így a prímszámok a természetes sorozat multiplikatív alapját képezik.

A prímszámok eloszlásának tanulmányozása egy olyan algoritmus létrehozásához vezetett, amely lehetővé teszi prímszámtáblázatok előállítását. Egy ilyen algoritmus az Eratoszthenész szitája(Kr. e. 3. század). Ez a módszer abból áll, hogy egy adott sorozat egész számait kiküszöböljük (például kihúzással).
, amelyek oszthatók legalább egy kisebb prímszámmal
.

Tétel 8 . 2 . (Euklideszi tétel). A prímszámok száma végtelen.

Bizonyíték. Euklidész tételét a prímszámok végtelenségére vonatkozóan Leonhard Euler (1707–1783) által javasolt módszerrel bizonyítjuk. Euler a szorzatot minden prímszám felett figyelembe vette p:

nál nél
. Ez a szorzat konvergál, és ha kibővítjük, akkor a természetes számok prímtényezőkre való felbontásának egyedisége miatt kiderül, hogy egyenlő a sorozat összegével , amelyből Euler személyazonossága következik:

.

Mióta
a jobb oldali sorozat divergál (harmonikus sorozat), majd Euler azonosságából következik Euklidész tétele.

Orosz matematikus P.L. Csebisev (1821–1894) levezetett egy képletet, amely meghatározza a prímszámok számának határait.
, Nem haladja meg x:

,

Ahol
,
.

A természetben előforduló számokról és képletekről. Nos, néhány szó ugyanezekről a számokról és képletekről.

A számok és képletek a természetben buktatót jelentenek azok között, akik hisznek abban, hogy valaki az univerzumot megteremti, és azok között, akik hisznek magában az univerzum létrejöttében. Mert a kérdés a következő: „Ha a világegyetem magától keletkezne, akkor nem épülne fel szinte minden élő és élettelen tárgy ugyanazon séma szerint, ugyanazon képletek szerint?”

Nos, erre a filozófiai kérdésre itt nem válaszolunk (az oldal formátuma nem ugyanaz 🙂), hanem a képleteket hangoztatjuk. És kezdjük a Fibonacci és az Aranyspirál számokkal.

Így a Fibonacci-számok egy olyan számsorozat elemei, amelyben minden következő szám egyenlő az előző két szám összegével. Vagyis 0 +1=1, 1+1=2, 2+1=3, 3+2=5 és így tovább.

Összesen a következő sorozatokat kapjuk: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6096,

Egy másik példa a Fibonacci sorozatra: 0, 2, 2, 4, 6, 10, 16, 26, 42, 68, 110, 178 és így tovább. Te is kísérletezhetsz :)

Hogyan jelennek meg a Fibonacci-számok a természetben? Nagyon egyszerű:

  1. A növények leveleinek elrendezését a Fibonacci-szekvencia írja le. A napraforgómag, a fenyőtoboz, a virágszirmok és az ananászsejtek is a Fibonacci-sorrend szerint vannak elrendezve.
  2. Az emberi ujjak ujjainak hossza megközelítőleg megegyezik a Fibonacci-számokkal.
  3. A DNS-molekula két függőlegesen összefonódó hélixből áll, amelyek 34 angström hosszúak és 21 angström szélesek. A 21 és 34 számok követik egymást a Fibonacci-sorozatban.

Fibonacci számok segítségével aranyspirált építhetsz. Tehát rajzoljunk egy kis négyzetet, amelynek oldala mondjuk 1. Ezután emlékezzünk az iskolára. Mi az 12? Ez 1 lesz. Tehát rajzoljunk még egy négyzetet az első mellé, egymáshoz közel. Ezután a következő Fibonacci-szám a 2 (1+1). Mi az a 22? Ez 4 lesz. Rajzoljunk még egy négyzetet az első két négyzethez közel, de most 2-es oldallal és 4-es területtel. A következő szám a 3 (1+2). A 3-as szám négyzete 9. Rajzolj a már megrajzoltak mellé egy négyzetet, amelynek oldala 3 és területe 9! Ezután van egy négyzet 5-ös oldallal és 25-ös területtel, egy négyzet 8-as oldallal és 64-es területtel - és így tovább, a végtelenségig.

Eljött az arany spirál ideje. Kössük össze a négyzetek közötti határpontokat egy sima görbe vonallal. És ugyanazt az aranyspirált kapjuk, amelyre a természetben sok élő és élettelen tárgy épül.

És mielőtt rátérnénk az aranymetszésre, gondoljuk át. Itt felépítettünk egy spirált a Fibonacci sorozat négyzetei alapján (1, 1, 2, 3, 5, 8 és 1, 1, 4, 9, 25, 64 négyzetek). De mi történik, ha nem a számok négyzeteit használjuk, hanem azok kockáit? A kockák így néznek ki középről:

És az oldalon:

Nos, ha spirált építünk, az kiderül térfogati arany spirál:

Így néz ki ez a terjedelmes arany spirál oldalról:

De mi van, ha nem fibonacci számkockákat veszünk, hanem átlépünk a negyedik dimenzióba?.. Ez egy rejtvény, nem?

Arról viszont fogalmam sincs, hogy a térfogati aranymetszés hogyan jelenik meg a természetben a Fibonacci-számok kockái alapján, még kevésbé a negyedik hatványra számítva. Ezért a repülőn visszatérünk az aranymetszethez. Tehát nézzük újra a négyzeteinket. Matematikailag a következő képet kapjuk:

Vagyis megkapjuk az aranymetszést - ahol az egyik oldalt olyan arányban osztják két részre, hogy a kisebbik rész a nagyobbhoz viszonyuljon, mint a nagyobbik a teljes értékhez.

Vagyis a: b = b: c vagy c: b = b: a.

Többek között ennek a nagyságaránynak az alapján épül fel egy szabályos ötszög és egy pentagram:

Referenciaként: pentagram felépítéséhez szabályos ötszöget kell felépíteni. Építésének módját Albrecht Durer (1471...1528) német festő és grafikus dolgozta ki. Legyen O a kör középpontja, A egy pont a körön, E pedig az OA szakasz felezőpontja. Az O pontban visszaállított OA sugárra merőleges metszi a kört a D pontban. Iránytűvel ábrázoljuk az átmérőn a CE = ED szakaszt. A körbe írt szabályos ötszög oldalhossza egyenlő DC-vel. A DC szakaszokat ábrázoljuk a körön, és öt pontot kapunk egy szabályos ötszög rajzolásához. Az ötszög sarkait átlókkal összekötjük egymással, és kapunk egy pentagramot. Az ötszög minden átlója felosztja egymást az aranymetszés által összekötött szegmensekre.

Általában ezek a minták. Sőt, a leírtaknál sokkal változatosabb minták léteznek. És most, ennyi unalmas szám után, itt az ígért videó, ahol minden egyszerű és világos:

Mint látható, a matematika valóban jelen van a természetben. És nem csak a videóban felsorolt ​​tárgyakban, hanem sok más területen is. Például, amikor egy hullám eléri a partot és forog, akkor az Aranyspirál mentén forog. Stb :)

A minket körülvevő világ, a legkisebb láthatatlan részecskéktől a végtelen űr távoli galaxisaiig, tele van megfejtetlen rejtéllyel. Néhány tudós érdeklődő elméjének köszönhetően azonban néhányukról már fellebbent a rejtély fátyla.

Az egyik ilyen példa az "aranymetszés" és Fibonacci számok , amelyek az alapját képezik. Ez a minta matematikai formában tükröződik, és gyakran megtalálható az embert körülvevő természetben, ismételten kizárva annak lehetőségét, hogy véletlenül alakult volna ki.

Fibonacci számok és sorozatuk

Fibonacci számsor számok sorozata, amelyek mindegyike az előző kettő összege:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377

Ennek a sorozatnak a sajátossága a számértékek, amelyeket a sorozat számainak egymással való elosztásával kapunk.

A Fibonacci számsorozatnak megvannak a maga érdekes mintái:

  • A Fibonacci-számsorozatban minden szám osztva a következővel egy-egy értéket mutat 0,618 . Minél távolabb vannak a számok a sorozat elejétől, annál pontosabb lesz az arány. Például a sor elejére vett számok 5 És 8 meg fog mutatkozni 0,625 (5/8=0,625 ). Ha a számokat vesszük 144 És 233 , akkor megmutatják az arányt 0.618 .
  • Ha viszont egy Fibonacci-számsorozatban elosztunk egy számot az előzővel, akkor az osztás eredménye 1,618 . A példában ugyanazokat a számokat használtuk, mint a fentiekben: 8/5=1,6 És 233/144=1,618 .
  • Az utána következővel elosztott szám közeledő értéket mutat 0,382 . És minél távolabbra veszik a számokat a sorozat elejétől, annál pontosabb az arány: 5/13=0,385 És 144/377=0,382 . A számok fordított sorrendben történő elosztása megkapja az eredményt 2,618 : 13/5=2,6 És 377/144=2,618 .

A fent leírt számítási módszerek segítségével és a számok közötti rések növelésével a következő értéksorok származtathatók: 4,235, 2,618, 1,618, 0,618, 0,382, 0,236, amelyet széles körben használnak a Fibonacci eszközökben a Forex piacon.

Aranymetszés vagy isteni arány

A szegmenssel való analógia az „aranymetszést” és a Fibonacci-számokat nagyon egyértelműen ábrázolja. Ha az AB szakaszt olyan arányban osztjuk el C ponttal, hogy a feltétel teljesül:

AC/BC=BC/AB, akkor ez lesz az „aranymetszés”

OLVASSA EL AZ ALÁBBI CIKKEKET MÉG:

Meglepő módon pontosan ez a kapcsolat követhető nyomon a Fibonacci-sorozatban. Ha kivesz néhány számot egy sorozatból, akkor számítással ellenőrizheti, hogy ez így van-e. Például ez a Fibonacci-számsorozat... 55, 89, 144 ... Legyen a 144-es szám a fent említett AB egész szegmens. Mivel 144 az előző két szám összege, így 55+89=AC+BC=144.

A szegmensek felosztása a következő eredményeket fogja mutatni:

AC/BC=55/89=0,618

BC/AB=89/144=0,618

Ha az AB szakaszt egésznek, vagy egységnek vesszük, akkor AC=55 ennek az egésznek a 0,382-e, a BC=89 pedig 0,618-nak felel meg.

Hol fordulnak elő a Fibonacci-számok?

A görögök és az egyiptomiak már jóval Leonardo Fibonacci előtt ismerték a Fibonacci-számok szabályos sorozatát. Ez a számsor azután kapta ezt a nevet, hogy a híres matematikus biztosította ennek a matematikai jelenségnek a tudósok körében való széles körű elterjedését.

Fontos megjegyezni, hogy az arany Fibonacci-számok nem csupán tudományok, hanem a minket körülvevő világ matematikai ábrázolása. Számos természeti jelenség, a növény- és állatvilág képviselőinek arányaiban megvan az „aranymetszés”. Ezek a héj spirális fürtjei, valamint a napraforgómag, a kaktuszok és az ananászok elrendezése.

A spirál, amelynek ágainak aránya az „aranymetszés” törvényeinek hatálya alá tartozik, a hurrikán kialakulásának, a pókháló szövésének, a sok galaxis alakjának, a DNS-molekulák összefonódásának, ill. sok más jelenség.

A gyík farkának testéhez viszonyított hosszának aránya 62:38. A cikóriahajtás kilökődést hajt végre, mielőtt kiengedi a levelet. Az első lap kioldása után egy második kilökődés történik a második lap kioldása előtt, az első kidobás hagyományos erőegységének 0,62-ével egyenlő erővel. A harmadik kiugró érték 0,38, a negyedik pedig 0,24.

Egy kereskedő számára az is nagyon fontos, hogy a Forex piacon az ármozgás gyakran az arany Fibonacci-számok mintájának van kitéve. E sorrend alapján számos olyan eszközt hoztak létre, amelyeket a kereskedő használhat az arzenáljában

A kereskedők által gyakran használt „ ” eszköz nagy pontossággal képes megmutatni az ármozgások célpontjait, valamint annak korrekciós szintjeit.

  • Fordítás

Bevezetés

A programozóknak mostanra elegük kell a Fibonacci-számokból. Számításukra mindvégig példákat használunk. Ez azért van, mert ezek a számok adják a rekurzió legegyszerűbb példáját. Ezek is jó példái a dinamikus programozásnak. De szükséges-e ezeket így kiszámítani egy valós projektben? Nincs szükség. Sem a rekurziós, sem a dinamikus programozás nem ideális választás. És nem egy lebegőpontos számokat használó zárt képlet. Most elmondom, hogyan kell helyesen csinálni. De először nézzük meg az összes ismert megoldási lehetőséget.

A kód Python 3-hoz készült, bár a Python 2-vel is működnie kell.

Először is hadd emlékeztesselek a definícióra:

Fn = Fn-1 + Fn-2

És F 1 = F 2 =1.

Zárt képlet

A részleteket kihagyjuk, de az érdeklődők megismerkedhetnek a képlet levezetésével. Az ötlet az, hogy feltételezzük, hogy van olyan x, amelyre F n = x n, majd keressük meg x-et.

Mit jelent

Csökkentse x n-2

A másodfokú egyenlet megoldása:

Itt nő az „aranymetszés” ϕ=(1+√5)/2. Az eredeti értékeket behelyettesítve és további számításokat végezve a következőket kapjuk:

Ezt használjuk az Fn kiszámításához.

__jövő__ import részlegből import math def fib(n): SQRT5 = math.sqrt(5) PHI = (SQRT5 + 1) / 2 return int(PHI ** n / SQRT5 + 0,5)

Jó:
Gyors és egyszerű kis n
A rossz:
Lebegőpontos műveletek szükségesek. A nagy n nagyobb pontosságot igényel.
Gonosz:
A komplex számok használata az F n kiszámításához matematikai szempontból szép, de számítógépes szempontból csúnya.

Rekurzió

A legkézenfekvőbb megoldás az, amelyet már sokszor látott, valószínűleg a rekurzió példájaként. A teljesség kedvéért még egyszer megismétlem. Pythonban egy sorba írható:

Fib = lambda n: fib(n - 1) + fib(n - 2), ha n > 2 különben 1

Jó:
Egy nagyon egyszerű megvalósítás, amely követi a matematikai definíciót
A rossz:
Exponenciális végrehajtási idő. Nagy n esetén nagyon lassú
Gonosz:
Stack Overflow

Memorizálás

A rekurziós megoldásnak van egy nagy problémája: az átfedő számítások. A fib(n) meghívásakor a fib(n-1) és a fib(n-2) megszámlálódik. De amikor a fib(n-1)-t megszámoljuk, a fib(n-2)-t ismét függetlenül számolja – vagyis a fib(n-2)-t kétszer számolja. Ha folytatjuk az érvelést, látni fogjuk, hogy a fib(n-3) háromszor lesz számolva stb. Túl sok kereszteződés.

Ezért csak emlékeznie kell az eredményekre, hogy ne számolja újra. Ez a megoldás lineárisan időt és memóriát fogyaszt. A megoldásomban szótárt használok, de egy egyszerű tömb is használható.

M = (0:0, 1:1) def fib(n): ha n az M-ben: visszatérés M[n] M[n] = fib(n - 1) + fib(n - 2) visszatérés M[n]

(Pythonban ez a functools.lru_cache dekorátorral is megtehető.)

Jó:
Csak alakítsa át a rekurziót memóriamegoldássá. Az exponenciális végrehajtási időt lineáris végrehajtássá alakítja, ami több memóriát fogyaszt.
A rossz:
Sok memóriát pazarol
Gonosz:
Lehetséges veremtúlcsordulás, akárcsak a rekurzió

Dinamikus programozás

A memorizálással való megoldás után világossá válik, hogy nem az összes korábbi eredményre van szükségünk, hanem csak az utolsó kettőre. Továbbá, ahelyett, hogy a fib(n)-ből kezdenénk és visszafelé haladnánk, kezdhetjük a fib(0)-ból, és haladhatunk előre. A következő kód lineáris végrehajtási idővel és fix memóriahasználattal rendelkezik. A gyakorlatban a megoldási sebesség még nagyobb lesz, mivel nincs rekurzív függvényhívás és kapcsolódó munka. És a kód egyszerűbbnek tűnik.

Ezt a megoldást gyakran emlegetik a dinamikus programozás példájaként.

Def fib(n): a = 0 b = 1 __ esetén az(n) tartományban: a, b = b, a + b visszatér a

Jó:
Gyorsan működik kis n-es, egyszerű kódokhoz
A rossz:
Még mindig lineáris végrehajtási idő
Gonosz:
Semmi különös.

Mátrix algebra

És végül a legkevésbé megvilágított, de a leghelyesebb megoldás, okosan kihasználva az időt és a memóriát. Bármilyen homogén lineáris szekvenciára kiterjeszthető. Az ötlet a mátrixok használata. Elég csak ezt látni

És ennek az általánosítása ezt mondja

Az x két korábban kapott értéke, amelyek közül az egyik az aranymetszés volt, a mátrix sajátértékei. Ezért a zárt képlet levezetésének másik módja a mátrixegyenlet és a lineáris algebra használata.

Miért hasznos tehát ez a megfogalmazás? Mivel a hatványozás logaritmikus időben is elvégezhető. Ez négyzetesítéssel történik. A lényeg az

Ahol az első kifejezést páros A-ra használjuk, a másodikat páratlanra. Már csak a mátrixszorzások rendszerezése van hátra, és minden készen áll. Ez a következő kódot eredményezi. Létrehoztam a pow rekurzív megvalósítását, mert könnyebben érthető. Lásd az iteratív verziót itt.

Def pow(x, n, I, mult): """ Az x-et n hatványára adja vissza. Feltételezi, hogy I az azonosságmátrix, amelyet mult-tal szorozunk, és n egy pozitív egész """, ha n == 0: I visszatérés elif n == 1: return x else: y = pow(x, n // 2, I, mult) y = mult(y, y) if n % 2: y = mult(x, y) return y def identitásmátrix (n): """Egy n x n azonossági mátrixot ad vissza""" r = lista(tartomány(n)) return [ for j in r] def matrix_multiply(A, B): BT = lista(zip(*B) ) return [ for A row_a in A] def fib(n): F = pow([, ], n, Identitásmátrix(2), Matrix_multiply) return F

Jó:
Rögzített memóriaméret, logaritmikus idő
A rossz:
A kód bonyolultabb
Gonosz:
Mátrixokkal kell dolgozni, bár nem olyan rosszak

Teljesítmény-összehasonlítás

Csak a dinamikus programozás és a mátrix változatát érdemes összehasonlítani. Ha összehasonlítjuk őket az n számban lévő karakterek számával, akkor kiderül, hogy a mátrixmegoldás lineáris, a dinamikus programozású megoldás pedig exponenciális. Gyakorlati példa a fib(10 ** 6) kiszámítása, amely szám több mint kétszázezer számjegyből áll.

N=10**6
A fib_mátrix kiszámítása: fib(n) mindössze 208988 számjegyből áll, a számítás 0,24993 másodpercet vett igénybe.
A fib_dynamic kiszámítása: fib(n) mindössze 208988 számjegyből áll, a számítás 11,83377 másodpercet vett igénybe.

Elméleti jegyzetek

Bár nem kapcsolódik közvetlenül a fenti kódhoz, ez a megjegyzés mégis érdekes. Tekintsük a következő grafikont:

Számoljuk meg az n hosszúságú utak számát A-tól B-ig. Például n = 1 esetén egy utunk van, 1. n = 2 esetén ismét egy utunk van, 01. n = 3 esetén két út van, 001 és 101 Egész egyszerűen kimutatható, hogy az n hosszúságú utak száma A-tól B-ig pontosan egyenlő F n-nel. Miután felírtuk a gráf szomszédsági mátrixát, ugyanazt a mátrixot kapjuk, amelyet fentebb leírtunk. A gráfelméletből jól ismert eredmény, hogy egy A szomszédsági mátrix mellett az A n-beli előfordulások a gráf n hosszúságú utak számát jelentik (a Good Will Hunting című filmben említett egyik probléma).

Miért vannak ilyen jelölések a bordákon? Kiderült, hogy ha figyelembe veszünk egy végtelen szimbólumsorozatot egy grafikonon lévő végtelen útvonalon, akkor valami úgynevezett "véges típusú aleltolást" kapunk, amely a szimbolikus dinamikai rendszer egy típusa. A véges típusnak ezt a bizonyos részeltolását „aranymetszés-eltolódásnak” nevezik, és a „tiltott szavak” halmaza határozza meg (11). Más szavakkal, olyan bináris sorozatokat fogunk kapni, amelyek mindkét irányban végtelenek, és nem lesz pár egymás mellett. Ennek a dinamikus rendszernek a topológiai entrópiája egyenlő a ϕ aranymetszővel. Érdekes, hogy ez a szám periodikusan megjelenik a matematika különböző területein.

Címkék: Címkék hozzáadása

Ha megnézzük a körülöttünk lévő növényeket és fákat, láthatjuk, hány levél van mindegyiken. Távolról úgy tűnik, hogy az ágak és a levelek a növényeken véletlenszerűen helyezkednek el, nem meghatározott sorrendben. Azonban minden növényben csodával határos módon, matematikailag precíz módon melyik ág honnan fog kinőni, hogyan helyezkednek el az ágak, levelek a szár vagy törzs közelében. A növény megjelenésének első napjától kezdve pontosan követi fejlődésében ezeket a törvényszerűségeket, vagyis egy levél, egy virág sem jelenik meg véletlenül. A növény megjelenése előtt már pontosan be van programozva. Hány ág lesz a leendő fán, hol nőnek az ágak, hány levél lesz az egyes ágakon, és hogyan és milyen sorrendben helyezkednek el a levelek. Botanikusok és matematikusok közös munkája rávilágított ezekre a csodálatos természeti jelenségekre. Kiderült, hogy a Fibonacci sorozat a levelek elrendezésében egy ágon (phylotaxis), a száron való fordulatok számában, a ciklusban lévő levelek számában nyilvánul meg, így az aranymetszés törvénye is megnyilvánul. maga.

Ha numerikus mintákat keres az élő természetben, észre fogja venni, hogy ezek a számok gyakran megtalálhatók különféle spirális formákban, amelyek oly gazdagok a növényvilágban. Például a levéldugványok a szár mellett egy spirálban helyezkednek el, amely két szomszédos levél között halad át: teljes fordulat - mogyoróban, - tölgyben, - nyárban és körtében, - fűzben.

A napraforgó, az Echinacea purpurea és sok más növény magjai spirálban helyezkednek el, a spirálok száma minden irányban a Fibonacci-szám.

Napraforgó, 21 és 34 spirál. Echinacea, 34 és 55 spirálok.

A virágok tiszta, szimmetrikus formája is szigorú törvény hatálya alá tartozik.

Sok virág esetében a szirmok száma pontosan megegyezik a Fibonacci sorozatból származó számokkal. Például:

írisz, 3p. boglárka, 5 lep. aranyvirág, 8 lep. szarkaláb,


cikória, 21 lep. őszirózsa, 34 lep. százszorszép, 55 lep.

A Fibonacci sorozat számos élő rendszer szerkezeti felépítését jellemzi.

Korábban már említettük, hogy a Fibonacci-sorban a szomszédos számok aránya a φ = 1,618. Kiderült, hogy maga az ember egyszerűen a phi számok tárháza.

Testünk különböző részeinek arányai nagyon közel állnak az aranymetszethez. Ha ezek az arányok egybeesnek az aranymetszés képletével, akkor a személy megjelenése vagy teste ideális arányúnak tekinthető. Az emberi test aranymértékének kiszámításának elve diagram formájában ábrázolható.

M/m = 1,618

Az aranymetszés első példája az emberi test felépítésében:



Ha az emberi test középpontjának a köldökpontot vesszük, és mértékegységnek a lábfej és a köldökpont távolságát, akkor egy személy magassága 1,618-nak felel meg.

Emberi kéz

Elég, ha közelebb hozod magadhoz a tenyeredet, és alaposan megnézed a mutatóujjadat, és azonnal megtalálod benne az aranymetszés képletét. A kezünk minden ujja három falangból áll.
Az ujj első két falangjának összege az ujj teljes hosszához viszonyítva adja az aranymetszés számát (a hüvelykujj kivételével).

Ezenkívül a középső ujj és a kisujj aránya megegyezik az aranymetszéssel.

Egy személynek 2 keze van, mindkét kéz ujjai 3 ujjból állnak (a hüvelykujj kivételével). Mindegyik kézen 5 ujj található, azaz összesen 10, de két két falanxos hüvelykujj kivételével csak 8 ujj jön létre az aranymetszés elve szerint. Míg mindezek a 2, 3, 5 és 8 számok a Fibonacci-sorozat számai.


Az aranymetszés az emberi tüdő szerkezetében

Az amerikai fizikus B.D. és Dr. A.L. Goldberger fizikai és anatómiai vizsgálatok során megállapította, hogy az emberi tüdő szerkezetében van egy aranymetszés is.

Az emberi tüdőt alkotó hörgők sajátossága az aszimmetriájukban rejlik. A hörgők két fő légútból állnak, amelyek közül az egyik (bal) hosszabb, a másik (jobb) rövidebb.

Megállapítást nyert, hogy ez az aszimmetria a hörgők ágaiban, az összes kisebb légutakban folytatódik. Ezenkívül a rövid és hosszú hörgők hosszának aránya egyben az aranymetszés is, és egyenlő 1:1,618-cal.

Művészek, tudósok, divattervezők, tervezők az aranymetszés aránya alapján készítik számításaikat, rajzaikat vagy vázlataikat. Emberi testből származó méréseket használnak, ami szintén az aranymetszés elve szerint jött létre. Leonardo Da Vinci és Le Corbusier remekműveik elkészítése előtt az emberi test paramétereit vették figyelembe, amelyeket az Aranyarány törvénye szerint hoztak létre.
Van egy másik, prózaibb alkalmazása az emberi test arányainak. A bűnelemzők és régészek például ezeket a kapcsolatokat felhasználva az emberi testrészek töredékeit használják fel az egész megjelenésének rekonstruálására.



Előző cikk: Következő cikk:

© 2015 .
Az oldalról | Kapcsolatok
| Oldaltérkép