Politechnika WrocÅ‚awska Podstawy automatyki i robotyki 30.04.2009 Sprawozdanie z laboratorium w sali 125 Ocena: Opiekun grupy Na laboratorium poznaliÅ›my podstawy dziaÅ‚ania programu Matlab oraz sposób wprowadzania i obliczania prostych wyrażeÅ„ matematycznych w programie, a także jak korzystać z pomocy wbudowanej w program, np. zwiÄ…zanej z funkcjami elementarnymi: >>help elfun 1. Iloczyn skalarny i norma wektora Pierwsze ćwiczenie polegaÅ‚o na obliczeniu iloczynu skalarnego wektora i jego transpozycji oraz wyznaczenie normy wektora. Wprowadzono wektor: >>x=[1 2 3 4] Obliczono normÄ™ euklidesowÄ…: >>norm(x) W przestrzeni euklidesowej norma euklidesowa definiowana jest jako: !n %"[ x1 , x2 , ... , xn]%"= #"x1#"2ƒÄ…#"x2#"2ƒÄ…...ƒÄ…#"xn#"2 ćą Norma taksówkowa definiowana jest jako: %"[ x1 , x2 , ... , xn]%"=#"x1#"ƒÄ…#"x2#"ƒÄ…...ƒÄ…#"xn#" Norma max definiowana jest jako: %"[ x1 , x2 , ... , x ]%"=max {#"xi#":1d"id"n} n Jej wynik to: ans =5.4772 NastÄ™pnie obliczono iloczyn skalarny wektora i jego transpozycji: >>x*x' Transpozycja wektora to zamian wektora w macierz jednokolumnowÄ…, tzn: 1 2 x=[1234]Ò! xT= 3 [ ] 4 a=śąa1 , a2 ,... ,anźą Iloczyn skalarny dwóch wektorów w przestrzeni euklidesowej oraz n b=śąb1 ,b2 ,... ,bnźą wynosi z definicji: a"b= ai bi=a1 b1ƒÄ…a2 b2ƒÄ…...ƒÄ…anbn " i=1 W interpretacji geometrycznej w przestrzeni euklidesowej iloczyn skalarny można a"b=#"a#"#"b#"cosÔÄ… #"a#", #"b#" zdefiniować również jako: , gdzie oznaczajÄ… odpowiednio dÅ‚ugoÅ›ci wektorów a , b ÔÄ… , a jest kÄ…tem ostrym miÄ™dzy tymi wektorami. Jego wynik to: ans=30 2. Macierz, macierz odwrotna, uwarunkowanie macierzy W drugim ćwiczeniu należaÅ‚o sprawdzić czy A"A-1=I , tzn. czy macierz razy jej odwrotność daje macierz jednostkowÄ…. NależaÅ‚o sprawdzić 3 macierze: 2 4 6 7 1 2 3 1 2 3 3 6 5 5 A1= A2= A3= 4 5 6 4 5 6 4 2 3 2 [ ] [ ] [ ] 7 8 9 0 0 0 5 1 2 6 Do programu wprowadzono je w nastÄ™pujÄ…cy sposób: >>A1=[2 4 6 7;3 6 5 5;4 2 3 2;5 1 2 6] >>A2=[1 2 3; 4 5 6;7 8 9] >>A3=[[1 2 3; 4 5 6;0 0 0] NastÄ™pnie sprawdzono macierz A1: >>A1*A1^(-1) W wyniku otrzymano: ans= 1.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 0.0000 1.0000 Czyli warunek jest speÅ‚niony dla tej macierzy. NastÄ™pnie sprawdzono macierz A2: >>A2*A2^(-1) Niestety w tym przypadku program sugeruje nam, że macierz może być zle uwarunkowana i w wyniku podaje nie macierz jednostkowÄ…, ale: ans= 8 0 16 0 0 8 2 0 2 W przypadku macierzy A3: >>A3*A^(-1) Daje w wyniku: ans=0 AD Dzieje siÄ™ tak ponieważ macierz odwrotna liczona jest ze wzoru A-1= det śą Aźą T D11 D12 ï" D1n D21 D22 ï" D2n AD= Dmn det śą Aźą`"0 gdzie oraz gdzie sÄ… dopeÅ‚nieniami î" î" Å„" î" [ ] Dm1 Dm2 ï" Dmn algebraicznymi powstaÅ‚ymi z iloczynu śą-1źąnƒÄ…m oraz wyznacznika macierzy powstaÅ‚ej przez usuniÄ™cie n-tej kolumny i m-tego wiersza. Dla macierzy A1 wyznacznik wynosi: >>det(A1) ans=-279 Dla macierzy A2 wyznacznik wynosi: >>det(A2) ans=0 Dla macierzy A3 wyznacznik wynosi: >>det(A3) ans=0 An ×m definiuje siÄ™ jednym z równoważnych wzorów: NormÄ™ macierzy dla macierzy %"Ax%"m n n %"A%"=max {%"Ax%"m: x"K }=max {%"Ax%"m : x"K }=max : x"Kn { } %"x%"n %"x%"nd"1 %"x%"n=1 x`"0 K "{! ,!} gdzie . Aby sprawdzić czy macierz jest dobrze uwarunkowana, tzn. czy obliczenia z niÄ… zwiÄ…zane dadzÄ… prawdziwe wyniki należy policzyć współczynnik uwarunkowania macierzy %"A%" cond śą Aźą= gdzie sÄ… odpowiednio normami macierzy A i jej %"A%",%"A-1%" %"A-1%" odwrotnoÅ›ci. W przypadku wyniku powyżej 200 macierz może być zle uwarunkowana i dawać bÅ‚Ä™dne wyniki. Dla macierzy A2 współczynnik wynosi: >>cond(A2) ans=3.7740e+016 Jest to tak wysoki współczynnik że niemożliwe sÄ… nawet przybliżone wyniki. 3. Równanie macierzowe i bÅ‚Ä…d wyniku. W trzecim ćwiczeniu należaÅ‚o obliczyć x z równania Ax=b gdzie A byÅ‚o macierzÄ…, a x i b wektorami. Wprowadzono wektory b1 oraz b2: >>b1=[21 18 2 15] >>b2=[4 10 16] OdpowiadajÄ…ce im macierze to macierze A1 i A2 z zadania drugiego. Po przeksztaÅ‚ceniu równania otrzymujemy i wyniku otrzymuje siÄ™ x jako x1=A1-1"b1 ' macierz jednokolumnowÄ…: >>x1=A1^(-1)*b1' x1= 1.0000 0.0000 2.0000 1.0000 BÅ‚Ä…d otrzymujemy ze wzoru : E 1=A1-1śąb1'- A1x1źą >>E1=A1^(-1)*(b1'-A1*x1) E1=2,701e-015 Czyli bÅ‚Ä…d jest tak maÅ‚y, że wrÄ™cz może zostać pominiÄ™ty. Inaczej jest dla macierzy A2: >>x2=A2^(-1)*b1' x2= 0 16 0 >>E2=A2^(-1)*(b2'-A2*x2) E2=64 Czyli bÅ‚Ä…d jest tak duży, że wynik na pewno jest bÅ‚Ä™dny. Można go wyeliminować liczÄ…c x2 innÄ… metodÄ…: >>x2=A2\b2' x2= 1 0 1 Ten wynik już jest prawidÅ‚owy. 4. Liczby zespolone, moduÅ‚ i faza liczby zespolonej W czwartym ćwiczeniu należaÅ‚o wczytać liczbÄ™ zespolonÄ… z=4ƒÄ…4i , a nastÄ™pnie obliczyć jej moduÅ‚ oraz fazÄ™. LiczbÄ™ zespolonÄ… można wprowadzić do programu na dwa sposoby: >>z=complex(4,4) lub >>z=4+4i ModuÅ‚ oraz faza obliczona zostaÅ‚a za pomocÄ… funkcji wbudowanych real oraz imag, a także ze wzorów: !śą zźą m= !śą zźą2ƒÄ…!śą zźą2 , ·Ä…=arctan ćą : śą źą !śą zźą >>m=sqrt(real(z)*real(z)+imag(z)*imag(z)) m=5,6569 >>alfa=atand(imag(z)/real(z)) alfa=45o 5. Pierwiastki równania W piÄ…tym ćwiczeniu należaÅ‚o wprowadzić dwa równania rzeczywiste i zespolone, a nastÄ™pnie obliczyć ich pierwiastki: oraz W śą xźą=x3-6x2ƒÄ…11x-6 z5=1ƒÄ…iÒ! 0=z5-1-i >>W=[1 -6 11 6] >>z=[1 0 0 0 0 -1-i] Aby otrzymać pierwiastki należy skorzystać z funkcji roots: >>roots(W) Pierwiastki wielomianu to: ans = 3 2 1 >>roots(z) Pierwiastki wielomianu zespolonego to: ans= 0.4866 0.9550i -0.7579 0.7579i 1.0586 + 0.1677i -0.9550 + 0.4866i 0.1677 + 1.0586i 6. RozkÅ‚ad na uÅ‚amki proste W szóstym ćwiczeniu należaÅ‚o rozÅ‚ożyć na uÅ‚amki proste wielomian sƒÄ…2 F śą sźą= s3ƒÄ…5s2ƒÄ…7sƒÄ…3 korzystajÄ…c z funkcji residue. Aby z niej skorzystać należaÅ‚o wprowadzić macierze zawierajÄ…ce współczynniki przy kolejnych potÄ™gach s licznika i mianownika wielomianu: >>a=[1 2] >>b=[1 5 7 3] A nastÄ™pnie skorzystano z funkcji: >>[r,p,k]=residue(a,b) Otrzymano: r = -0.2500 0.2500 0.5000 p = -3.0000 -1.0000 -1.0000 k = [] To znaczy, że wielomian po rozÅ‚ożeniu go na uÅ‚amki proste wyglÄ…da nastÄ™pujÄ…co: 0,25ƒÄ… 0,5 F śą sźą=-0,25ƒÄ… sƒÄ…3 sƒÄ…1 śą sƒÄ…1źą2 7. WartoÅ›ci wÅ‚asne macierzy W ćwiczeniu siódmym należaÅ‚o znalezć wartoÅ›ci wÅ‚asne macierzy, do ćwiczenia użyto macierzy A1 i A2 z ćwiczenia drugiego. Aby znalezć wartoÅ›ci wÅ‚asne macierzy należy det śąÁÄ…"I -Aźą=0 rozwiÄ…zać równanie A"x=ÁÄ…"x czyli inaczej . W Matlabie do szukania wartoÅ›ci wÅ‚asnych sÅ‚uży funkcja eig. Dla macierzy A1 wartoÅ›ci wÅ‚asne wynosiÅ‚y: >>eig(A1) ans= 15.3989 -3.4978 1.4005 3.6984 Dla macierzy A2 wartoÅ›ci wÅ‚asne wynosiÅ‚y: >>eig(A2) ans= 16.1168 -1.1168 0.0000 8. Rysowanie wykresów dwuwymiarowych W ćwiczeniu ósmym należaÅ‚o narysować wykres dwuwymiarowy skÅ‚adajÄ…cy siÄ™ z trzech x x x - - - 10 10 10 funkcji: , zakres rysowanego wykresu wynosiÅ‚ y1=e , y2=e sin śą4x źą, y3=-e x "[0,10 Ä…Ä… ] z krokiem 0,2. Aby otrzymać wykres należaÅ‚o wprowadzić zakres: >>x=0:0.2:10*pi; Oraz funkcje: >>y1=exp(-x/10); >>y2=exp(-x/10).*sin(4*x); >>y3=-y1; NależaÅ‚o pamiÄ™tać aby przed znakiem mnożenia eksponenty i sinusa wpisać kropkÄ™ aby byÅ‚ to iloczyn skalarny, a nie wektorowy. NastÄ™pnie aby wykres zostaÅ‚ narysowany należaÅ‚o użyć funkcji plot: >>plot(x,y1,xy2,x,y3) Po wykonaniu siÄ™ funkcji w osobnym oknie pokazaÅ‚ siÄ™ wykres przypominajÄ…cy wykres amplitudy drgaÅ„ gasnÄ…cych, czyli tÅ‚umiona sinusoida. 9. Rysowanie wykresów trójwymiarowych W ostatnim ćwiczeniu należaÅ‚o narysować wykres trójwymiarowy funkcji x , y"[-2,2] , zakres z krokiem 0,2. Aby otrzymać wykres z=sinśą xźąsin śą yźąe- x2- y2 należaÅ‚o wprowadzić zakres: >>[x,y]=meshgrid(-2:0.2:2); Oraz funkcjÄ™ tak samo jak w poprzednim zadaniu pamiÄ™tajÄ…c o kropkach przy dziaÅ‚aniach skalarnych: >>z=sin(x).*sin(y).*exp(-x.*x-y.*y); NastÄ™pnie aby wykres zostaÅ‚ narysowany należaÅ‚o użyć funkcji mesh: >>mesh(x,y,z) Po wykonaniu siÄ™ funkcji w osobnym oknie pokazaÅ‚ siÄ™ wykres którego powierzchnia byÅ‚a siatkÄ…, gdyby zamiast funkcji mesh zostaÅ‚a użyta funkcja meshc powierzchnia byÅ‚aby peÅ‚na, gdyby funkcja surf powierzchnia byÅ‚aby przedstawiona przez punkty, a gdyby funkcja ribbon za pomocÄ… wstążek.