Eida.cz - Rekurentní východiska

Rekurentní východiska

Eida

Kromě toho, že si neustále přeji ventilátor, je léto dokonalým obdobím na pokusy vyplnit všechny resty a tak nějak dohnat, co se dá. A někdy i to, co se třeba nedá. Tři roky nazpátek se něco takového stalo sice poprvé, ale byl to jen odlesk monumentálního zklamání, tohle celé mělo dávno začít někde jinde a upomínka mi tu straší určitě už přes osm let, stále neodškrtnutá. V celkovém čase se zase vrátíme o téměř 12 let zpátky, kde u některých z nás bohužel započala nyní již nezvratná krocanizace. Zpátky na úplný počátek všeho, ještě před rekurentní opravy, hezky na samotná rekurentní východiska

Proč teď a proč ne už dávno? Jednoduše nebyl čas a je kolikrát lepší myšlenku odkládat, dokud na stromě neuzraje, nebo dokud se spíš neobjeví nějaký skutečně palčivý důvod, proč si pospíšit. Trochu to souvisí s letošním volnočasovým pet-projektem, o kterém bude snad řeč zase v nějakém budoucnu, trochu víc to souvisí s neustálým pozorováním degradace snad všech z dávnočasu, kteří zpohodlněli a přestali se rozvíjet. I když, pravda, někde se pro to něco udělalo, bohužel třeba pitomá dcera z rodiny vší a pavouků teď taky uplave dalších 50 m, ale to se asi nedá úplně počítat jako životní úspěch, protože toho stejně na profesionální úrovni nikdy nevyužije. Co se týče toho projektu, pak ukázal, že problematika formálních operací má daleko vyšší váhu, než se pokusit něco rychle navrhnout a pak zoufat, že to vlastně bez soustavy parciálních diferenciálních rovnic není možné nijak dokončit.

Řeč bude zase o tom FITovém zadání druhého projektu, takže pro připomenutí, jednalo se hlavně o ukázku toho, že se dá každý rekurentní vztah nahradit iteračním algoritmem. Tak nějak znělo zadání, ale zpětně je velmi složité říct, jestli tohle celé mělo cvičit pouze dovednost bojovat v čistém céčku a nikdy jinak, obecně se vypořádat s algoritmy a datovými strukturami (a to byla asi ta oficiální náplň předmětu), nebo donutit studenty zamyslet se nad dekompozicí zadaného problému opravdu do detailů, tedy na formální úrovni. To poslední (ale dost možná i to druhé) se po didaktické a výchovné stránce rozhodně nepovedlo, protože nebyl stanoven žádný širší rámec úkolu, pouze požadavky typu dělej, co ti řekneme. Pokaždé se snažím svým čumáčkům vštěpovat, že pokud chtějí něco udělat, měli by vždy minimálně v hrubých rysech vědět, co a do jakého stavu chtějí vlastně dostat. V tomhle konkrétním případě bylo jakési programování zaklíněné do vytvoření numerického řešení příkladu, ke kterému chybělo vysvětlení jeho analytického východiska. Takže nenasměrovaní divočáci zkrátka vezmou první ověřené řešení z nějakého vzorečkového trápení jako vlastní a dál se už neptají, jak na to. Jak si vlastně představujete, že se v takových podmínkách ze zmateného studenta stane odborník? Až na výjimky z něj bude jenom krocan.

Vzorečkovým trápením je proces, který je třeba podstoupit, ale v tomhle smyslu to bohužel znamená spíše převzetí nějaké už hotové součtové řady pro konkrétní funkci, a to buď někde na Internetu, Wikipedii, nebo v lepším případě z monografie, kterou může být třeba stařičká Bartch — Matematické vzorce z roku 1963, nebo její zestručněný výcuc. To není úplně super způsob, jak si osvojit nějakou dovednost, takže pojďme se pustit do pátrání po tom, jak ke vzorečku dospět vlastní cestou a díky tomu umět předpovědět i některá jeho chování a úskalí.

