You are on page 1of 36

Szmtgpes adatbrzols

- laboratriumi tmutat -

Szilgyi Lszl

2008

Szmtgpes adatbrzols
- labor jegyzet 1. Munkavdelem
2. Labor: Adatbrzols Microsoft Excel krnyezetben
3. Labor: Ismerkeds a Maple krnyezet grafikai lehetsgeivel
4. Gyakorlat Bevezets a Matlab rejtelmeibe
5-6. Labor: A plot utasts lehetsgei
7. Labor: Tbbvltozs fggvny brzolsa kt dimenziban
8-9. Labor: Tovbbi fggvnybrzolsi mdok kt dimenziban
10-11. Labor: Grbk s felletek brzolsa trben
12. Labor: Komplex szmok brzolsa
13. Labor: Trbeli skfelletek kisznezse
14. Laborvizsga: Nhny lehetsges feladat
Tesztkrdsek kollokviumra.
Tanknyvnek tekinthet a Stoyan Gisbert ltal szerkesztett MATLAB cm knyv
(pl. III. 8144 a knyvtrban)

1. Labor: Munkavdelem
Megismerkednk az egyetem szmtgp hlzatval is, tovbb megtanulunk
bejelentkezni a hlzatra s megtanuljuk, mik a jogaink s ktelessgeink a
szmtgp labor hasznlata kzben. Tovbb foglalkozunk munkavdelemmel. A
munkavdelem els szm trvnye: a munkt nem vdeni, hanem kerlni kell.
Ennek folyomnya az, hogy kis munkt kis vben, nagy munkt nagy vben kell
elkerlni.

2. Labor: Adatbrzols Microsoft Excel krnyezetben


A labor clja: megismerkednk a Microsoft Excel grafikon kszt lehetsgeivel.
A munka menete: a gyakorlat sorn egytt elksztnk egy grafikont, majd
mindenki elkszt mg egy sajt elkpzels grafikont.
Elmleti ttekints: A Microsoft Excel programot tbbnyire tblzatkezelknt
ismerjk. Kevesen tudjk, vagy legalbbis kevesen prbltk ki a grafikus brzols
lehetsgeit. Pedig nincs benne semmi rdngs dolog. Alapfelttel, hogy legyen
egy tblzatunk legalbb 2-3 numerikus adattal, s mris lehet grafikont kszteni.
Teht a grafikon kszts lpsei a kvetkezk:
1. Tltsnk ki egy tblzatot nhny adattal.
2. A
Beszrs|Diagram
menpont
Grafikon/Diagram varzslt.

segtsgvel

indtjuk

be

3. A varzsl els oldaln kivlaszthatjuk a diagram tpust. Pl. oszlopdiagram


4. A varzsl msodik oldaln kivlasztjuk a diagram ltal brzolt adatokat.
Ugyanakkor belltjuk, hogy a tblzat sorai vagy oszlopai lesznek az brzolt
adatsorok.
5. A varzsl harmadik oldaln be lehet lltani a diagram megjelensvel
kapcsolatos paramtereket: diagram cme, tengelyek felirata, betmret,
vonalvastagsg, sznek, stb.
6. A varzsl negyedik oldaln bellthatjuk, hogy a diagrammot az Excel
dokumentumban hova hozzuk ltre: az adattblzat munkafzetbe, vagy
pedig egy kln munkafzetre.
7. Ezek utn a diagram ltrejn, de mg nincs vge a diagram ksztsnek. Ha
valamelyik rszlet nem tetszik neknk a diagram megjelensben, azon utlag
is lehet vltoztatni. ltalban az adott rszletet (vonalat, oszlopot, stb.)
egrrel meg kell fogni s akkor az Excel felknlja az adott paramter
megvltoztatsnak lehetsgt. A diagramnak forgatssal be lehet lltani a
megfelel nzpontot.
8. Miutn a rszleteket kvnsgaink szerint belltottuk s a grafikont ksznek
nyilvntottuk, a munknk eredmnyt ki lehet menteni vagy a vglap
segtsgvel tvihetjk egy Word dokumentumba.
Az albbi brn lthat egy egyszer grafikon, melyen egy kpzeletbeli llatkert
llatllomnynak vltozst brzoltuk a harmadik vezred els vei sorn:

Sapientia Zoo

20
18
16
14
12
10
Tigris
Teve
Zebra

8
6
4
2
0
2000

Zebra
2001

2002

2003

Teve
2004

2005

2006

Tigris
2007

2008

Hzi feladat: mindenki kszt mg egy tetszleges szerkezet, sajt zls szerint
kisznezett, jl olvashat grafikont, sajt adatok alapjn. Bekldsi hatrid: 2 ht.

3. Labor: Ismerkeds a Maple krnyezet grafikai


lehetsgeivel
A Maple egy olyan programozsi krnyezet, melyben egyszeren lehet matematikai
szmtsokat vgz programot rni. Ehhez hasonl programrendszer a Matlab is,
mellyel rszletesebben fogunk foglalkozni a flv htralev rin, de a Maple is a
sajt filozfija miatt megr egy mist. Ezen az rn vetts s magyarzs mellett
megtekintjk a Beny Palncz Szilgyi: Insight into computer science with
Maple cm knyv szimulcirl, szmtgpes grafikrl s animcirl szl
fejezeteit.
Ezt a labort kveten rtrnk majd a Matlab-os brzols rejtelmeinek
tanulmnyozsra.

4. Labor: Bevezets a Matlab rejtelmeibe


