Jít k navigaci - Jít k vyhledávání


Maple 4 - 2D Grafy

01. 09. 10 - 15:00. Napsal Jiří Chytil. Přečteno 9174x.

Tento díl bude zaměřen na vykreslování 2D grafů, a to v klasických, logaritmických či semilogaritmických i polárních souřadnicích. Naučíme se, jak nastavit parametry grafu a jak vytvořit grafy do nekonečna.

468x60.gif Doporučujeme virtuálního opertátora GoMobil.cz | Reklamní sdělení

Graf soustavy o, x, y

První základní typ grafu, který nás bude zajímat, bude klasická soustava o, x, y. Prvně se podívám jak v grafu zobrazit funkci například sin(x);

plot(sin(x));
graf sin(x)
Obrázek č. 1 - Graf funkce sin(x)

MAPLE si sám zvolil hodnoty i měřítko pro funkci x. Pokud chceme měřítko změnit, klikneme na vykreslený průběh a nahoře se nám zobrazí lišta:

Lišta pro práci s grafem
Obrázek č. 2 - Lišta pro práci s grafem

Pokud na liště klikneme na tlačítko 1:1, obrázek se upraví tak, aby na obou osách bylo stejné měřítko. Ostatní tlačítka si také vyzkoušejte.

graf sin(x)
Obrázek č. 3 - Graf funkce sin(x) - zobrazena 1:1

Pokud chceme zobrazit jen námi požadovanou oblast grafu, zadáme rozsah souřadnice x, ve kterém se má graf vykreslovat. Například: funkci sin(x) na intervalu &lo;0,2π&gr; zadáváme takto:

plot(sin(x),x=0..2*Pi);
graf sin(x) na intervalu 0,2*Pi
Obrázek č. 4 - Graf funkce sin(x) na intervalu &lo;0,2π&gr;

Omezit nebo naopak rozšířit můžeme také osu y. Pokud například chceme zobrazit na ose y jen interval &lo;0.9,1&gr;, pak použijeme následující zápis:

plot(sin(x),x=0..2*Pi, y=0.9..1);
graf sin(x) na intervalu 0,2*Pi
Obrázek č. 5 - Graf funkce sin(x) na intervalu &lo;0,2π&gr; na ose x a &lo;0.9,1&gr; na ose y

Pomocí funkce plot můžeme zobrazit i více průběhů. Ty uzavřeme do hranatých závorek a oddělíme čárkou.

plot([sin(x),x,ln(x)],x=0..2*Pi);
graf sin(x), x, ln(x)
Obrázek č. 6 - Graf funkce sin(x), x, ln(x)

Můžeme používat samozřejmě i vlastní funkce, například ve druhém dílu definovanou sinc(x).

sinc:=x->PIECEWISE([sin(x)/x,x<0],[1,x=0],[sin(x)/x,x>0]);
po částech definovaná fce sinc(x)
plot(7*sinc(x));
graf sin(x), x, ln(x)
Obrázek č. 7 - sinc(x) násobené konstantou 7

U funkce jako je x/(x-1) může být problém s přímkami mezi body nespojitosti. Viz graf

plot(x/(x-1),x=-1..4,y=-20..20);

Toto se dá vyřešit zapsáním discont=false jako parametr funkce plot

discont=false
Obrázek č. 8 - Graf x/(x-1) bez použití discont=true
plot(x/(x-1),x=-1..4,y=-20..20, discont=true);
discont=true
Obrázek č. 9 - Graf x/(x-1) s použitím discont=true

Další parametry, které je občas potřeba nastavit - například pro zpřehlednění grafu - jsou barva, styl a tloušťka čáry. Chceme-li tedy vykreslit funkci cos(x) čarou o tloušťce 3, čárkovaně a modře, použijeme zápis:

plot(cos(x), thickness=3, linestyle=dash, color=blue);
parametry plot
Obrázek č. 10 - Parametry funkce plot()

Tloušťku nastavujeme tak, že číslo za thickness odpovídá tlouště čáry v pixelech. Barvy nastavujeme tak, že za color= dáme název barvy anglicky. Paramatry linestyle jsou:

  • solid - plná čára
  • dash - čárkovaná
  • dot - tečkovaná
  • dashdot - čerchovaná
  • longdash - dlouhé čárky
  • spacedash - čárky s větší mezerou
  • spacedot - tečky s větší mezerou