V minulých rekurentních opravách byla v souvislosti s integrály, kde se tedy hledala aproximace plochy pod křivkou, nahrazována samotná skutečná křivka pomocí dvou bodů, kterými bezpodmínečně procházela, tzv. interpolačním polynomem. Ten byl ze vzorečku ukázán jako Lagrangeův, ale mohl by být také tvořený pomocí poměrných diferencí, ale na tom moc nezáleží. Záleželo hlavně na tom, aby se co nejvíce blížil původní křivce, tedy aby procházel optimálním množstvím uzlů, které označovaly jeho stupeň. Zajímavé na tom bylo především to, že každý další stupeň vycházel z předešlého stupně. A o to jde. Tady budeme hledat nikoliv křivku, ale samotnou funkční hodnotu, tedy aproximaci konkrétní hodnoty funkce ve zvoleném bodě, přičemž i tato aproximace bude jenom tak přesná, do kolika stupňů se ji rozhodneme přesnou mít. Tohle zní hodně teoreticky, ale ve finále tedy vlastně hledáme zase nějakou součtovou řadu polynomů. A taková součtová řada je rekurentní, protože její každý další člen v novém stupni používá všechny prvky předchozích stupňů. To pak samozřejmě lze převést na iteraci, jelikož iterujeme přes jednotlivé stupně až do ukončovací podmínky.

K rozvoji funkcí přesně k tomuto účelu slouží Taylorova řada. Jedná se o polynom, který v určitém okolí nějakého pevně zvoleného bodu aproximuje průběh nahrazované funkce. A teď ale přijde asi ten kámen úrazu, protože nechtějme přeci po středoškolácích umět derivovat, že ano. Když pomineme pro ně docela abstraktní myšlenku podmínky, že daná funkce musí mít ve zvoleném bodě derivaci, věta Taylorova rozvoje říká, že požadovanou funkci f(x) v okolí bodu a můžeme vyjádřit jako

$$ f(x)\,=\, \sum_{i=0}^{n}\dfrac{f^{(i)}(a)}{i!}(x-a)^{i} + R_{n+1}^{f,a}(x), $$

kde se sčítají jednotlivé členy až do řádu (n+1)-té derivace funkce f(x) a R je v tomto případě vyjádření zbytku v Lagrangeově tvaru, což bylo opět detailně popsáno minule na příkladě s integrály a hledáním nejmenšího postačujícího počtu subintegrálů. Když se vzoreček tedy rozepíše pro nynější účely, dostane formu

$$ f(x)\,\approx\, \sum_{i=0}^{n}\dfrac{f^{(i)}(a)}{i!}(x-a)^{i}, $$

$$ f(x)\,\approx\, f(a) + \dfrac{f'(a)}{1!}(x-a) + \dfrac{f''(a)}{2!}(x-a)^2 + \cdots + \dfrac{f^{(n)}}{n!}(x-a)^{n}. $$

Co to, co to tedy znamená? Funkční hodnota pro x je tady aproximovaná součtem jednotlivých členů Ti od 0 do n, kde se každý z nich od předcházejícího o jedna liší stupněm derivace funkce, mocninou rozdílu požadovaného bodu a faktoriálem ve zlomku. Dalo by se tedy říct, že T1 = T0 + nový zlomek, T2 = T1 + nový zlomek, T(i) = T(i-1) + nový zlomek, ale pořád je to jen teorie a není tu vidět moc místa pro konkrétní optimalizace. To přijde.

Zvolené funkce jsou pro úkol dostatečně jednoduché v tom smyslu, že jsou buď dokonale periodické (goniometrické funkce), nebo jsou zajímavé pouze na nějakém omezeném intervalu (logaritmy). To znamená, že bod, kolem kterého chceme funkci nechat rozvíjet, lze položit rovný nule (a=0). Už v tu chvíli dojde k prvnímu značenému zjednodušení, minimálně co se týče mocniny dvojčlenu (rozdílu hledaného x a bodu a) v čitateli, která přejde přejde na obyčejnou mocninu x. Formálně se řady definované jako

$$f(x)\,\approx\ \sum_{i=0}^{n}\dfrac{f^{(i)}(0){\cdot}x^{i}}{i!} $$

označují Maclaurinovy a jejich hotové a rozvinuté tvary jsou právě součástí různých knížek, ze kterých se to dá celé prostě jen bez úsilí opsat. Ale tak zkusme si některé z nich odvodit, bude to jistě zábava. Třeba pro ten sin(x). V první řadě je potřeba se zamyslet nad derivacemi.

$$ f(x)\,=\,f^{(0)}(x)\,=\,\sin(x), $$

$$ f'(x)\,=\,\cos(x),\,f''(x)\,=\,-\sin(x),\,f'''(x)\,=\,-\cos(x), $$

$$ f^{(4)}(x)\,=\,\sin(x)\,=\,f^{(0)}(x). $$

Jak se ukázalo, pro sin(x) existují pouze čtyři možné stavy, které se neustále opakují. No a jak je to s funkčními hodnotami v bodě a: x = 0? Velice jednoduše, pro sin(0) = 0, pro cos(x) = 1, a tedy pro -cos(x) = -1. To je na další zamyšlení, protože je hodnota sin(0) pokaždé nulová a protože se nachází v čitateli, bude nulový celý zlomek. A protože je nulový celý zlomek, lze ho v součtu zcela vynechat a použít pouze liché členy s funkcí cos(x) v čitateli, která ale střídavě nabývá pouze hodnot +1 a -1. Po úvaze tedy skutečně dojdeme k hotovému vzorečku

$$ \sin(x)\,\approx\, \dfrac{x^1}{1!}-\dfrac{x^3}{3!}+\dfrac{x^5}{5!}-\dfrac{x^7}{7!}+\cdots, $$

který je obyčejně v knížce matematicky shrnut sumičkou ve smyslu součtu všech sudých a rozdílu všech lichých členů podílu každé liché mocniny a lichého faktoriálu. Což je bezesporu správně a je to supr shrnuté, ale už se to moc nedá použít pro efektivní praktickou aplikaci v iteračním výpočtu — jednoduše proto, že si ani s výkonným strojem nemůžeme dovolit s každým členem počítat nekonečné faktoriály a složitě umocňovat. Správným způsobem je najít pravidelný a přesně určený přírůstek každého kroku. Ten získáme vydělením dvou po sobě jdoucích členů ve výše uvedeném výpočtu, což by mohlo být zhruba

$$T_{i}(x)\,=\,-\dfrac{T_{(i-1)}{\cdot}x^{2}}{(i {\cdot} (i-1))};\,i = i+2 $$

při počátečních podmínkách ξ0 = 0, T0 = ξ0 a i = 3. Což je fakt skvělé, protože se nic zbytečně složitého počítat nemusí. Ok, tak z tohoto se nějakým způsobem složí tedy iterace, ale jak poznáme, kdy skončit, jak zavést a pracovat s hodnotou ε? Pojďme s nejprve podívat na to, co se to tady vlastně v každém kroku děje.

Taylorovy polynomy stupňů 0, 1, 3, 5, 7 a 9 pro funkci sin(x) v bodě [x=0].

S každým nově spočítaným polynomem se teoreticky snižuje případná chyba a zvyšuje se přesnost. Požadovaná přesnost určovaná parametrem ε obecně značí maximální požadovaný rozdíl mezi aproximacemi ξi a ξ(i-1), což si tady můžeme představit třeba tak, že nově spočítaný zlomek má už tak malou hodnotu, že žádným významným způsobem neovlivní poslední sledované desetinné místo výsledku. A v tomhle ohledu rozhodně vyjukancům chybí nějaká základní průprava v numerických řešeních třeba v MatLabu, protože než natvrdu v Céčku vyrobit ryze krocanský kód, měla by být zavedena určitá dekompozice a generalizace řešení — totiž rozpad na dvě funkce s voláními sin_iter(double x, double x0, int N), která bude pracovat s pevným počtem for-iterací i = N a počáteční aproximací ξ0 = x0, a pak ta praktická sin_eps(double x, double epsilon), v níž bude teprve umístěná while smyčka volání předchozí funkce s počtem iterací N = 1 a počáteční aproximací získanou z předchozího výpočtu. Může se to tak třeba zdát složité a neefektivní, ale rozhodně to usnadní hodně situací v budoucnu. Ale to vzhledem ke krocanství asi stejně nevyjde.

No a taky je potřeba nezapomínat na optimalizaci iterační funkce, čemuž se tam tak trochu věnují a říkají tomu heuristika, což je možná… trochu nadnesené, ale technicky správné. Při funkci sin(x) je docela snadné si uvědomit její symetrii a vědět, že pro některé vstupní hodnoty v kruhu (násobky π) jsou výstupní hodnoty stejné, takže nemá smysl je počítat do vysokých hodnot. Co se ale už neříká, je to, že tyto hodnoty by bylo super soustředit co nejblíže bodu a, kolem kterého se aproximace rozvíjí. To by mělo být ale patrné z výše uvedeného obrázku a hlavně z postupu, kterým jsme si tu vesele a hravě prošli.

Tak tohle bylo docela příjemné, ne? No jistě, protože zadané funkce jsou hrozně jednoduché, ale co když časem přijde úkol velice obdobný, třeba počítat něco takového na funkci více proměnných, co já vím, f(x, y, z) = cos(x+y2+5z) v okolí nenulového bodu A = [0; π ; 0]? To už samozřejmě v knížkách na vzorečky nebude a popravdě nevěřím tomu, že by se na nějakém matemagickém fóru objevil nadšenec ochotný bezradnému krocanovi, který vlastně neví, co chce, nějak pomoci. Obecně je potřeba problém pochopit jako pedagogicko-didaktický nedostatek z pohledu nutných činností a lavírování kolem vedení k samostatnosti při práci, tedy jedním slovem: krocanizaci.

Ok, tak jak tedy na to? Viz výše, potřebujeme v první řadě získat požadované stupně derivací a vyzjistit jejich funkční hodnoty dosazením bodu A. Jenže tady si tak trochu naběhneme, protože derivace funkce více proměnných není tak úplně intuitivní, jak by se dalo čekat, ale jak už bylo řečeno, nechtějte po středoškolácích diferenciální počty. Funkce více proměnných je třeba derivovat po jednotlivých částech a tyto části poté složit, takže místo obyčejné derivace označované čárkou použijeme písmeno d a vyjadřovat jím budeme totální diferenciál funkce. To funguje přibližně takhle:

$$ \mathrm{d}f(x,y,z)\,=\, \dfrac{\partial{f}}{\partial{x}}\mathrm{d}x + \dfrac{\partial{f}}{\partial{y}}\mathrm{d}y + \dfrac{\partial{f}}{\partial{z}}\mathrm{d}z. $$

Totální diferenciál funkce je tedy součtem parciálních derivací funkce podle jejich jednotlivých proměnných. Ono to žůžo v tom schované obecně nastane až při počítání diferenciálů vyšších řádů, protože zdánlivě jednoduchá operace rázem dostane tvar

$$ \mathrm{d}^{2}f(x,y,z)\,=\,\mathrm{d}(\mathrm{d}f(x,y,z)), $$

$$ =\,\dfrac{\partial}{\partial{x}}\left( \dfrac{\partial{f}}{\partial{x}}\mathrm{d}x+ \dfrac{\partial{f}}{\partial{y}}\mathrm{d}y+ \dfrac{\partial{f}}{\partial{z}}\mathrm{d}z \right)\mathrm{d}x $$

$$ +\,\dfrac{\partial}{\partial{y}}\left( \dfrac{\partial{f}}{\partial{x}}\mathrm{d}x+ \dfrac{\partial{f}}{\partial{y}}\mathrm{d}y+ \dfrac{\partial{f}}{\partial{z}}\mathrm{d}z \right)\mathrm{d}y $$

$$ +\, \dfrac{\partial}{\partial{z}}\left( \dfrac{\partial{f}}{\partial{x}}\mathrm{d}x+ \dfrac{\partial{f}}{\partial{y}}\mathrm{d}y+ \dfrac{\partial{f}}{\partial{z}}\mathrm{d}z \right)\mathrm{d}z. $$

Hups, viď. Ale naštěstí se to dá celkem rozumě upravit a pak najednou začne být jasné, že to zas tak hrozné není, protože jednotlivé členy budou až podezřele připomínat tvary získané při umocňování polynomů, tedy koeficienty a mocniny se skutečně zorientují tak, aby respektovaly obvyklé geometrické uspořádání binomických koeficientů, kterému se asi častěji říká Pascalův trojúhleník.

$$ \mathrm{d}^{2}f(x,y,z)\,= $$

$$ =\dfrac{\partial^2{f}}{\partial{x^2}}\mathrm{d}x^{2} +\dfrac{\partial^2{f}}{\partial{x}\partial{y}}\mathrm{d}x\mathrm{d}y +\dfrac{\partial^2{f}}{\partial{x}\partial{z}}\mathrm{d}x\mathrm{d}z $$

$$ +\dfrac{\partial^2{f}}{\partial{x}\partial{y}}\mathrm{d}x\mathrm{d}y +\dfrac{\partial^2{f}}{\partial{y^2}}\mathrm{d}y^{2} +\dfrac{\partial^2{f}}{\partial{y}\partial{z}}\mathrm{d}y\mathrm{d}z $$

$$ +\dfrac{\partial^2{f}}{\partial{x}\partial{z}}\mathrm{d}x\mathrm{d}z +\dfrac{\partial^2{f}}{\partial{y}\partial{z}}\mathrm{d}y\mathrm{d}z +\dfrac{\partial^2{f}}{\partial{z^2}}\mathrm{d}z^{2} $$

$$ =\, \dfrac{\partial^2{f}}{\partial{x^2}}\mathrm{d}x^{2} +\dfrac{\partial^2{f}}{\partial{y^2}}\mathrm{d}y^{2} +\dfrac{\partial^2{f}}{\partial{z^2}}\mathrm{d}z^{2} $$

$$ +\, 2{\cdot}\dfrac{\partial^2{f}}{\partial{x}\partial{y}}\mathrm{d}x\mathrm{d}y +2{\cdot}\dfrac{\partial^2{f}}{\partial{y}\partial{z}}\mathrm{d}y\mathrm{d}z +2{\cdot}\dfrac{\partial^2{f}}{\partial{x}\partial{z}}\mathrm{d}x\mathrm{d}z $$

A tak by se dalo pokračovat, ale myslím, že docela pro vysvětlení totálního diferenciálu stačí, protože se to fakt špatně píše a výše zmíněný příklad taky bude úplně stačit dopočítat pouze do T1 a další stupně si třeba jen představovat. Takže, zpátky k němu. Je potřeba si vypsat konkrétní diferenciály až do chtěného stupně a k nim odpovídající funkční hodnoty v bodě A = [0; π; 0].

$$ T_{0}^{f, [0; \pi; 0]}\,=\,\cos(0+\pi^{2}+5\cdot{0})\,=\,\cos{(\pi^{2})} $$

Protože T0 je funkce samotná, začneme členem T1. Pokud to není jasné z nějakého analytického hlediska, parciální derivace fungují tak, že ostatní proměnné považujeme za konstanty. Tedy třeba při ∂f/∂x se bude derivovat pouze x a zbylé y a z budou zkrátka konstantní, jako jakékoliv jiné číslo.

$$ f(x,y,z)\,=\,\cos(x + y^{2} + 5{\cdot}z) $$

$$ \dfrac{\partial{f}}{\partial{x}}\,=\,\dfrac{\partial}{\partial{u}}\left( \cos(u)\right){\cdot} \dfrac{\partial}{\partial{x}} \left( x+y^{2}+5{\cdot}z \right) \,=\,-\sin{(u)}{\cdot}1\,=\,-\sin{(x+y^{2}+z)} $$

$$ \dfrac{\partial{f}}{\partial{y}}\,=\,\dfrac{\partial}{\partial{u}}\left( \cos(u)\right){\cdot}\dfrac{\partial}{\partial{y}} \left( x+y^{2}+5{\cdot}z \right) \,=\,-\sin{(u)}{\cdot}2{\cdot}y\,=\,-2{\cdot}y\sin{(x+y^{2}+z)} $$

$$ \dfrac{\partial{f}}{\partial{z}}\,=\,\dfrac{\partial}{\partial{u}}\left( \cos(u)\right){\cdot} \dfrac{\partial}{\partial{x}} \left( x+y^{2}+5{\cdot}z \right) \,=\,-\sin{(u)}{\cdot}5\,=\,-5{\cdot}\sin{(x+y^{2}+z)} $$

Do těchto parciálních derivací je pak potřeba dosadit bod A, aby v něm pak bylo možné sestavit první diferenciál funkce bez zbytečných potíží. Konkrétní hodnoty ∂f/∂x (resp. ∂f/∂y a ∂f/∂z) jsou pak koeficientem samotného rozdílu dx (resp. dy, dz), který je odvozen od bodu A.

$$ \dfrac{\partial{f}}{\partial{x}}^{[0; \pi\; 0]}\,=\,-\sin{(0+\pi^{2}+0)} \,=\,-\sin(\pi^{2}) $$

$$\dfrac{\partial{f}}{\partial{y}}^{[0; \pi\; 0]}\,=\,-2{\cdot}\pi\sin{(0+\pi^{2}+0)} \,=\,-2\pi\cdot\sin(\pi^{2}) $$

$$ \dfrac{\partial{f}}{\partial{z}}^{[0; \pi\; 0]}\,=\,-5{\cdot}\sin{(0+\pi^{2}+0)} \,=\,-5\cdot\sin(\pi^{2}) $$

$$ \mathrm{d}f^{[0; \pi; 0]}\,=\,-\sin({\pi^2}){\cdot}(x-0)-2\pi{\cdot}\sin(\pi^2){\cdot}(y-\pi)-5{\cdot}\sin(\pi^2){\cdot}(z-0) $$

Potom už nestojí v cestě žádná překážka k sestavení Taylorova polynomu prvního stupně, který bude začínat stupněm nultým, samotnou hodnotou funkce.

$$ T_{1}^{f, [0; \pi; 0]}\,=\,T_{0}^{f, [0; \pi; 0]} + \dfrac{\mathrm{d}f(0,\pi,0)}{1!} $$

$$ T_{1}^{f, [0; \pi; 0]}\,=\,\cos(\pi^2)+\left( -\sin({\pi^2}){\cdot}(x-0)-2\pi{\cdot}\sin(\pi^2){\cdot}(y-\pi)-5{\cdot}\sin(\pi^2){\cdot}(z-0) \right) $$

$$ =\,\cos(\pi^2)-\sin(\pi^{2})\cdot\dfrac{\left( x^{1}+2\pi\cdot(y-\pi)^{1}+5z^{1} \right)}{1} $$

$$ =\,\cos(\pi^2)-\sin(\pi^{2})\cdot\left( \dfrac{x^{1}}{1}+\dfrac{5z^{1}}{1}+2\pi\cdot\dfrac{(y-\pi)^{1}}{1} \right) $$

No a velice obdobně se bude postupovat pro druhý stupeň polynomu, který bude vycházet z výše uvedeného s velice jasně danou formou

$$ T_{2}^{f, [0; \pi; 0]}\,=\,T_{1}^{f, [0; \pi; 0]} + \dfrac{\mathrm{d}^{2}f(0,\pi,0)}{2!}. $$

Protože analyticky je mocnina rozdílu výchozího bodu od počítané hodnoty obsažena už v diferenciálu, je potřeba při návrhu iteračního řešení pracovat s jednotlivými členy jako celkem po odpovídajících částech jednotlivých proměnných, ale to je asi jasné. Přírůstek mezi jednotlivými kroky bude pořád zkrátka dopočitatelný z Ti a T(i-1), jako tomu bylo v případě jedné proměnné. Postup nějak rozumě shrneme, zas tak úplně beznadějné to není:

  1. Je potřeba si sepsat všechny parciální derivace zkoumané funkce až do řádu n, který chceme nějak dopočítat. V případě periodických a jinak speciálních funkcí půjde třeba narazit na vzor, který se začne opakovat. Pokud funkce už dál nebude derivovatelná (vyjde konstanta), je asi dosaženo konce analytického řešení.
  2. Do vypočítaných parciálních derivací se dosadí bod, okolo kterého je funkce rozvíjena.
  3. Pak je potřeba vypsat si jednotlivé diferenciály až do řádu n v požadovaném bodě.
  4. Konečným krokem je sestavení Taylorova polynomu požadovaného stupně n a je opravdu potřeba si dávat pozor na faktoriály a nezapomenout je.

Tak možná tímhle obecným postupem by se dala dnešní polemika asi zakončit. Zkrátka největší potíží mladých krocánků pořád zůstane to, že je nikdo nepovede k podstatě řešení, pouze se po nich bude chtít do puntíku splnit jednotlivé úkoly. Nemyslím si, že pak mají nějakou šanci skutečně uspět, natož jednoho skončit mezi hvězdami. Ono jakkoliv se to celé zdá třeba takhle zpětně triviální, v mladých myslích je spoustu prostoru pro zakořenění chyb a omezení z nevědomosti, které navíc nebudou mít ani žádný výchovný smysl. Třeba jak někoho v takovém stavu přimět k diskusi o hledání intervalů nejrychlejší konvergence? Asi těžko. A protože tohle až do dneška vedu už desítky let v patrnosti, je asi vidět, jak velké trápení to je. Je mi z celé té naprosto zbytečné krocanizace potenciálu celého dobrodružství docela smutno a nějak nevidím naději na jakékoliv zlepšení, ale pokud si nějaký můj čumáček tohle najde a začne pak nad věcmi opravdu uvažovat, asi si dám za odměnu ve svém vysněném a dokonalém lískovišti poklidného kafíka a budu u toho donekonečna čekat na hvězdu, která do něj po čase spadne. A jestli to zní divně, je potřeba si znovu připomenout, že vědci jsou jako děti, co nikdy nezapomněly snít.

Tento článek přečetlo již 224 čtenářů (0 dnes).

Komentáře

Nový komentář