A labor clja: megismerkednk a Matlab programrendszer adatbrzolsi
filozfijval, valamint az egyszerbb matematikai mveletekkel.
A munka menete: a gyakorlat sorn megtanuljuk az aritmetikai opercik vgzst
mtrixos adatokon, belertve az rtkenknti szorzs s oszts mvelett. Tovbb
megvalstunk egy egyszer grafikus brzolst.
Elmleti ttekints: A Matlab egy olyan programozsi krnyezet, amely a Maplehz hasonlan egyszerv teszi a matematikai szmtsokat megvalst programok
gyors s hatkony megrst. Alapfilozfijnak rnk vonatkoz kt alaptlete az,
hogy:
Minden adat tmb vagy mtrix tpus: a mtrix egy tmbkbl ll tmb.
Lehet gy is rtelmezni, mint egy olyan oszlopvektor, amelyben sorvektorok
vannak, vagy egy sorvektor amelyben oszlopvektorok vannak. Az egyetlen
vals szmot trol vltoz is egy 11-es mret vals szmokbl ll
mtrix.
Vannak bizonyos Matlab opertorok, melyek tltesznek az ltalnos cl
programozsi nyelvek matematikai opertorain. Ezek kzl a
legfontosabbakat az albbi tblzat foglalja ssze.

Opertor Hasznlat

.*

C=A.*B

./

C=A./B

.^

A.^m

Lers
Az A s B mtrixok elemeit szorozza ssze, mindegyiket
a neki megfelel elemmel. Az A s B mtrix azonos
mret kell, hogy legyen s az eredmny is azonos mret
lesz
velk.
Az
elvgzett
mvelet
C[i,j]=A[i,j]*B[i,j] lesz, ahol az i s j lerja a
mtrix teljes terjedelmt.
Az A s B mtrixok elemeit osztja el egymssal,
mindegyiket a neki megfelel elemmel. Az A s B mtrix
azonos mret kell, hogy legyen s az eredmny is azonos
mret lesz velk. A B mtrixban nem szerepelhet a 0
rtk, mert nullval a Matlab sem tud osztani. Az
elvgzett mvelet C[i,j]=A[i,j]/B[i,j] lesz, ahol az
i s j lerja a mtrix teljes terjedelmt.
Ez a mvelet az A mtrix minden elemt m-dik hatvnyra
emeli, szemben az A^m-el, amelyik az A mtrixot
hatvnyozza.
7

Ennek a mveletnek az eredmnye egy oszlopvektor,


mely megegyezik az A mtrix i-dik oszlopval.
Ennek a mveletnek az eredmnye egy ngyelem
A[2:5,j] sorvektor, melyben az rtkek az A mtrix j-dik sorbl a
msodik, harmadik, negyedik s tdik elem1.
Ennek a mveletnek az eredmnye egy 31 elem tmb,
A=5:35
melyben a szmok 5-tl 35-ig egyesvel nvekednek.
Ennek a mveletnek az eredmnye egy 11 elem tmb,
A=1:0.1:2
melyben a szmok 1-tl 2-ig 0.1-knt nvekednek.
A[i,:]

Ezen a laboron a f cl, hogy megtanuljuk s megszokjuk a szorzs s az


rtkenknt trtn szorzs kzti klnbsget, illetve megrtsk a mtrixok
rtkenknt trtn osztst. Tovbb megvalstunk egy egyszer ktdimenzis
brzolst.
A albbi pldkbl lehet tanulmnyozni, hogy milyen mveletek vgezhetk el, s
melyek vezetnek hibhoz. Ezekben a pldkban csak a mtrixok mrete okozott
problmt, tovbbi pldk segtsgvel meg kell ismerkednnk a nullval val
oszts problmjval is.

Ne tvesszk ssze az tdik elemet egy narancssrga haj tkletes lenyzval.

A tovbbiakban megismerkednk az adatbrzols egyszer filozfijval.


Amennyiben egy diagrammot Matlab segtsgvel ki akarunk rajzolni, annak vges
szm pontban ki kell szmtani a koordintit, majd ezeket kell tadni az brzol
utastsnak.
Tekintsk az albbi pldaprogramot:
>> x=0:0.1:30;
>> y=1+sin(x);
>> plot(x,y);

Az els utasts ltrehoz egy x nev tmbt, melyben elhelyezi a szmokat 0-tl 30ig 0.1-es lpsekkel, nvekv sorrendben. Ez sszesen 301 elem. A msodik
utasts minden egyes x rtknek a szinuszt szmolja ki2 s teszi bele az y tmbbe,
mindegyikhez hozzadva mg 1-et. A harmadik utasts pedig egy brzolst kszt,
a kvetkez konvenci szerint: az els tmbben lev rtkeket a vzszintes
tengelyre helyezi, a msodik tmbben lev rtkeket a fgglegesre, s az gy
keletkez 301 pontot sszekti egy vonallal. Amint vrhat, a kapott kp egy
szinuszgrbt brzol:

Az brn nem csak a szinuszgrbt ltjuk, hanem egy keretet s beosztsokat a


vzszintes s fggleges tengelyen. A ltvnyt termszetesen finomtani lehet, akr a
plot utasts tovbbi paramterezsvel, akr utlagos mdostsokkal, melyeket a
Figure ablakban fogunk vgrehajtani.

Ha valban szrszlhasogatk lennnk, akkor ezt az utastst .sin-nek kellett volna nevezni, mert itt rtkenknti
szinuszrl van sz, de a Matlab ezt a mveletet jelli sin-nel.
2

5-6. Labor: A plot utasts lehetsgei


A labor clja: megismerkednk a plot utasts brzolsi kpessgeivel.
A munka menete: pldaprogramokat runk, melyekkel megtapasztaljuk a plot
utasts klnfle paramterezseinek hatst a grafikonra.
Elmleti ttekints: A plot utastsnak szmos hasznlati mdja ismeretes.
Ezeket foglaljuk ssze a kvetkezkben:
plot() verzik
plot(X,Y)
plot(Y)

Felttel

Lers

X s Y vals
rtk
tmbk
Y vals
rtk tmb

Kirajzolja az Y vektort az X vektor fggvnyben,


