LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Gnuplot 2 - funkce ve 2 proměnných

Dnes se podíváme na možnosti vykreslování funkcí ve 3d a také na parametrické křivky.

20.9.2004 08:00 | Vladimír Jarý | Články autora | přečteno 18753×

Trocha teorie

Reálná funkce dvou reálných proměnných je zobrazení, které přiřazuje uspořádané dvojici reálných čísel (definiční obor) jednoznačně reálné číslo. Grafem takovéto funkce je pak množina bodů v třírozměrném eukleidovském prostoru. Jako příklad funkce dvou proměnných můžeme vzít model zemského povrchu: každému bodu o dané zeměpisné šířce a délce je přiřazena nadmořská výška. Tolik asi na úvod.

Praxe

Základním příkazem v Gnuplotu pro práci s grafy funkcí dvou proměnných je splot, jehož nejdůležitějším argumentem je požadovaná funkce (jako proměnné se používá x, y):

splot sin(x)*cos(y) # nejjednodušší použití

Jak vidíte na obrázku, výsledek není příliš vhodný k publikaci. Jako první zkusíme změnit rozmezí os. U "obyčejných" funkcí v  jedné proměnné k tomu účelu sloužil příkaz set s parametry xrange a yrange. Asi Vás příliš nepřekvapí, že se tento příkaz použije i v tomto případě, pouze přibude parametr zrange pro úpravu osy z. Tímto způsobem nastavíme měřítko pro všechny grafy v rámci jedné relace, pro změnu jediného grafu použijeme následující zápis:

splot [x1:x2][y1:y2][z1:z2] f(x,y) # nastav meze na všech osách
splot [x1:x2] f(x,y) # nastav meze pouze na ose x 
splot [][y1:y2] f(x,y) # nastav pouze osu y
splot [][][z1:z2] f(x,y) # nastav pouze osu z

set xrange [0:2*pi] # nastav globálně meze na ose x
set yrange [0:2*pi] # nastav globálně meze na ose y
set autoscale z # automatické nastavení mezí na ose hodnot (z)
replot # překresli graf

Nyní už náš graf vypadá trochu lépe, ale stále není ideální. Zkusíme nevykreslovat zakryté části grafu - příkazem set hidden3d. Pro opětovné vykreslení i neviditelných míst zavolejte unset hidden3d.

set hidden3d # zobraz pouze viditelné
replot # překresli graf
Původní graf Po úpravě mezí os Zobrazení pouze viditelné části

Někdy se může hodit podívat se na graf z jiného úhlu a jiné vzdálenosti. I zde přijde ke slovu příkaz set, nyní s parametrem view h, v, z. Hodnota h představuje horizontální úhel (mezi pozorovatelem a horizontálou), v znamená vertikální úhel (mezi pozorovatelem a vertikálou), konečně z představuje míru přiblížení nebo oddálení (zoom). Výchozí hodnoty jsou 60 pro h, 30 pro v a 1 pro z. Pro přiblížení grafu používejte hodnoty z větší než 1, naopak pro oddálení menší než 1.

set view 45, 45, 0.75 # změna pozice pozorovatele
replot
set view ,,2 # přiblížení pozorovatele ke grafu
replot
set view 60,30,1 # návrat na výchozí pohled

Druhým způsobem je nakreslený graf popadnout myší a s pomocí metody drag&drop (popřípadě kurzorových kláves) jej natočit podle potřeby.

Pro zvýšení přesnosti grafu tu máme příkaz set isosamples sx, sy, kde sx (sy) představují počet vzorků na ose x (y), vyšší hodnoty vylepšují vzhled grafu, ale také procesorový čas potřebný k vykreslení (100*100 vzorků se na mém AMD XP 2600+ počítá asi 30 sekund).

set isosamples 50,50

Poslední možnost, kterou k tématu funkcí dvou proměnných zmíním, jsou ekvipotenciální čáry. Ekvipotenciální čára je množina bodů prostoru, které mají stejnou hodnotu veličiny, v případě modelu zemského povrchu se jedná o vrstevnice. Gnuplot zvládá 4 režimy vykreslování těchto čar - nevykreslovat, vykreslovat přímo do grafu funkce, vykreslovat projekci do roviny x, y a konečně vykreslit projekci a současně na graf funkce:

# kresli ekvipotenciální křivky na plochu grafu
set contour surface 
# kresli projekci ekvipotenciálních křivek do roviny x,y
set contour base
# kombinace předchozích způsobů
set contour both
# vypni vykreslování ekvipotenciálních čar
unset contour

Nastavování popisků grafu, os a mřížky se provádí úplně stejně jako v případě funkce jedné proměnné.

Změna pozice pozorovatele Po převzorkování Výsledná podoba

Polární souřadnice

