Sprawozdanie – Laboratorium Podstawy AiR dr inż. Ewa Szlachcic
Leszek
Zadanie 1
Polegalo ono na obliczeniu wartości wyrażenia arctg[log(ln(4+2*3)], całość realizowana za pomocą prostego wyrażenia (wczeżniej dane na temat funkcji znalezione w pomocy dla f. elementarnych wyświetlonej poleceniem “>> help elfun” ):
>>atan(log10(log(4+3*2)))
ans =
0.3475
Zadanie 2 - 3
W
tym zadaniu zaczelismy od stworzenia macierzy x=[1 2 3 4], macierzy
x' potrzebnej do późniejszego mnożenia (by uniknąć błędu
“Inner matrix dimensions must agree.” czyli błedu przy działaniu
na macierzach na których jest to zabronione z uwagi na liczbę
kolumn I wierszy), obliczenie normy z macierzy x poleceniem norm(x)
oraz iloczyn skalarny dot(x,x):
>>x=[1 2 3 4]; x'; norm(x)
>> dot(x,x)
Iloczyn skalarny dla przykładowych wektorów a=(1,2,3) I b=(3,2,1) mozna interpretować na dwa sposoby:
→ Jako suma algebraiczna odpowiednich wartosci przy odpowiednich indeksach:
a*b=1*3+2*2+3*1=10
→
Korzystając z rachunku macierzowego (wykorzystane w zadaniu):
a*b=aT*b gdzie aT to macierz transponowana (polega na zamianie wierszy i kolumn tej macierzy)
Ostatnim zadaniem było przeprowadzenie mnożenia x*x':
>>x*x'
Zadanie
4 - 5
Następnie stworzylismy macierze kwadratowe po czym policzylismy ich wyznaczniki, stworzylismy macierze odwrotne (A1^(-1)) oraz za pomocą cond sprawdzilismy dokładność stworzenia macierzy odwrotnych:
>>
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]
>> det(A1)
>>A1^(-1)
>>
A1*A1^(-1)
>> cond(A1)
Norma macierzy – tutaj miara błędów i wrażliwości w rozwiązywaniu liniowych układów równań. Wyróżniamy normy: 2-normę (normę euklidesową), 1-norma, norma Frobeniusa (F norma) i norma nieskończoności (inf norma). Łatwa do obliczenia algebraicznie jest 1 norma, która równa jest sumie wartości bezwzględnych poszczególnych wyrazów w kolumnie dla której ta wartość będzie największa. Cond(A) służy do sprawdzenia tego parametru.
Wyniki:
>>
cond(A1)
ans =
12.3887
>>
cond(A2)
ans =
3.8131e+016
Na koniec przeprowadzilismy sprawdzenie błędów z pomocą dodatkowych dwóch macierzy b1 I b2.
Zadanie
6
Następne zadanie dotyczylo liczb zespolonych. Wprowadzenie liczb oraz odczytanie części urojonej I zespolonej reprezentuja pierwsze wywolania. Mielismy odczytac kąt stworzony przez dwie liczby zespolone na plaszyznie zespolonej. Wykorzystalismy do tego definicje funkcji trygonometrycznych oraz posłużylismy sie funkcja asind odczytująca argument w stopniach a nie w radianach. Zadanie mozna bylo wykonac równiez przy pomocy twierdzenia Pitagorasa.
>>
x=4 + 4i
>> complex(4,2)
>> real(x)
>>
imag(x)
>> modul=sqrt(real(x)^2+imag(x)^2)
>>
sinalfa=real(x)/modul
>> sinalfa=imag(x)/modul
>> kat=asind(imag(x)/modul)
Zadanie 7
Następne zadanie rowniez bylo latwe I polegalo na wprowadzeniu wielomianów zespolonych do programu I odczytania z nich pierwiastkow funkcją roots. Ciekawy jest sposob wprowadzania wielomianu z czescia zespolona na ktore potrzeba jeszcze jednego miejsca w nawiasie kwadratowym (matlab traktuje wielomiany jak macierze).
>>
W1=[1 -6 11 -6]
>> roots(W1)
>> W2=[1 0 0 0 0
-i]
>> roots(W2)
Wyniki:
>>
roots(W1)
ans =
3.0000
2.0000
1.0000
>>
roots(W2)
ans =
-0.9511 + 0.3090i
-0.5878 -
0.8090i
0.0000 + 1.0000i
0.5878 - 0.8090i
0.9511 +
0.3090i
Zadanie
8
Dwa ostatnie zadania dotyczyly rysowania w 2D I 3D. Na poczatku warto bylo uruchomic pomoc w postaci:
>> help plot
by zaznajomić sie z funkcją plot. Nastepnie wywolanie mialo postać gdzie definicje funkcji następowaly najpierw a pózniej zdefiniowane zostaly parametry wyswietlenia I zadeklarowane samo wyswietlenie:
>>
y1=exp(-x/10);
>> y2=exp(-x/10).*sin(3*x);
>>
y3=-y1;
>> x=0:0.01:10*pi;
>>
plot(x,y1,x,y2,x,y3);
Zadanie
9
Rysowanie 3D mialo sie odbyc na przykladzie funkcji a do mozliwosci narysowania użyto fuckcji meshgrid ktora przeksztalca wektory x i y w parę macierzy X i Y, które mogą być użyte do generowania trójwymiarowych wykresów :
>>
r=sqrt(x.^2+y.^2);
>> z=sin(r+eps)./(r+eps);
Funkcja
meshgrid miala postac a pozniejsza komenda stanowila wywolanie tejze
funkcji I zaprezentowanie wykresu.
>>[x,y]=meshgrid(-9:0.01:9);
>>
mesh(x,y,z);