azaz az (xi,yi) pontprokat brzolja az x0y koordinta
rendszerben, az alaprtelmezett stlusban3
Ugyanaz, mint a plot(X,Y), felttelezve, hogy xi = i

A zi komplex szmokat a komplex skban rajzolja ki.


plot(Z)
Ugyanezt
el
lehet
rni
a
plot(real(Z),imag(Z)) utastssal.
Ugyanazt vgzi, mint a plot(Y), de tbbszr: az A
A vals
plot(A)
mtrix oszlopait rajzolja ki klnbz szn
rtk mtrix
vonalakkal.
X vals
Az A mtrixnak tbb akkora sorbl/oszlopbl kell
plot(X,A)
tmb, A
llnia, amekkora tmb az X. Ezeket a
vals mtrix sorokat/oszlopokat kln fggvnyknt brzolja.
X-ek s Y-ok Ugyanabba a koordinta rendszerbe rajzolja ki az Y1plot(X1,Y1,
vals rtk et az X1 fggvnyben, az Y2-t az X2
X2,Y2,Xn,Yn)
tmbk
fggvnyben,, s az Yn-et az Xn fggvnyben.
Az str vltoz hordozza az alkalmazni kvnt
stlusjegyeket. A stlusjegyek (pont, vonal, szn)
brmely sorrendben kvethetik egymst, nem
plot(,str)
str egy string ktelez mindegyiknl jelen lenni. Pldul o:g zld
(green) szn karikkat jelent, melyeket szaggatott
vonal kt ssze. A tovbbi stlusjegyeket a kvetkez
tblzatok foglaljk ssze.
Z komplex
rtk tmb

A fenti tblzatba foglaltakon kvl mg vannak tovbbi lehetsgei a plot()-nak.

Az alaprtelmezett stlus az mindegyik esetben rvnyes lesz, amg azt stlus attribtumokkal fell nem rjuk. Az
alaprtelmezett stlus kk szn folytonos vonalat jelent egy grafikon esetn, illetve vltoz szn folytonos vonalas
brzolst tbb grafikon egy brn trtn kirajzolsa esetn

10

Pont
.
*
x
o
+
^
v
<
>
Vonal
-
--
-.
:

Lers
Egy befestett kis karikt rajzol minden kiszmtott (xi,yi) pont helyre
Egy csillagot rajzol minden kiszmtott (xi,yi) pont helyre
Egy x-et rajzol minden kiszmtott (xi,yi) pont helyre
Egy res kis karikt rajzol minden kiszmtott (xi,yi) pont helyre
Egy plusz jelet rajzol minden kiszmtott (xi,yi) pont helyre
Egy felfel cscsosod hromszget rajzol minden kiszmtott (xi,yi) pont helyre
Egy lefel cscsosod hromszget rajzol minden kiszmtott (xi,yi) pont helyre
Egy balra cscsosod hromszget rajzol minden kiszmtott (xi,yi) pont helyre
Egy jobbra cscsosod hromszget rajzol minden kiszmtott (xi,yi) pont helyre

Lers
A kiszmtott (xi,yi) s (xi+1,yi+1) pontokat folytonos vonallal kti ssze
A kiszmtott (xi,yi) s (xi+1,yi+1) pontokat szaggatott vonallal kti ssze
A kiszmtott (xi,yi) s (xi+1,yi+1) pontokat rvid-hossz szaggatott vonallal kti
ssze
A kiszmtott (xi,yi) s (xi+1,yi+1) pontokat aprra szaggatott vonallal kti ssze

Sznkd
y
r
g
w
m
c
b
k

A pont s vonal szne a rajzon


Srga, azaz Yellow
Vrs, azaz Red
Zld4, azaz Green
Fehr, azaz White
Lils-rzsaszn, azaz Magenta
Vilgoskk, azaz Cyan
Kk, azaz Blue5
Fekete, azaz blacK

Egy feladat: rajzoljunk egy krt tbbflekppen. Megjegyzs: alkalmazzuk az


annyira sokoldal, hogy az mr gmb ttelt kt dimenziban. Azaz kiszmoljuk
egy sok cscs szablyos sokszg cscsainak koordintit a skban s ezt brzoljuk.
Ha elg sok csccsal dolgozunk, a ltvny egy kr benyomst kelti.
Els megolds:
>>
>>
>>
>>
>>

4
5

t=0:pi/40:2*pi;
x=3*sin(t);
y=3*cos(t);
plot(x,y);
axis equal;

Szkelyl: zd
Ez az alaprtelmezett szn

11

Az utols, axis equal utasts azt garantlja, hogy a rajzon a kt tengely


beosztsa azonos legyen, s ezltal a rajzolt sokszg tnyleg krnek ltszik, nem
pedig ellipszisnek.
Msodik megolds:
>>
>>
>>
>>

x=-3:0.03:3;
A=[3*(1-sqrt(x.*x)); -3*(1-sqrt(x.*x))];
plot(x,A);
axis equal;

A msodik megolds kt fggvnyt brzol ugyanarra a koordinta tengelyre. Az


egyik fggvny a fels flkrt, a msodik az als flkrt rajzolja ki. A rajz
szpsghibja, hogy a kt flkr klnbz sznnel van rajzolva. Ezen knnyen
segthetnk, ha a plot utastsnak adunk egy sznkdot:
>> plot(x,A,b);

Hzi feladat: rjunk egy olyan fggvnyt, melynek bemeneti paramterei a,b,c
vals szmok, a nem nulla. A fggvny kirajzolja az y=ax2+bx+c egyenlet
parabolt a kvetkez szablyok szerint:
Ha a parabola metszi a vzszintes tengelyt x1 s x2 pontokban (x1 < x2), akkor
az vzszintes tengely (x1-1)-tl (x2+1)-ig kerljn az brra.
Ha a parabola egyetlen x1 pontban rinti a vzszintes tengelyt, akkor (x1-2)-tl
(x1+2)-ig brzoljuk.
Ha a parabola nem tallkozik a vzszintes tengellyel, akkor (xcs-2)-tl (xcs+2)ig brzoljuk, ahol xcs a parabola cscsnak x koordintja.

