03.11.2014 Views

1 Laboratorinis darbas

1 Laboratorinis darbas

1 Laboratorinis darbas

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Aritmetiniai skaičiavimai<br />

1 <strong>Laboratorinis</strong> <strong>darbas</strong><br />

MATLAB (Apžvalga)<br />

>> 1/5+2^8*1/(sqrt(125)+15)<br />

ans =<br />

9.9783<br />

>> x=sin(10)<br />

x =<br />

-0.5440<br />

>> z=pi/6;<br />

>> z<br />

z =<br />

0.5236<br />

Norint pakeisti išvedamo rezultato naidojama komanda format ir žemiau nurodyti raktiniai žodžiai.<br />

Žemiau pateiktoje lentelėje parodyta, kaip įvairiais formatais išvedama išraiška 1/3.<br />

short Trumpas skaičius 0.3333<br />

long Ilgas skaičius 0.33333333333333<br />

short e Trumpas normalizuotas skaičius su dešimtainiu daugikliu 3.3333e-001<br />

long e Ilgas normalizuotas skaičius su dešimtainiu daugikliu 3.333333333333333e-001<br />

bank Valiutos formatas 0.33<br />

rational Racionalioji trupmena 1/3<br />

Be ans, skirto paskutiniam apskaičiuotam rezultatui įvardinti, galima paminėti tokius specialiuosius<br />

kintamuosius: i (arba j) – , pi – skaičius , inf – begalybė, NaN – neapibrėžtumas 0/0 arba /, realmin<br />

– mažiausias realusis skaičius (2.2251e-308), realmax – didžiausias realusis skaičius<br />

(1.7977e+308). Eilutės dalis, prasidedanti %, – komentarai.<br />

Dažniausiai naudojamos šios matematinės funkcijos:<br />

sin – sinusas,<br />

asin – arksinusas,<br />

cos – kosinusas,<br />

acos – arkkosinusas,<br />

tan – tangentas,<br />

atan – arktangentas,<br />

cot – kotangentas,<br />

exp – eksponentinė funkcija,<br />

log – natūrinis logaritmas,<br />

log10 – dešimtainis logaritmas,<br />

log2 – dvejetainis logaritmas,<br />

sqrt – kvadratinė šaknis,<br />

abs – modulis (absoliutinis dydis),<br />

pow2(x) – 2 x .<br />

Vektoriai ir matricos<br />

Komanda a=[-1 4 7 0] apibrėžia vektorių eilutę, o b=[0; -5; 6] – vektorių stulpelį.<br />

Vektorių eilutę galima sukurti naudojant operaciją ,, : " (dvitaškis), kurios bendra forma tokia:<br />

Pradinė_reikšmė: žingsnis : galutinė_reikšmė<br />

>> v=2:4:20<br />

v =<br />

2 6 10 14 18<br />

>> v1=1:10<br />

v1 =<br />

1 2 3 4 5 6 7 8 9 10


Dirbant su masyvais galima naudoti standartines funkcijas. Dažniausiai naudojamos:<br />

length(x) – randa masyvo x elementų skaičių;<br />

max(x) – randa didžiausią masyvo x elemento reikšmę;<br />

min(x) – randa mažiausią masyvo x elemento reikšmę;<br />

[k, v]=max(x) – randa maksimalaus masyvo x elemento reikšmę k bei jo vietą (eilės numerį) v;<br />

mean(x) – apskaičiuoja masyvo vidurkį;<br />

sort(x) – rikiuoja didėjimo tvarka;<br />

sum(x) – apskaičiuoja sumą;<br />

prod(x) – apskaičiuoja sandaugą.<br />

>> a=[1 -10 15 4 0 25];<br />

>> [k,v]=max(a);<br />

>> k,v<br />

k =<br />

25<br />

v =<br />

6<br />

Dirbant su matricomis, galima atlikti veiksmus panariui su jų elementais (kaip ir su masyvais). Taip<br />

pat galima naudoti šias funkcijas:<br />

size(x) – randa matricos x matmenis;<br />

[n, m]=size(x) – randa atskirai matricos X eilučių n bei stulpelių m kiekius;<br />

eye(n, m), eye(n) – suformuoja vienetinę matricą;<br />

