1 Laboratorinis darbas
1 Laboratorinis darbas
1 Laboratorinis darbas
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