12

7. Labor: Tbbvltozs
dimenziban

fggvny

brzolsa

kt

A labor clja: Megtanuljuk a tbbvltozs fggvnyek brzolst kt


dimenziban, plot utastssal.
A munka menete: Felrunk egy hromvltozs fggvnyt, s bizonyos megktsek
mellett brzoljuk a fggvny vltozst egyik vltoz fggvnyben. Megvalstjuk
a fggvny brzolst mindegyik vltoz szerint.
Elmleti ttekint: Tovbbra is megmaradunk a ktdimenzis brzolsnl, de
kiterjesztjk ltszgnket a tbbvltozs fggvnyekre. Annak idejn
matematikbl azt tanultuk, hogy a ktvltozs fggvnyeket trben lehet brzolni.
Ez tnyleg gy van, skban csak egy keresztmetszett vagy vetlett tudjuk lerajzolni
a hromdimenzis grafikonnak. Ezt gy rjk el, hogy a fggvnynkben rgztjk
az sszes vltoz rtkt kivve egyet, s brzoljuk a fggvnyt a megmaradt
vltoz fggvnyben.
Szval lssuk a medvt. Legyen a tanulmnyozott tbbvltozs fggvnynk:
1
= 1 1 +

(1 m ) / 2

ahol m > 1, 0 < < 1 s 0 < u < 1. A fggvny rtktartomnya is a [0,1]


intervallumra tevdik.
Alapvet krds: hogyan rjuk le a fenti fggvnyt Matlab kd formjban? Hova
kell pontonknti szorzst/osztst/hatvnyozst rni s hova nem?
Vlasz a krds msodik felre: amelyik vltoz pillanatnyilag konstansknt szerepel,
azt nem kell pontonknt szorozni. A hatvnyozs mindig .^ opertorral trtnik,
mert nem mtrixot hatvnyozunk, hanem a benne lev rtkeket.
Pldul: ha rgztjk m=2 s u=0.8 rtkeket, s az fggvnyben akarjuk
brzolni a fggvnynket, a kvetkezkppen jrhatunk el:
>>
>>
>>
>>

m=2; u=0.8;
alpha=0:0.01:1;
eta=1-(1+(1-alpha)./(alpha*u+eps)).^((1-m)/2);
plot(alpha,eta);

Megjegyzs: a harmadik utastsban szerepel az eps kifejezs. Ez egy nagyon kis


abszolt rtk, pozitv szmot jell, clja pedig a nullval val oszts elkerlse,
mikzben a grafikont lthat mrtkben nem befolysolja.
Eredmnyknt kapjuk a kvetkez brt:

13

Amennyiben tbb, egymstl eltr megktst akarunk alkalmazni s a kapott


fggvnyt brzolni, kzenfekv megolds a for ciklus s a hold on utasts a
korbbi rajz megrzsre. Pldul rjuk be a kvetkezt:
>>
>>
>>
>>
>>
>>
>>
>>

m=2;
for u=0.3:0.15:0.9;
alpha=0:0.01:1;
eta=1-(1+(1-alpha)./(alpha*u+eps)).^((1-m)/2);
plot(alpha,eta,k);
hold on
end;
axis square;

Az brn 5 grbnk lesz, gy lthatjuk azt is, mennyire befolysolja a fggvny


rtkt a rgztett u rtk klnfle megvlasztsa, viszont a rajzrl nem derl ki,
melyik grbe melyik u rtknek felel meg. Erre mg kln r kell jnnnk.

(Hzi) feladat: rjuk meg az eta2alpha(m,u), eta2m(u,alpha), s eta2u(m,alpha)


fggvnyeket, mellyel ki lehet rajzolni egy grbt a paramterknt megadott
megktsek fggvnyben. A fenti brk az
>> eta2alpha(2,0.7)

illetve a
14

for u=0.3:0.15:0.9
eta2alpha(2,u);
hold on;
end;

eredmnynek felelnek meg. Az m vltozsi intervallumjt vegyk [1+eps,10]nek.

15

8-9. Labor: Tovbbi fggvnybrzolsi mdok kt


dimenziban
A labor clja: Megismerkednk tovbbi skbeli brzolsi mdokkal.
A munka menete: Mindegyiket kiprbljuk legalbb egy pldval.
Elmleti ttekint. Kezdjk a legegyszerbbel: brzoljunk egy fggvnyt
logaritmikus koordinta rendszerben. Hogyan kell ezt vgrehajtani? A plot()
utasts helyett rjunk loglog()-ot, a paramterezse marad vltozatlanul.
Amennyiben csak az egyik koordinta tengelyt akarjuk logaritmikuss vltoztatni,
gy a semilogx() vagy semilogy() utastst kell hasznlnunk.
Pldul: vegyk az y : [2,20] R, y = 5 + 3 sin(x) fggvnyt s brzoljuk
mindhrom j eljrssal. Rajzoljuk fel az y=5 egyenest is mindegyik esetben, hogy
lthassuk azt is, hogy hol van a szinuszgrbe kzepe?

A fenti brn balrl jobbra lthat a loglog, semilogx s semilogy eredmnye.


Lthat, hogy ha a fggleges tengely logaritmikus, mennyire eltrpl a
szinuszgrbe teteje az aljhoz kpest, illetve ha a vzszintes tengely logaritmikus,
mennyire sszesrsdnek a hullmok a grafikon jobb oldaln.
Mit mutat meg egy loglog bra? Ha a plot egy fggvny vltozst egyenesknt
brzolta, annak a lejtse azt mutatta meg, hogy a fggvny a vltoz egysgnyi
vltozsa mellett milyen eltrst mutat. Ha a loglog bra egyenes alak, arrl az
olvashat le, hogy amg a vltoz mondjuk ktszeresre n, addig mennyit n vagy
cskken a fggvny rtke.
A polris koordinta rendszer hasznlata. Polris koordinta rendszerben rajzolni a
polar() utastssal tudunk. Ennek paramterezse a kvetkez:
polar(theta,rho,str)