zeros(n, m) – suformuoja nulių matricą;<br />

ones(n, m) – suformuoja vienetų matricą;<br />

diag(x) – jei x yra masyvas, sudaro kvadratinę matricą, kurios pagrindinėje įstriţainėje x elementai;<br />

jei x – matrica, suformuoja vektorių iš pagrindinės įstriţainės elementų;<br />

det(x) – randa kvadratinės matricos determinantą;<br />

inv(x) – randa atvirkštinę matricą (kvadratinei matricai).<br />

Matricoms galima panaudoti funkcijas max, min, mean, sort, sum, prod. Jos veiksmus atlieka su<br />

kiekvieno stulpelio elementais atskirai. Visų šių funkcijų, išskyrus sort, rezultatas – masyvas eilutė.<br />

Matricų bei jų elementų suliejimui (išskaidymui) naudojami tokie veiksmai:<br />

A=[A1, A2, A3] – matricų sujungimas eilutėmis (horizontaliai). Turi sutapti visų matricų eilučių<br />

kiekiai;<br />

A=[A1; A2; A3] – matricų sujungimas stulpeliais (vertikaliai). Turi sutapti visų matricų stulpelių<br />

kiekiai;<br />

A(i, :) – visa i-oji eilutė;<br />

A(2:3, 4:5) – matricos dalis ( elementai A24, A25, A34, A35);<br />

A(2:3, 4:5) = B – matricos B įrašymas į nurodytą A vietą;<br />

A(2:end, 5) – 5-ojo stulpelio elementai pradedant nuo 2-osios eilutės iki galo;<br />

A(:) – matricos išskleidimas stulpeliais į vieną masyvą.<br />

A(m,:) =[ ] - panaikina A matricos m-tąją eilutę;<br />

A(:,n) = [ ] - panaikina A matricos n-tąjį stulpelį;<br />

Matricas galima panaudoti tiesinių lygčių sistemų sprendimui.<br />

x1<br />

2x2<br />

1;<br />

<br />

Rasime lygčių sistemos 2x1<br />

4x2<br />

x3<br />

2; sprendinį.<br />

<br />

x2<br />

5x3<br />

3<br />

>> A=[1 2 0;2 4 -1;0 1 5];<br />

>> B=[1;2;3];<br />

>> A^(-1)*B<br />

ans =<br />

-5<br />

3<br />

0


%arba<br />

>>X=inv(A)*B<br />

X =<br />

-5<br />

3<br />

0<br />

Grafikų braižymas<br />

Matlab aplinkoje grafikas išvedamas atskirame lange, vadinamame Figure.<br />

Paprastų grafikų braižymui bei jų charakteristikų nustatymui dažniausiai naudojamos šios funkcijos:<br />

plot(x1, y1, s1, x2, y2, s2, …) – išveda grafiką. Dydžiai xi, yi – i-osios kreivės argumentų bei funkcijų<br />

reikšmių masyvai, si – simbolinis kintamasis (nebūtinas), kuriame gali būti 3 specialūs simboliai,<br />

nurodantys kreivės charakteristikas: linijos tipą, mazgo (taško) tipą bei linijos spalvą. Galima<br />

nurodyti tik kai kurias iš šių charakteristikų. Jei dydžio nėra, tai grafiko linija ištisinė, grafiko taškai<br />

vaizduojami pikseliais, o spalva kreivėms parenkama tokia tvarka: mėlyna, žalia, raudona, žydra,<br />

violetinė, geltona, juoda, balta.<br />

plot(y,s) – grafike ant x ašies atidedami taškų eilės numeriai.<br />

grid įveda arba panaikina papildomą tinklelį. Taip pat galima naudoti grid on tinklelio įvedimui;<br />

grid off – panaikinimui.<br />

title('pavadinimas') – uţrašomas grafiko pavadinimas.<br />

xlabel('x_vardas'), ylabel('y_vardas') – uţrašomi ašių pavadinimai.<br />

axis – nustato ašių charakteristikas:<br />

axis([xmin xmax ymin ymax]) – nurodomos ašių ribinės reikšmės;<br />

axis square – abi ašys vienodo ilgio;<br />

axis equal – vienodas abiejų ašių mastelis;<br />