Bod v rovině lze určit několika způsoby - asi nejpřirozenějším jsou kartézské souřadnice. Jejím základem jsou dvě kolmé přímky (osy x a y), které se protínají v počátku O. Polohu bodu pak jednoznačně určíme jako průsečík přímky rovnoběžné s osou x a přímky rovnoběžné s osou y. Ne vždy je ovšem použití kartézského systému nejvhodnější, například při studiu kruhových pohybů (rovnice popisující kyvadlo) se používají polární souřadnice. Pokud povedeme bodem P kružnici se středem v počátku O a označíme-li úhel mezi polopřímkou OP a poloosou x theta (θ), pak polární souřadnice bodu P budou R=|OX|, theta. Kartézské souřadnice lze z polárních jednoduše dopočítat:

x=R*cos(theta), y=R*sin(theta)

Rovnici křivky v polárních souřadnicích můžeme vyjádřit jako:

R=R(theta)

Pro zapnutí polárních souřadnic se zavolá příkaz set s parametrem polar. Při kreslení v polárních souřadnicích se používá proměnná t, která má význam polárního úhlu (theta). Při výchozím nastavení se mez t bere interval od 0 do 2*pi. Změna se provede příkazem set trange [theta1: theta2]. Pro změnu jednotek z radiánů na stupně použijte set angles degrees (radians pro radiány).

set polar # aktivuj polární souřadnice
plot cos(t)*sin(t) # čtyřlístek :-)
set trange [0:pi/2] # nastavení rozsahu t
replot # překreslení grafu
unset polar # návrat do kartézského systému

Pro zisk podrobnější nápovědy napište help polar

Polární souřadnice Křivka v mezích theta 0, 2*pi Křivka v mezích theta 0, pi/2

Parametrické křivky

Na závěr stručně zmíním postup vykreslování parametricky zadaných křivek. Zápis y=f(x) explicitně vyjadřuje závislost veličiny y na veličině x. Závislost x na y lze zadat i zprostředkovaně, pomocí parametru:

x=x(t) a y=y(t)

Pro vykreslení parametrické křivky je potřeba nejprve aktivovat režim parametrického zadávání a poté za příkaz plot přidat rovnice pro x a y v proměnné t:

# zapni režim parametrického zadávání
set parametric 
plot sin(t), cos(t)  # parametrická křivka

Výsledkem by měla být jednotková kružnice, ovšem kvůli rozdílnému měřítku na osách x, y nejspíše uvidíte elipsu. Pro srovnání měřítka na osách napište:

set size ratio 1

Tento příkaz nastaví poměr měřítka osy y k měřítku na ose x na zadanou hodnotu. Gnuplot umí vykreslovat parametricky zadané plochy v prostoru, za příkaz splot je třeba přidat parametrické vyjádření pro souřadnice x, y a z v proměnných u, v:

set parametric #  zapni parametrické zadání
# vykresli parametrickou plochu
# x(u, v) = cos(u)*cos(v)
# y(u, v) = cos(u)*sin(v)
# z(u, v) = sin(u)
splot cos(u)*cos(v),cos(u)*sin(v),sin(u)
set hidden3d # kresli jen viditelné
set isosamples 50,50 # nastav rozlišení grafu
replot # překresli graf
unset parametric # konec parametrického zadávání
Parametrická křivka Po úpravě měřítka Parametricky zadaná plocha

To je pro tento díl vše, příště se snad už nebude zabývat žádnou složitější matematikou, ale zpracováním datových souborů.

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

14.11.2017 16:56 /František Kučera

Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tradičně první čtvrtek před třetím pátkem v měsíci: 16. listopadu od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).


Přidat komentář

12.11.2017 11:06 /Redakce Linuxsoft.cz
PR: 4. ročník odborné IT konference na téma Datová centra pro business proběhne již ve čtvrtek 23. listopadu 2017 v konferenčním centru Vavruška, v paláci Charitas, Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00. Konference o návrhu, budování, správě a efektivním využívání datových center nabídne odpovědi na aktuální a často řešené otázky, např Jaké jsou aktuální trendy v oblasti datových center a jak je využít pro vlastní prospěch? Jak zajistit pro firmu či jinou organizaci odpovídající služby datových center? Podle jakých kritérií vybrat dodavatele služeb? Jak volit součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně spravovat datové centrum? Jak eliminovat možná rizika? apod.
Přidat komentář

13.9.2017 8:00 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tentokrát netradičně v pondělí: 18. září od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

3.9.2017 20:45 /Redakce Linuxsoft.cz
PR: Dne 21. září 2017 proběhne v Praze konference "Mobilní řešení pro business". Hlavní tématy konference budou: nejnovější trendy v oblasti mobilních řešení pro firmy, efektivní využití mobilních zařízení, bezpečnostní rizika a řešení pro jejich omezení, správa mobilních zařízení ve firmách a další.
Přidat komentář

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

18.9.2017 14:37 / Rojas
high security vault

15.9.2017 7:33 / Wilson
new zealand childcare jobs

31.8.2017 12:11 / Jaromir Obr
Re: ukůládání dat ze souboru

30.7.2017 11:12 / Jaromir Obr
Národní znaky

27.7.2017 12:24 / Jaromir Obr
Cteni/zapis

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze