Upload
adrian-bardossy
View
239
Download
0
Embed Size (px)
Citation preview
7/22/2019 10 Matlab Trideni Dat
1/16
1
voddo
Matlabu VIMetodyazenprvk,aproximace,
symbolickmatematika
Pavel Karban: Vpoty a simulace v programech Matlab a Simulink, Computer Press, Brno, 2006
2
Algoritmyazen
Pro vstupn posloupnost S plat:
1. uspodnvzestupn:
uspodnsestupn:
2. posloupnostSjepermutacpvodnposloupnostiS(obsahujetedystejndata,jenv jinmpoad).
algoritmus azen
vstupn posloupnost vstupn posloupnost
7/22/2019 10 Matlab Trideni Dat
2/16
2
Metodyazenprvk
kol:seaditprvkyvlinernmseznamupodledanpodmnky selnvelikost,
poadvabeced znak,
jinkl,...
Metodyselisloitostalgoritmuaefektivitou rychlostdosaencle.
Znmjsoumetody: SELECTION SORT (SELECTSORT)
BUBBLESORT
INSERTION SORT
dal(quicksort,heapsort,mergesort).
Dlenadicchalgoritm
Podlezkladnmylenky azenvbremVsouborusevdynajdenejmenze
zbvajcchpoloekaulona konecpostupnbudovanhoseazenhosouboru.
azenvkldnmZesouboruneseazenchdatsepostupn berepolokapo poloceavkldsena sprvnmstov seazenmsouboru(zpotku
przdnm). azenzmnouVsouborusevdynalezne(njakou
metodouzvislouna konkrtnmalgoritmu)njakdvojiceprvk,kterjevepatnmpoad,atytoprvkysenavzjemzamn.
azensluovnmVstupnsouborserozdlnasti,kterse(typickyrekurzivn)sead;vslednseazenstisepotsloutakovmzpsobem,abyivsledekbylseazen.
7/22/2019 10 Matlab Trideni Dat
3/16
3
MetodaSELECTIONSORT
Intuitivnzpsobeen.
Vyhledvmnoin prvk minimum nebomaximum
podletoho,jestlichcemetditvzestupn nebo
sestupn
Umstnalezenprveknaprvnmstovmnoin (za
poslednseazenprvek)
Processeopakuje,piemvelikosttdnhoseku
sezvtuje.
SELECTIONSORT
Seatesestupn vektora:
a = [7 2 3 9 5 6 4]
a = [max ... min]
a = [ 7 2 3 9 5 6 4 ]
a = [ 9 2 3 7 5 6 4],1zmna
a = [ 9 2 3 7 5 6 4]
a = [ 9 7 2 3 5 6 4],2 zmny
7/22/2019 10 Matlab Trideni Dat
4/16
4
SELECTIONSORT
function [b]=sel_sort(a);
delka=length(a);
for i=1 : delka-1for j=i+1 : delka
if a(i)
7/22/2019 10 Matlab Trideni Dat
5/16
5
MetodaBUBBLESORT
Metodaprobublvn
Principemjeporovnvnsousednchprvkajejich
ppadnprohozenpodletoho,jakchcemedatatdit
(vzestupn/sestupn).
Probublvnseopakuje.
Proceslzepedasn ukonittehdy,kdypiprchodu
celoumnoinounedolokvmn.
BUBBLE SORT
Seatesestupn vektora,vsledekvlotedob:
a = [7 2 3 9 5 6 4]
a = [max ... min]
a = [ 7 2 3 9 5 6 4 ]
a = [ 7 2 3 9 5 6 4 ] provedenazmna
a = [ 7 3 2 9 5 6 4 ] provedenazmna
a = [ 7 3 9 2 5 6 4 ] opakujdokoncevektoru
Bylaprovedenanjakzmna?
ANO: probublejznovu stylem
NE: seazenposloupnostvsledek
7/22/2019 10 Matlab Trideni Dat
6/16
6
BUBBLESORT
function [b]=bub_sort(a)
delka=length(a);zamena=1; %(probhnut cyklu alespojednou !)
while zamena ~= 0zamena=0;
for i = 1 : delka-1if a(i)
7/22/2019 10 Matlab Trideni Dat
7/16
7
MetodaINSERTIONSORT
Beremevvahu
kad
prvek
po
naje
prvnm
zleva
vp
pad
dkovhovektoru.
sten seazenvektorjevektorobsahujcprvnprvek.
Prokaddalprvek(oddruhhopoposledn):Otzka:Jepedprvkem,kterzaazujeme,prvek,jehohodnotajevt?
Ano:Provedemezmnuprvk apokraujemebodem2.
Ne:Prvekzstvnanynjpozici prvekjezaazen.
Seazenvektorvypi.
http://www.cs.oswego.edu/~mohammad/classes/csc241/samples/sort/Sort2-E.html
7/22/2019 10 Matlab Trideni Dat
8/16
8
INSERTIONSORT
function y = insert_sort(x);n=length(x);
for i = 2:n
c = x(i);
for j = i-1:-1:1
if x(j) > x(j+1);
x(j+1)=x(j);
x(j)=c;
end
endend
y=x;
Potae a programovn 1 15
VhodyINSERTIONSORT
Tnazvnametodapmhozakldn.
Jednoduchnaimplementaci.
Efektivninamalmobjemudat.
Efektivnnapedtdnch datech.
Efektivnjneselectionsortnebo bubblesort.
asovnronostrostelinern spotemtdnchprvk.
Jestabiln(nemnpoadprvk sestejnmklem).
Vyadujeminimumpamti(pouzekonstatn pamvelikostiN).
Jeonline(tdkadnov pchozprvek).
7/22/2019 10 Matlab Trideni Dat
9/16
9
PokroilejalgoritmyQuicksort
Quicksort nejrychlejalgoritmuszaloennaporovnvnprvk (rekurzivnazen)function y = quicksort(x)
n = length(x);
if(nx(2))
x=[x(2);x(1)];
end
y=x;
return;
end
m=fix(n/2);
pivot=x(m);
Mensi=find(xpivot);if(isempty(ind));y=x;return;end;
pivot=x(ind(1));
Mensi=find(x=pivot);
y=[quicksort(x(Mensi));quicksort(x(Vetsi))];
Pozn.:Uvedenalgoritmuspedpokld,eazenvektorjevesloupcovmtvaruPotae a programovn 1 17
PokroilejalgoritmyShellsort
function y = shellsort(x)
n = length(x);
mezera = floor(n/2);
while mezera > 0
for j = mezera:n
for i = j-mezera:-mezera:1
if x(i+mezera)>=x(i)
break;
elsec = x(i);
x(i) = x(i+mezera);
x(i+mezera) = c;
end
end
end
mezera = floor(mezera/2);
end
y=x; ZdrojMartinKrejsa:Algoritmizaceinenrskchvpot
Potae a programovn 1 18
7/22/2019 10 Matlab Trideni Dat
10/16
10
Srovnnadicchalgoritm
http://www.sorting-algorithms.com/
http://www.cs.hope.edu/~dershem/ccaa/animator/Animator.html
Aproximace(prokldn)menchdatkivkou
Potae a programovn 1 20
7/22/2019 10 Matlab Trideni Dat
11/16
11
Aproximace,interpolace,extrapolace
V
ad
aplikac(typicky
laboratorn
m
en)zskvme
diskrtn
data
ve
tvaru(x,y)
Pklad:
Menteplotyvhodinovchintervalech:
>> x = 10:1:15;
>> y = [25 27 28 29 27 23];
Interpolace
Stanovenhodnotymezimenmi
body
Extrapolace
Stanovenhodnotymimorozsah
menchbod
Aproximacekivky "proloen"mezibody
Potae a programovn 1 21
Aproximacepolynomem
Funkcepolyfit
nalezenkoeficient polynomupoadovanhostupn,kternejlpeproklddata
(metodanejmenchtverc).
Pklad:
Proloenpmkou:
>> polyfit(x,y,1)
ans = -0.2571 29.7143
y=0,26x+29,7
Proloenparabolou:
>> polyfit(x,y,2)
ans =
-0.7500 18.4929 -85.2857
y=0,75x2 +18,5x 85,3
Potae a programovn 1 22
7/22/2019 10 Matlab Trideni Dat
12/16
12
Aproximacepolynomem
x = 10:1:15;y = [25 27 28 29 27 23];
koef = polyfit(x,y,2);
krivka = polyval(koef,x);
plot(x,y,'ro',x,krivka)
xlabel('Cas (hod)')
ylabel('Teplota (C)')
title('Prubeh teploty')
axis([9 16 20 30])
Vpoetteplotyvlibovolnmbod (interpolace):
>> polyval(koef,11.5) ans = 28.1946
Vpoetteplotyvlibovolnmbod (extrapolace):
>> polyval(koef,17) ans = 12.3429
Potae a programovn 1 23
BasicFitting
Potae a programovn 1 24
7/22/2019 10 Matlab Trideni Dat
13/16
13
Symbolickmatematika
Potae a programovn 1 25
Symbolickmatematika
Operacesesymboly,nessly.
Nap.a + aje2a
help toolbox/symbolic
Typsym prosymbolickpromnnavrazy
>> a = sym('a');
>> a+a
ans = 2*a
>> b = sym('x^2');
>> c = sym('x^4');
>> c/b
ans = x^2
>> b^3
ans = x^6
>> c*b
ans = x^6
>> b + sym('4*x^2')
ans = 5*x^2
Potae a programovn 1 26
7/22/2019 10 Matlab Trideni Dat
14/16
14
Symbolickmatematika
>> sym('z^3 + 2*z^3')ans = z^3 + 2*z^3
>> z = sym('z');
>> sym(z^3 + 2*z^3)
ans = 3*z^3
Vrazvprvnmppad senevyhodnot(z nensymbolickpromnn).
>> syms x y z
jetotjako
>> x = sym('x');
>> y = sym('y');
>> z = sym('z');
Potae a programovn 1 27
pravafunkc
Funkce simplify
>> x = sym('x');
>> muj_vyraz = cos(x)^2 + sin(x)^2
muj_vyraz = cos(x)^2 sin(x)^2
>> simplify(muj_vyraz)
ans = 1
Funkcecollect, expand, factor
propravupolynom
>> x = sym('x');
>> collect(x^2 + 4*x^3 + 3*x^2)
ans = 4*x^2 + 4*x^3
>> expand((x+2)*(x1))
ans = x^2 + x2
>> factor(ans)
ans =(x+2)*(x1)
Potae a programovn 1 28
7/22/2019 10 Matlab Trideni Dat
15/16
15
pravafunkc
Funkcesubs
>> muj_vyraz = x^3 + 3*x^2 - 2
muj_vyraz = x^3+3*x^2-2
>> x=3;
>> subs(muj_vyraz,x)
ans = 52
Prcesezlomky:
>> 1/3 + 1/2
ans = 0.8333
>> sym(1/3 + 1/2)
ans = 5/6
>> double(ans)
ans = 0.8333
Potae a programovn 1 29
Funkceezplot
ezplotvykreslprbhfunkcevrozmez
>> ezplot('x^3 + 3*x^2 - 2')
>> ezplot('cos(x)',[0 pi])
Potae a programovn 1 30
7/22/2019 10 Matlab Trideni Dat
16/16
eenrovnic
Funkcesolve
>> x = sym('x');
>> solve('2*x^2 + x = 6')
ans =
3/2
-2
>> solve('3*x^2 + x')
ans =
0
-1/3
>> double(ans)
ans =
0
-0.3333
Potae a programovn 1 31
DkujizapozornostPednkadne27.11.senekon
Potae a programovn 1 32