axis on, axis off – įveda arba panaikina ašis.<br />

legend('tekstas1', 'tekstas2', …) įveda legendą, legend off – ją panaikina.<br />

text(x, y, 'tekstas') – tekstas patalpinamas grafiko taške, kurio koordinatės (x, y).<br />

>> %nubresime f-ju x , tan(x)+1 ir log(x+2) grafikus, kai x kinta [0,1;1].<br />

>> x=0.1:0.2:1;<br />

>> y=sqrt(x);<br />

>> y1=tan(x)+1;<br />

>> y2=log(x+2);<br />

>> plot(x,y,x,y1,x,y2)<br />

2.5<br />

2<br />

1.5<br />

1<br />

0.5<br />

0<br />

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9<br />

ezplot('funkcija') – supaprastintas grafiko braižymas. x kitimo intervalas [-2, 2].<br />

>> %nubresime f-jos y=sin2x*x grafika<br />

>> ezplot('sin(2*x)*x')


sin(2 x) x<br />

4<br />

3<br />

2<br />

1<br />

0<br />

-1<br />

-2<br />

-3<br />

-4<br />

-5<br />

-6<br />

-6 -4 -2 0 2 4 6<br />

x<br />

clf – išvalo grafinį langą.<br />

fill(X, Y, 'spalva') – spalvina dvimačius daugiakampius. Čia X, Y – daugiakampio viršūnių<br />

koordinačių masyvai, spalva gali būti ţymima raide.<br />

line(X,Y, 'charakteristikos_pavadinimas1', charakteristika1, …)<br />

>> X=[1 3 5 3 2 1];<br />

>> Y=[2 4 7 1 0 2];<br />

>> fill(X,Y,'g');<br />

>> line(X,Y,'color','y','linewidth',7)<br />

7<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

1 1.5 2 2.5 3 3.5 4 4.5 5<br />

[x,y] = polybool('intersection', X1, Y1, X2, Y2) – dviejų daugiakampių sankirta (intersection). Čia<br />

X1 ir Y1 – pirmojo daugiakampio viršūnių koordinačių masyvai, X2 ir Y2 – antrojo daugiakampio<br />

viršūnių koordinačių masyvai. Šie masyvai turi būti vektoriai stulpeliai. Rezultatas – gauto<br />

sankirtos daugiakampio viršūnių koordinačių masyvai x ir y.<br />

[X1,X2] = meshgrid(x1,x2) – generuoja dviejų kintamųjų funkcijos f(x1,x2) argumentų vektorių<br />

x1 ir x2 matricas X1 ir X2, kurios naudojamos funkcijos f(x1,x2) grafiniam pavaizdavimui.<br />

surf(X1,X2,Z) – grafiškai pavaizduoja dviejų kintamųjų funkcijos paviršių. X1 ir X2 – funkcijos<br />

argumentų reikšmių matricos, Z – funkcijos reikšmių matrica. Spalvų mastelis parinktas pagal<br />

funkcijos reikšmę.<br />

contour(X1,X2,Z,v) – dviejų kintamųjų funkcijos Z=f(X1,X2) pavaizdavimas izolinijomis (lygio<br />

linijomis), v – lygio linijų reikšmių vektorius.<br />

surf(X1,X2,Z,gradient(Z)) – grafiškai pavaizduoja dviejų kintamųjų funkcijos paviršių. X1 ir X2 –<br />

funkcijos argumentų reikšmių matricos, Z – funkcijos reikšmių matrica. Spalvų mastelis parinktas<br />

pagal funkcijos gradiento reikšmę.<br />

colorbar – pavaizduoja funkcijos reikšmių spalvų mastelio stulpelį.<br />

plot3(X1,X2,Z) – 3D grafikų išvedimas. X1,X2,Z – vektoriai, kurių elementai – taškų koordinatės,<br />

per kurias brėžiama linija.<br />

2<br />

f grafiką, kai <br />

2,2 ;<br />

y <br />

2,2<br />

Nubrėšime ( x,<br />

y)<br />

xsin(<br />

y )<br />

>> x=-2:0.1:2;<br />

x .


y=-2:0.1:2;<br />

>> [X,Y]=meshgrid(x,y);<br />

>> F=X.*sin(Y.^2);<br />

>> surf(X,Y,F);<br />

>> colorbar;<br />

1.5<br />

2<br />

1<br />

1<br />

0.5<br />

0<br />

0<br />

-1<br />

-0.5<br />

-2<br />

2<br />

-1<br />

1<br />

0<br />

-1<br />

-2<br />

-2<br />

-1<br />

0<br />

1<br />

2<br />

-1.5<br />

F-jos f lygio linijos<br />

>> figure(2);<br />

>> contour(X,Y,F,[min(F),max(F)]);<br />

2<br />

1.5<br />

1<br />

0.5<br />

0<br />

-0.5<br />

-1<br />

-1.5<br />

-2<br />

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2<br />

Nubrėšime per duotąjį paviršių einančią paviršiaus liniją.<br />

>> figure (4)<br />

>> surf(X,Y,F);<br />

>> hold on;<br />

>> plot3(X(20,:),Y(20,:),F(20,:),'m--','LineWidth',5);


2<br />

1<br />

0<br />

-1<br />

-2<br />

2<br />

1<br />

0<br />

-1<br />

-2<br />

-2<br />

-1<br />

0<br />

1<br />

2<br />

Programavimas Matlabe<br />

Ciklai:<br />

for =::<br />

;<br />

end;<br />

Čia xp pradinė ciklo kintamojo reikšmė, hx – kitimo žingsnis, xg – galinė reikšmė. xp, hx ir xg gali<br />

būti bet kokio tipo skaitiniai elementai. Jei hx=1, jį galima praleisti.<br />

while <br />

;<br />

end<br />

Sąlygų tikrinimas<br />

Sąlygos tikrinimo operatorius if gali būti tokių formų:<br />

1) if <br />

;<br />

end<br />

2) if <br />

;<br />

else<br />

;<br />

end<br />

3) if <br />

;<br />

elseif <br />

;<br />

elseif <br />

;<br />

…<br />

else<br />

;<br />

end<br />

Užduotis


1<br />

ln(250) <br />

45<br />

1. Apskaičiuokite išraišką<br />

. Rezultatą išveskite trim skirtingais formatais.<br />

5<br />

5 2 <br />

<br />

9 3 <br />

2. Atlikite veiksmus su matricomis:<br />

-suformuokite matricas A(4,3) ir B(4,4) iš laisvai parinktų skaičių ir vektorių eilutę C(3) iš<br />

skaičių, priklausančių intervalui [-5;5];<br />

antrąjį matricos A stulpelį pakeiskite pirmąja matricos B eilute ;<br />

prie matricos A prijunkite vektorių C;<br />

apskaičiuokite matricos B atvirkštinę ir jos determinantą;<br />

x1<br />

2x2<br />

5x3<br />

9x4<br />

79,<br />

<br />

3x1<br />

13x2<br />

18x3<br />

30x4<br />

263,<br />

3. Raskite tiesinių lygčių sistemos <br />

sprendinį. Patikrinkite, ar<br />

2x1<br />

4x2<br />

11x3<br />

16x4<br />

146,<br />

<br />

x1<br />

9x2<br />

9x3<br />

9x4<br />

92;<br />

rastas sprendinys tikrai yra šios lygčių sistemos sprendinys.<br />

3<br />

x 1<br />

4. Nubrėžkite grafikus: y , 4 2 2<br />

3x3y<br />

y x 9 , y x sin(5x)<br />

, z e .<br />

x<br />

2<br />

4<br />

5. Sudarykite programą, kuri vektoriuje (turinčiame tris vienodas maksimalias reikšmes)<br />

vietoje maksimumų įrašytų minimumą, o vietoje minimumo visų teigimų elementų sumą.<br />

6. Kokius skaičiavimus atlieka duotas komandų rinkinys? Įvykdykite komandas. Ar galite<br />

paaiškinti gautą rezultatą?<br />

>> a = 0;<br />

>> b = 0;<br />

>> for i = 1:1000000<br />

a = a + 1/i;<br />

end<br />

>> for i = 1000000:(-1):1<br />

b = b + 1/i;<br />

end<br />

>> format long<br />

>> b-a

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!