Grafické zpracování dat pomocí programu GNUPLOT
Více informací o práci s Gnuplotem můžete získat v tomto stručném návodu.
Před zpracováním již víme a máme:
- Definovaný problém a teoretické předpoklady, např. Pepíček střílí prakem do výšky na zemském povrchu. Teorie: Newtonova mechanika, rovnoměrně zrychlený pohyb popsaný kvadratickou závislostí výše ($s_2 = g/2 = 4,90\,\mathrm{m\cdot s^{-2}}$); teorie pružnosti. Předpoklady: Ideální pružina bez disipace energie. (tj. platí ZZE $1/2 mA^2 = 1/2 kR^2$.) Zanedbáváme odpor vzduchu, rotaci Země. Úkol: Stanovit rychlost projektilu $A$ ihned po vystřelení a spočítat tuhost gumy praku $k$.
- Dostatečný počet experimentálních bodů v dostatečně velkém intervalu, např. deset výšek $s(t)$ projektilu nad zemí v daném čase (změřených stejným způsobem).
- Máme rozmyšlen teoretický základ umožňující využít fitování modelovou funkcí. Tzn. deset hodnot $s(t)$ chceme v souladu s teorií a předpoklady nejlépe vystihnout modelovou funkcí
$$ s(t) = -\frac{g}{2} t^2 + \sqrt{\frac{kR^2}{m}} t + s_0 = -4,90 t^2 + At + s_0\,, $$
kde parametry $A$ a $s_0$ chceme určit fitováním i s chybou fitu! Počáteční polohu nepotřebujeme znát, ale musíme ji do modelové funkce zahrnout, aby fit dal správný výsledek $A$ (podobně je někdy třeba zahrnout pozadí). Srovnáním stran rovnic je pak již jednoduché vyjádřit a vypočítat hledanou tuhost gumy $k$, známe-li hmotnost projektilu $m$ a max. natažení gumy z rovnovážné polohy $R$, tzn. $k = A^2 m/R^2$. Nezapomeňme, že výsledek fitu $A$ musíme napsat se správnou jednotkou, např. měříme-li polohu v metrech a čas v sekundách, pak $[A] = \mathrm{m\cdot s^{-1}}$ a $[k] = \mathrm{kg\cdot s^{-2}} = \mathrm{N\cdot m^{-1}}$.
Při použití programu GNUPLOT ke zpracování musíme naměřené hodnoty uložit v souboru se jménem např. mereni1.txt
a s pevnou strukturou, např.
# č. měření, čas [s], výška [m], chyba měření [m] # ... legendu a komentář za znakem # gnuplot ignoruje # číselné hodnoty lze oddělit libovolným počtem mezer či tabulátorem, # čárka jako desetinný oddělovač je nepřípustná 1 1 17 1 2 2 21 1 3 3 17 1 4 4 3 0.5
Po spuštění gnuplotu uplatníme alespoň následující příkazy:
cd 'C:/FYZIKA/FYKOS/SERIE3/EXP'
s(x)=-9.81/2*x**2 + A*x + s0
fit s(x) 'mereni1.txt' using 2:3 via A,s0
plot s(x), 'mereni1.txt' using 2:3
plot [0:5] [0:25] s(x), 'mereni1.txt' using 2:3:($3-$4):($3+$4) with yerrorbars
Prvním příkazem nastavíme pracovní adresář, kde se má hledat soubor s naměřenými hodnotami mereni1.txt
. Druhým příkazem definujeme vhodnou modelovou závislost, kterou následným příkazem fitujeme naměřené hodnoty, přičemž nezávislá proměnná $x$ se má načítat ze druhého sloupce a závislá proměnná $s(x)$ ze třetího sloupce. Poslední příkazy zobrazí optimální teoretickou závislost a naměřené hodnoty do společného grafu, kde ihned můžeme zhodnotit správnost fitu, příp. stejný příkaz fit
opakovat (někdy se tím parametry A
a s0
dále zpřesní) atd.
Na obrazovce (terminálu gnuplotu) se nám právě vypsaly poslední hodnoty hledaných parametrů včetně chyby fitu. Pro nalezenou hodnotu $A = (20,0\pm 0,3)\,\mathrm{m/s}$ v našem příkladu spočteme tuhost $k$, na níž se zde ptáme. Dále vidíme, že Pepíček držel prak asi $(1,5\pm 0,8)\,\mathrm{m}$ nad zemí a potřebovali jsme více pokusů na zobrazení pěkného grafu (zde ovšem bez popisků).
Další užitečné informace, nastavení popisků grafů, znázornění chyb měření a export grafů najdete ve stručném návodu s dalšími příklady a příkazy. Práci v gnuplotu si vyzkoušejte v nejbližším volném čase! Upozorňujeme, že malá a velká písmena nejsou v gnuplotu záměnná!
Automatizace zpracování měření pomocí gnuplotu
Představte si, že v rámci nějakého projektu musíte několikrát opakovat a zpracovávat určité měření, vždy s jedinečným hledaným výsledkem. (Např. Pepíček chce provádět měření několikrát do roka, aby zjistil, jak guma v jeho praku slábne.) Let projektilu, tzn. naměřenou závislost s(t) tedy uložíte každou zvlášť nejlépe v souboru stejného jména, ale v různých adresářích, kam do každého můžete snadno přikopírovat dávkový soubor obsahující příkaz
c:\gnuplot\bin\wgnuplot.exe c:\MUJ_PRAK\zpracuj.gp
zároveň se správnou cestou k modulu gnuplotu a k vašemu skriptu pojmenovanému zpracuj.gp
. Ten bude obsahovat sérii vhodných příkazů jako výše, případně dalších přímých výpočtů, jejichž výsledkem je nalezení hledaných hodnot (parametrů). Jestliže byste v terminálu gnuplotu ručně zadávali stále stejnou posloupnost příkazů (mohou-li parametry a jména souborů zůstat stejná), můžete si zjednodušit práci a napsat danou posloupnost jen jednou do skriptu a ten pak postupně spouštět gnuplotem – výsledek bude stejný. Užitečné příkazy jsou shrnuty ve stručném návodu; k úspěšnému využívání skriptů je třeba programátorská zručnost, důvtip a zpočátku trpělivost při zkoušení. Odměnou je zajímavé efektivní využití počítače ke zjednodušení práce. Účastníci soustředění dostanou možnost vyzkoušet si automatizované zpracování v rámci experimentálního odpoledne. Pro čtenáře tohoto úvodu jsme připravili malý příklad (s jiným problémem) pro inspiraci – stáhněte si a rozbalte soubor, spusťte oba *.bat
soubory, čímž se vytvoří další soubory v adresáři, a všechny soubory si prostudujte, zejména jejich strukturu a funkci v rámci celku. Příkazy ze skriptů si poté můžete vyzkoušet postupně zadat ručně do terminálu gnuplotu, který spustíte programem wgnuplot.exe
(u samotného ovšem nefunguje příkaz help
).
Máte-li enormní zájem využívat gnuplot a nepodařilo-li se vám po dlouhém snažení ani samostudiu vyřešit nějaký problém, konzultanti z FYKOSu se vám pokusí poradit – pak jim zašlete všechny soubory, skripty, dávkové soubory, data apod. a dostatečně upřesněte vysněný cíl. K tomuto účelu jsou organizátoři automaticky zcela k dispozici účastníkům na soustředění (v rámci experimentálního odpoledne).
V případě potřeby se také můžete obrátit na nás a konzultovat s námi. V tom případě je nejlepší se obrátit na správce sekce.