ahol rho tartalmazza az egyes pontok origtl mrt tvolsgt (mint a komplex
szmok modulusza), theta tartalmazza a pontok szgt (akrcsak a komplex

16

szmok argumentuma), str pedig a grafikon megjelentst kdol string, melyben


megadhatjuk a kirajzolt pontok alakjt, az sszekt vonalak stlust s a rajzolsi
sznt.
Az albbi programocska pldul egy krkrs spirlt rajzol vilgoskk sznnel:
>>
>>
>>
>>
>>

t=0:pi/20:10*pi;
x=t.*sin(t);
y=t.*cos(t);
[theta,rho]=cart2pol(x,y);
polar(theta,rho,c);

Az albbi programocska egy zld ngylevel lhert rajzol polris koordintkban,


szaggatott vonallal sszekttt jobbra cscsosod hromszgekkel kelve:
>> t=0:pi/300:2*pi;
>> rho=2*sin(t).*cos(t);
>> polar(theta,rho,>g);

Az eredmnyt a fenti bra jobb oldaln lthatjuk.


Tovbbi 2D brzolsi fggvnyek tallhatak az albbi tblzatban. A tblzat
pldi a kvetkez tmbkethasznljk:
>> x=linspace(0,6,50);
>> y=x+3*sin(x)-4;

17

Fggvny neve s lersa

bra

bar(x,y,c)

Oszlopokbl rajzolja ki y vltozst x


fggvnyben. A vilgoskk oszlopokat a
harmadik paramterrel lltottuk el.

stairs(x,y,m)

Ez a fggvny lpcsfokokbl rajzolja meg


a fggvnyt. Vgl is a fggvny
integrljnak tglalapos mdszervel val
megkzeltsekor hasznljuk ezt a
fggvnyt
a
matematikban.
A
stlusjegyeket itt is megadhatjuk az utols
paramterben.
hist(Y,n)

Ez a fggvny az Y tmbben lev rtkek


hisztogramjt rajzolja meg. Az n vltoz a
krt oszlopszmot jelli a hisztogramban.
A mellkelt hisztogram a hist(Y,15)
utastssal kszlt.
stem(x,y,xg:)

Ez a fggvny majdnem ugyanazt rajzolja,


mint a bar(), a klnbsg az, hogy az
oszlop helyett e pont (kr, hromszg) van
az oszlop vgnl, melyet egy fggleges
vonal kt ssze a vzszintes tengellyel.

18

Hibavonalas kirajzols: legyen


e=0.3+(x+y)/20, ekkor a fenti adatok
alapjn az
errorbar(x,y,e,k)
a mellkelt brt rajzolja.

Kt tovbbi utastst ismernnk kell. Ha polris koordintkat Descartes-fle


koordintkk akarunk alaktani, akkor az albbi utastst hasznljuk:
[X,Y]=pol2cart(theta,rho)

rtelemszeren a polris koordintkat a theta s a rho tartalmazza, az eredmnyt


pedig az X s Y-ban kapjuk meg. A fordtott mveletet az albbi utasts vgzi:
[theta,rho]=pol2cart(X,Y)

19

10-11. Labor: Grbk s felletek brzolsa trben


A labor clja: Megismerkednk a hromdimenzis adatbrzols alapjaival.
A munka menete: Elbb megvizsgljuk a trbeli grbk rajzolsnak rejtelmeit,
aztn rtrnk a trbeli felletek brzolsra.
Elmleti ttekints. Trbeli grbt szinte ugyangy rajzolunk, mint a skban tettk
korbban. A klnbsg abban ll, hogy itt a grbe bizonyos diszkrt pontjainak
nem kt, hanem hrom koordintjt kell kiszmolnunk, s nem a plot(), hanem
a plot3() utastst hvjuk meg. Ennek is van tbbfle paramterezse, ezt albb
egy tblzatban sszefoglaljuk, de elbb vesznk kt pldt.
1. plda: a vletlenszeren rzkd gz plyjnak kirajzolsa. Az albbi program
megrtshez szksges ismerni a cumsum(W) utastst, mely a W tmb elemeinek
rszsszegeit szmolja ki.
>>
>>
>>
>>

x = cumsum(randn(1,300));
y = cumsum(randn(1,300));
z = cumsum(randn(1,300));
plot3(x,y,z,k);

A fenti program 300 idegysgnyi mozgst brzolja egy rlten rzkd gznek.

A kvetkez pldban egy rgszer trbeli grbt fogunk eltorztani, tbb


fzisban: a kezdeti rug legyen ellipszoid henger felsznn felvett, a henger
tengelyvel prhuzamos irnyban egyenletesen halad grbe.

20

Program
>>
>>
>>
>>

A plot3(x,y,z,b) utasts eredmnye

t=0:pi/20:30*pi;
x=12*cos(t);
y=8*sin(t);
z=t/pi;

Szktsk el a rugt egy szinuszos


szably szerint x s y irnyban.
>> t=0:pi/20:30*pi;
>>
x=(1211*sin(t/15)).*cos(t);
>> y=(8-6*sin(t/15)).*sin(t);
>> z=t/pi;

Adjunk egy lass szinuszos hullmzst a


z tengely mentn is a grbnek.
>> t=0:pi/20:30*pi;
>>
x=(1211*sin(t/15)).*cos(t);
>> y=(8-6*sin(t/15)).*sin(t);
>> z=10*cos(t/15);

Vegyk vissza a z irny rezgst, s


vigynk be mg egy gyorsabb, kis
amplitdj rezgst x irnyban.
>> t=0:pi/20:30*pi;
>> x=(1+0.2*cos(8*t)).*
(1211*sin(t/15)).*cos(t);
>> y=(8-6*sin(t/15)).*sin(t);
>> z=t/pi;

Megjegyzs: mr ez sincs nagyon messze


a gz plyjtl.

21

A trbeli felletek rajzolshoz, avagy a ktvltozs fggvnyek trbeli


brzolshoz szintn hrom tmb egyttesre van szksg. Ilyen esetben
brzolnunk kell a fggvnynk rtkt kt olyan vltoz fggvnyben, amelyek a
sajt rtelmezsi tartomnyaikban egymstl fggetlenl mozoghatnak. Pldul ha
egy z=f(x,y) fggvnyt akarunk brzolni, elbb ltrehozunk egy diszkrt rcsot az
xOy skban, majd az sszes rcspontban kiszmtjuk a fggvny rtkt. Ezeket a
rcspontokban szmolt rtkeket fogjuk brzolni az x s y fggvnyben.
Tekintsnk egy pldt:
>> [x,y]=meshgrid(-2:0.1:2,-pi:pi/20:pi)
>> z=(x+cos(y)).*(x-sin(y));
>> mesh(x,y,z);

Az eredmnyknt kapott brn a sznek a fggvny rtkeinek megfelelen lettek


berajzolva. A meleg sznek magasabb rtkekre utalnak, mg a hideg sznek az
alacsonyakra. Az albbi brn ugyanazt a fggvnyt brzoltuk (ms szgbl nzve)
de a rajzolshoz a surf(x,y,z) utastst hasznltuk.

A ktvltozs fggvnyek szintvonalait skban szoktk megrajzolni. A szintvonalak


tulajdonkppen a trbeli grafikon vzszintes skkal val metszetei: azon pontok

22

mrtani helye amelyek egy adott magassgban helyezkednek el. Ilyen szintvonalas
rajzot a contour() utastssal hozhatunk ltre. Pldul a fenti plda folytatsaknt:
>> contour(x,y,z);

Az eredmny az elz bra bal oldaln lthat. rdemes megfigyelni, hogy a


contour() alaprtelmezetten ugyanazokat a szneket hasznlja, mint a mesh().
Ha meg akarjuk mondani a contour()-nak, hogy melyik szinteknek megfelel
szintvonalakat rajzolja ki, akkor gy jrunk el:
>> l=0:3;
>> contour(x,y,z,l);

Az eredmny a fenti kp jobb oldaln lthat. szrevehet, hogy az szintek szma


4, akrcsak az l tmb elemeinek a szma.
Lehetsg van a mesh() s a contour() egyidej, trbeli megrajzolsra.
Ilyenkor a szintrajz az x0y skban helyezkedik el:

>>meshc(x,y,z);

23

Tovbbi lehetsgek a trbeli brzolsban:


Utasts s rvid magyarzat
Eredmny
meshz(x,y,z);

Majdnem ugyanaz, mint a mesh(x,y,z),


de ez mg rcsvonalakat rajzol a
grafikon al az x0y skhoz.

surfc(x,y,z);

A
meshc()-hez
hasonlan,
szintvona-lakat rajzol a surf() felszn
al.

surfl(x,y,z,lv);

Elvileg ugyanaz mint a surf(x,y,z),


de ennek a felletnek mg adunk egy
megvilgtst az lv vektor ltal
megadott
pontbl.
Pl.
legyen
lv=[8,8,8];

A hozzadott fnytl csak a sznek


vltoznak meg az brn.
surfnorm(x,y,z);

A surf(x,y,z) ltal ksztett rajzra


mg rrajzol egy-egy normlvektort
mindegyik rcspontra. Az eredmny
rthetsge rdekben cskkentettem a
rcspontok szmt.

24

pcolor(x,y,z);

vagy egyszeren csak


pcolor(z);

Ez az utasts egy skbeli sznrajza a z


mtrixnak az x s y fggvnyben.
Gyakorlatilag
ugyanaz,
mint
a
surf(x,y,z) brja fellnzetbl.

25

12. Labor: Komplex szmok brzolsa


A labor clja: Megismerkednk a komplex szmok hasznlatval s brzolsi
mdjaival.
A munka menete: Elbb generlunk egy mtrixnyi vletlenszer komplex szmot,
majd brzoljuk ket az sszes lehetsges mdon. Vgl ksztnk egy sszetett
rajzot, melyen egy szintvonalas diagramra rrajzoljuk bizonyos rcspontokban a
leggyorsabb vltozs (gradiens vektor) irnyt.
Elmleti ttekints. Komplex szmokrl mr rviden volt sz a plot()
utastsnl. Most viszont kicsit jobban belevgunk a rszletekbe. Mindenek eltt
lltsunk el egy 35-s mret, komplex elem mtrixot s tltsk fel norml
eloszls vletlen szmokkal.

Ezek utn brzoljuk hromflekppen ezeket a komplex szmokat:


Utasts s rvid magyarzat

Eredmny

compass(z);

Ez az utasts egy kzs origbl


kiindulva brzolja a z mtrix sszes
komplex elemt.

26

feather(z);

Ez az utasts egyetlen vzszintes vonal


mentn vesz fel egyenletes elhelyezs
origkat, s azokbl kiindulva brzolja
a z mtrix sszes komplex elemt.
quiver(real(z),imag(z);

Ez az utasts egy skban egyenl


rcstvolsg rcs mentn elhelyezked
origkra,
mint
kiindulpontokra
brzolja a z mtrix elemeit.

Ez utbbi utastst fogjuk hasznlni egy szintvonalas bra adott rcspontokban


szmtott gradienseinek megjelentsre.
[x,y]=meshgrid(-2:0.1:2,-pi:pi/20:pi);
z=(x+cos(y)).*(x-sin(y));
v=0:0.35:7;
contour(x,y,z,v);
[xx,yy]=meshgrid(-2:0.25:2,-pi:pi/8:pi);
dx=(xx+cos(yy))+(xx-sin(yy));
dy=-sin(yy).*(xx-sin(yy))-cos(yy).*(xx+cos(yy));
hold on;
quiver(xx,yy,dx,dy);
hold off;

A dx s dy fggvnyek a z fggvny x s y irny derivltjai. A berajzolt gradiens


vektorok hossza arnyos a 3D fellet lejtsvel, irnya s irnytsa pedig a
legmeredekebb emelkeds fel mutat.

27

13. Labor: Trbeli skfelletek kisznezse


A labor clja: Megismerkednk a trbeli brk kisznezsnek technikival.
A munka menete: A korbban megvalstott trbeli brkon kiprbljunk
klnfle kisznezsi technikkat.
Elmleti ttekints: A colormap(C) utastssal bellthatjuk, hogy milyen
sznpalettt hasznljon a Matlab az brk kisznezsre. A colormap(C) utasts
egyetlen paramtere egy hrom oszlopbl s tetszleges mennyisg sorbl ll
mtrix. A C mtrix sorai egy-egy szn RGB, azaz vrs, zld s kk komponenseit
rjk le. A mtrix elemei 0 s 1 kztti vals szmok, [0,0,0] jelli a fekett, [1,1,1] a
fehret, [1,0,0] a maximlis intenzits vrset, [0,1,0] a maximlis intenzits
zldet, [0,0,1] a maximlis intenzits kket; [w,w,w] egy bizonyos szrkt: minl
nagyobb a w rtke, annl vilgosabb a szrke rnyalat.
A colormap(C) hasznlatra tbbfle lehetsgnk van. Amellett, hogy
kitlthetnk egy sajt C mtrixot az hajtott sznekkel, ltezik egy sereg beptett,
paramterezhet sznskla. Ezeket az albbi tblzat foglalja ssze:
Beptett sznskla
colormap(gray(m));
colormap(hsv(m));
colormap(hot(m));
colormap(cool(m));
colormap(bone(m));
colormap(copper(m));
colormap(pink(m));
colormap(flag(m));
colormap(prism(m));
colormap(jet(m));
colormap(white(m));

Hats
A vlasztott sznskla a szrke m klnbz
rnyalatt tartalmazza.
Telten fnyl szneket ad a pirostl a kkig s vissza
a pirosig.
Egy forr sznkeverket ad.
Egy hideg sznkeverket cyan s magenta
vegyleteivel.
Kkesszrke (csontszn) rnyalatokat ad.
Egy vrses (rzszn) sznsklt llt el.
Egy rzsasznes sznsklt llt el.
Piros, fehr, kk s fekete periodikusan vltakozik
ebben a sznsklban.
Ciklikusan ismtldik a szivrvny 6 alapszne.
tmenet a meleg sznektl a hideg sznekig.
Miden kifestsi szn fehr. Vajon mire j az m?

Feladat: prbljunk mesh(),


meshc(), contour() s pcolor()
brzolsokat vgrehajtani klnfle szntrkppel s llaptsuk meg, melyik
szntrkp a kedvencnk

28

14. Laborvizsga
Az albbiakban megtallhat nhny lehetsges feladat:
1. A fggvny bemenete: a, b, x, y szmok, gy hogy a>0, b>a, y>0 x>1+y. A
fggvny grafikusan brzolja kt dimenziban az x + y sin(t) fggvnyt
logaritmikus koordinta rendszerben, de csak akkor brzol, ha teljeslnek a
felttelek.
2. A fggvny bemenete: a, b szmok, gy hogy a>0, b>0. A fggvny
grafikusan brzolja az x2/a2 + y2/b2 = 1 ellipszist, de csak akkor brzol, ha
teljeslnek a felttelek. Hasznljunk komplex szmos brzolst vagy polris
koordintkat6, vagy amit tudtok, de legyen kirajzolva az ellipszis.
3. Adott az 7. laborgyakorlatbl jl ismert, hromvltozs fggvny.
Ksztsnk egy trbeli brzolst arra az esetre, ha az u = 0.6+(1alpha)*0.4 mindig teljesl. A korbbi brzolsoknl mindig az volt a
megkts, hogy az egyik vltozt rgztettk. Ez itt most egy kicsit
mskppen van, a fggvnynek nincs bemeneti paramtere, csak kirajzol egy
3D brt.
4. A fggvny bemenete: n>3 vals szm. Rajzoljunk a (0,0) kzppont 3:n
sugar krkbe rhat szablyos sokszgeket. Mindegyik krbe egy
sokszget rajzoljunk, spedig annyi cscsa legyen a sokszgnek, ahny
egysg a kr sugara: a legbels, 3-as sugar krbe egy hromszget, a 4
egysgnyi sugar krbe egy ngyzetet, az 5 egysgnyi sugar krbe egy
tszget, s gy tovbb. A legnagyobbik kr sugara n egsz rszvel egyenl
s abba rtelemszeren n oldal sokszget rajzolunk.

Ehhez taln kellett volna jnni eladsra

29

Tesztkrdsek kollokviumra
Az albbi krdsek mr elfordultak korbbi tesztek alkalmval:
1. Vgrehajtjuk a kvetkez hrom utastst:
>> A=[1 2;2 1];
>> B=[1 2 3;3 2 1];
>> C=[2 0;1 3;2 1];

Az albbiak kzl melyik utasts mkdne negyedikknt (azaz nem ad hibajelzst)?


>>
>>
>>
>>
>>
>>
>>
>>

A*(B.*C)
A.*B
(B*C).*A
A*B*C
(B*C)*A
(C+2)./B
(A.*B)*C
B./B

2. Adott a Q mtrix, amelyrl annyit tudunk, hogy egsz szmokat tartalmaz.


Melyik az az utasts az albbiak kzl, amelyik a Q mtrixban lev elemek szmt
(sorok szma szorozva oszlopok szmval) eredmnyezi?
>>
>>
>>
>>
>>

(Q+1).^2
cumsum(Q(:,1))
sum(sum((Q+eps)./(Q+eps)));
(Q*Q).*(Q*Q);
sin(Q).^2+cos(Q).^2

3. Adott az albbi grafikon. Az albb lthat 5 program kzl melyik rajzolta ezt:

30

a) verzi
>>
>>
>>
>>
>>
>>
>>

x=0:7
y=zeros(4,8)
y(1,:)=x
y(2,:)=sin(x)
y(3,:)=5*cos(x)
y(4,:)=x.^2-5*x+4
plot(x,y)

b) verzi

>> x=linspace(0,7,8)
>> y=[x.*x/6;x+2;sin(x);cos(x)]
>> plot(x,y)

c) verzi

>> a=linspace(0,7,8)
>> b=[a.*a/6;a+2;sin(a);cos(a)]
>> stem(a,b)

d) verzi
>>
>>
>>
>>
>>

a=linspace(0,7,8)
plot(a,sin(a));
hold on
plot(a,a);
plot(a,a-a.^2);

e) verzi
>>
>>
>>
>>

a=0:7;
x=a;
y=[a,x*a/log(2+x),x+sin(x),2-a]
plot(a,y)

4. Adott a kvetkez program


>>
>>
>>
>>
>>
>>
>>
>>
>>
>>

a=0:0.25:7.5;
b=0:0.1:4;
c=b/2;
[p q]=meshgrid(a,b);
[s t]=meshgrid(c,a);
z=sin(p.*p)-cos(q.*q);
x=sin(t.*s)-cos(s.*t);
y=sin(p-q)-cos(q-p);
u=sin(t-s)-cos(s-t);
contour(p,q,y);

a. Melyik rajz lesz a program eredmnye?

31

b. Melyik utastsok flslegesek a programban?


5. Vgrehajtjuk a kvetkez hrom utastst:
>> L = 3:0.1:5;
>> G = linspace(3,5,20);
>> T = randn(1,20);

a. Melyik tmbnek van tbb eleme?


L

ugyanannyi van mindegyiknek

b. Van kt olyan tmb, amelyikben biztosan ugyanazok a szmok vannak,


ugyanbban a sorrendben? (3 pont)
Nincs
Van (L s T)

Van (L s G)

Van (G s T)

Van (L s G s T)

32

6. Adott a kvetkez program:


>>
>>
>>
>>

x
y
z
t

=
=
=
=

linspace(0.2,4.7);
x./(x./x);
x*x-4*x-2;
x.*sin(x-3)+x./(x+3);

a. Van a fentiek kztt olyan mvelet, amelyik hibt ad?


Nincs

Van (a msodik)

Van (a harmadik)

Van (a negyedik)

b. Az albbiak kztt felsorolunk utastsprokat. Melyik az a pros, amelyiknek


mindkt tagja ugyanazt a grafikont rajzolja ki?
plot(x,y) s plot(z,x)
plot(t,z) s plot(z,x)
plot(x,t) s plot(t,z)
plot(x,z) s plot(t,z)
plot(y,y) s plot(z,x)

7. Adott az albbi parabolafggvnyt ler kt utasts. Tovbb tekintsk az albbi


brt.
>> x=linspace(-12,5);
>> y=37+12*x+x.^2;

Krds: Az albbiak kzl melyik utastssal rajzoltuk a fenti brt?


plot(x,y)

plot3(y,y,x)

bar(c,e,l,o,n,a)

loglog(y,x)

polar(b,e,a,r)

semilogy(x,y)

semilogx(y,x)

loglog(l,o,g)

33

9. Adott az albbi program, melybe nem rtunk be egy rajzol utastst, helyette
pontok vannak.
for u = 9 : -1 : 3
k = 0 : u
x = u * cos(2*k*pi/u + u*u)
y = u * sin(2*k*pi/u + u*u)
[ka jak] = cart2pol(x,y);
[ke nu] = pol2cart(x,y)
......
hold on;
end;

Az albbiak kzl melyik utasts hinyzik a fenti programbl, ha az eredmny az


albb lthat kp?
polar(ka,jak,'k');
contour(jak,jak,c);
polar(ke,nu,k);
plot(x,y,'k');
ke = nu.*(nu+1);

10. Adott a kvetkez programocska:


>>
>>
>>
>>

t=1:6;
a = randn(3,6);
b = randn(3,6);
z = a + b*i;

34

Az albbi 8 rajzol utasts a rajzon lthat nyolc brt ksztette. rd oda


mindegyik rajz mell, hogy szerinted melyik utasts rajzolta azt. Azaz mindegyik
rajz mell rd oda az utasts betjelt.
B
U
R
A
T
I
N
O

compass(z,'k');
bar(2:4,imag(z(:,4)));
feather(z,'k');
stem(t,abs(sum(z)),'k');
bar(t,real(z(2,:)));
stem(t,abs(b(3,:))*6.15,'k');
errorbar(t,a(2,:),abs(b(3,:))*0.15,'k');
quiver(a,b,'k');

11. Adott a kvetkez programocska:


>>
>>
>>
>>

t = 150:1200;
h = 1600-t;
r = t*0.75;
[x y] = pol2cart(t/22,r);

35

Ezek utn dntsk el, az albb lthat utastsok kzl melyik rajzolta az albb
lthat Bbel tornyt?
>> errorbar(x,y,'k');
>> plot3(x,y,h,'k');
>> mesh(x,y,h);
>> surf(x,y,h);
>> meshc(x,y,h);
>> stem(y,x+h,'k');

36

You might also like