Chceme-li vykreslit pouze body, můžeme zadat ještě parametr style. Ten má implicitně hodnotu line. Pokud ji změníme na point výsledek bude následující.

plot(cos(x),style=point, color=blue);
parametry plot
Obrázek č. 11 - Parametry funkce plot()

Pokud použijme parametr scaling s hodnotou constrained, nastavíme měřítka os 1:1 aniž bychom museli používat tlačítko 1:1 na liště. Už jen zápis bez obrázku.

plot(sin(x), scaling=constrained, color=blue);
graf sin(x)
Obrázek č. 12 - Graf funkce sin(x) - zobrazena 1:1

Provádíme-li tyto úpravy v grafu, kde je vykresleno více funkcí, zadáváme parametry do hranatých závorek.

plot([sin(x), x], x=-1..1, color=[blue, magenta], thickness=[3,1], linestyle=[solid,dash]);
parametry plot
Obrázek č. 13 - Parametry funkce plot()

Jedním za dalších použitelných parametrů funkce plot je numpoints=x, kde x určuje počet bodů, ze kterých bude funkce vykreslena (jemnost nebo hrubost, jak to kdo bere).

Další možnosti kreslení grafů:

Použijeme-li zápis:

with(plots);

zpřístupníme některé další funkce z výpisu:

[animate, animate3d, animatecurve, arrow, changecoords, complexplot, complexplot3d, conformal, conformal3d, contourplot, contourplot3d, coordplot, coordplot3d, densityplot, display, dualaxisplot, fieldplot, fieldplot3d, gradplot, gradplot3d, graphplot3d, implicitplot, implicitplot3d, inequal, interactive, interactiveparams, intersectplot, listcontplot, listcontplot3d, listdensityplot, listplot, listplot3d, loglogplot, logplot, matrixplot, multiple, odeplot, pareto, plotcompare, pointplot, pointplot3d, polarplot, polygonplot, polygonplot3d, polyhedra_supported, polyhedraplot, rootlocus, semilogplot, setcolors, setoptions, setoptions3d, spacecurve, sparsematrixplot, surfdata, textplot, textplot3d, tubeplot]

Mnohé z těchto funkcí si necháme za pozdější díly seriálu. Zpřístupnila se nám však funkce display, která může značně zpřehlednit zápis grafu. Nejprve grafy uložíme do proměnných grf1grf3, a každý řádek ukončíme dvojtečkou, aby se grafy nevykreslily. Poté požijeme funkci display, do jejichž parametrů dáme názvy proměnných, které grafy uchovávají.

grf1:=plot(sin(x),x=-2*Pi..0,color=blue,thickness=2):
grf2:=plot(x,x=0..3,color=red,thickness=2):
grf3:=plot(root[2](x)/x,x=0..3,y=-1.5..5,color=green,thickness=2):
display(grf1,grf2,grf3);
display (plots)
Obrázek č. 14 - Zobrazeno pomocí funkce display

Použijeme-li omezení na ose Y v jediné funkci, omezí všechny ostatní na námi zvolený rozsah:

grf1:=plot(sin(x),x=-2*Pi..0,color=blue,thickness=2):
grf2:=plot(x,x=0..3,color=red,thickness=2):
grf3:=plot(root[2](x)/x,x=0..3,y=-0..5,color=green,thickness=2):
display(grf1,grf2,grf3);
clipping of sin(x) function
Obrázek č. 15 - Ořez fce sin(x) způsobený zápisem y=0..5 v definici grafu druhé odmocniny

Logaritmické grafy

Skupina funkcí plots nám umožňuje používat i logaritmické a semilogaritmické grafy:

Funkce logplot nám přepne do logaritmických souřadnic osu Y.

logplot(x,x=-2..2);
funkce logplot
Obrázek č. 16 - Graf funkce y=x vykreslený pomocí logplot

Funkce semilogplot nám do logaritmických souřadnic přepne osu X. Vytvoří takzvaný semilogaritmický graf.

semilogplot(x,x=0.1..100);
funkce semilogplot
Obrázek č. 17- Graf funkce y=x vykreslený pomocí semilogplot

Použitím funkce loglogplot změníme na logaritmické osy jak osu X tak osu Y:

loglogplot(exp(x),x=0.01..10);
funkce loglogplot
Obrázek č. 18 - Graf funkce y=exp(x) vykreslený pomocí loglogplot

Polární grafy a jiné souřadnicové systémy

Můžeme využít dvou různých zápisů, jejichž chování je stejné:

plot(x,x=0..2*Pi, coords=polar);
funkce plot s parametrem coords=polar
Obrázek č. 19 - Graf funkce y=x vykreslený pomocí funkce plot s parametrem coords=polar
polarplot(x,x=0..2*Pi);
funkce polarplot
Obrázek č. 20 - Graf funkce y=x vykreslený pomocí funkce polarplot

Další typy použitelných souřadnic:

plot(x,x=0..2*Pi, coords=???);

Můžete vybrat z následující nabídky: bipolar, cardioid, cassinian, elliptic, hyperbolic, invcassinian, invelliptic, logarithmic, logcosh, maxwell, parabolic, polar, rose, a tangent.

Grafy jdoucí do nekonečna:

Místo běžně uváděného limitu uvedeme klíčové slovo infinity

plot([x,1,log(x)],x=0..infinity);
funkce plot s hodnotou infinity v parametru X
Obrázek č. 21 - Graf funkce y=x,1,log(x) s hodnotou infinity v parametru X

Můžeme samozřejmě využívat i druhé polarity a to použitím znaménka mínus.

plot([x,1,log(x)],x=-infinity..infinity);
funkce plot s hodnotou infinity v parametru X
Obrázek č. 22 - Graf funkce y=x,1,log(x) s hodnotou infinity obou polarit v parametru X

Systém se snaží volit souřadnice tak, aby byl dobře patrný průběh funkce.

Tento parametr nelze použít u funkcí semilogplot a loglogplot. U polárních souřadnic je potřeba brát použití s rezervou nebo ho mít promyšlené.

Tato funkce se hodí pro odhad nevlastních limit.

plot(exp(-x)-exp(-2*x)+1,x=0..infinity);
funkce plot s hodnotou infinity v parametru X
Obrázek č. 23 - Graf funkce y=exp(-x)-exp(-2*x)+1

Dále se také můžeme podívat, jak funkce může vypadat na ose Y. pokud má třeba body nespojitosti:

plot((x^2/(x-1)),x=0..2,y=-infinity..infinity);
funkce plot s hodnotou infinity v parametru Y
Obrázek č. 23 - Graf funkce y=x^2/(x-1)



Autor
Jiří Chytil

Jiří Chytil27 let

Šéfredaktor 8bitu.cz. V současné době je studentem doktroského studia na Ústavu teoretické a experimantální elektroniky na Fakultě elektrotechniky a komunikačních technologií VUT v Brně. Mezi jeho koníčky patří elektrotechnika, bastlení, programování a hudba.


Novinky Další novinky

[25. 06.]  A tentokráte vás zdravím z města New York.
[17. 06.]  Zdravim vas z Bostonu vazeni ctenari.
[10. 03.]  Tak jsem pro Vás připravil novou anketu. A snažím se pokračovat na projektu jehož výsledky bych zde rád zveřejnil, ale poněkud mě brzdí diplomová práce a práce.
[30. 01.]  Omlouvám se za nečinnost způsobenou značným nedostatkem času. Nevím, ale jestli se mi to podaří změnit. To víte, člověk stárne a jeho čas je potřeba jinde než na internetu.
[07. 03.]  Po dlouhé době jsme pro vás přichystali novou anketu - najdete ji níže v pravém panelu.

Reklama

Sádrokartony Karel Richter - sádrokartony a suché stavby Brno

Okruháři.cz

Virtuální operátor GoMobil - levné volání

Programujte.com

Léčivé obrazy - enkaustika Lenka Blažíková

Keramika Věra Coufalová - užitková keramika

Anketa

Jaký další modul byste ocenili v softwaru DSE?

RC články - pasivní

RC články - aktivní

Normované filtry

Syntetické indukčnosti

Materiálové tabulky

COM terminál

Design pro 555

Výpočet transformátoru

Výpočet uPásku

Výpočet štěrbinového vedení

Návrh Step-Up měniče

Návrh invertujícího měniče

Transfigurace trojúhelník-hvězda

Předřadník a bočník