Sprawozdanie z sali 125


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.


Wyszukiwarka