laborka1

Transkrypt

laborka1
Laboratorium metod numerycznych
SCILAB 5.0.2
Laboratorium 1
Scilab jest darmowym programem do obliczeń numerycznych, o możliwościach zbliżonych do Matlab'a.
Licencja umożliwia zastosowanie programu do celów edukacyjnych, komercyjnych i domowych.
W ramach pierwszych zajęć student powinien zapoznać się z środowiskiem programu Scilab, pomocą
zaimplementowaną w środowisku oraz zastosowaniem podstawowych poleceń.
Program Scilab można pobrać z strony domowej projektu (www.scilab.org). Program jest dostępny dla
systemów Windows 2k/XP/Vista oraz Linux. Projekty obliczeniowe zapisane w Windows, można bez
problemów odczytać w systemie Linux.
Z menu głównego można zapisać lub wczytać projekty, wydrukować aktualny projekt, przeprowadzić
podstawowe operacje na tekście (kopiuj, wytnij i wklej), ustawić parametry pulpitu (kolor tła, czcionki, rodzaj i
rozmiar czcionki). Z pozostałych z dostępnych opcji na szczególną uwagę zasługuje polecenie konwersji
projektu z środowiska Matlab do Scilab. W ostatniej zakładce menu jest dostęp do pomocy Scilab'a, Scilab
Help. Warto również uruchomić Scilab Demonstrations, gdzie zgrupowane są przykłady możliwości
środowiska Scilab.
1. Podstawowe polecenia
a) Definiowanie zmiennych
Zmienne definiujemy poprzez podanie jej nazwy i przypisanie wartości (a=10), efekt w Scilab'ie
pokazano poniżej. Każde wprowadzane polecenie zatwierdza się Enter'em.
-->a=10
a =
10.
-->a=a+10
a =
20.
-->a
a =
20.
Zmienną z pamięci kasuje się poleceniem clear.
-->clear a
-->a
!--error 4
Undefined variable: a
W zadaniach związanych z elektrotechniką konieczne będzie stosowanie rachunku zespolonego.
--> a=10-10*%i
a =
10. - 10.i
-->real(a)
ans =
10.
-->imag(a)
ans =
- 10.
-->abs(a)
ans =
14.142136
Liczba zespolona „i” jest stałą. Pozostałe stałe zdefiniowane w środowisku to:
%pi – liczba PI
%e – liczba e
%t – prawda
%f – fałsz
%eps – podaje najmniejszą liczbę dodatnią możliwą do uzyskania na danej maszynie, która dodana do 1
powoduje uzyskanie liczby większej od jedynki.
b) Wektory i macierze
Wektory i macierze definiujemy analogicznie jak zmienne opisane powyżej. Elementy poziome przy
definiowaniu oddziela się przecinkiem, a rzędy średnikiem, elementy macierzy umieszczamy w nawiasie
kwadratowym..
-->a=[1,2,3,4,5,6]
a =
1. 2. 3. 4. 5. 6.
-->b=[1;2;3;4;5;6]
b =
1.
2.
3.
4.
5.
6.
-->c=[1,2,3;4,5,6;7,8,9]
c =
1. 2. 3.
4. 5. 6.
7. 8. 9.
Jeżeli definiowany wektor składa się z wielu elementów, dla wygody można „złamać” wiersz i
pozostałe elementy wpisać od nowego wiersza. Efekt ten uzyskuje się stosując dwukropek.
-->d=[1,2,3,..
-->4,5,6]
d =
1. 2. 3. 4. 5. 6.
W niektórych przypadkach może zaistnieć konieczność zdefiniowania np. Długiego wektora
zawierającego liczby w ciągu od 0 do 5 i każdy kolejny jest większy o 0.33. Wpisanie ręczne poszczególnych
elementów było by długotrwałe i nie trudno o pomyłkę.
-->e=[0:0.33:5]
e =
column 1 to 6
0. 0.33 0.66 0.99 1.32 1.65
column 7 to 12
1.98 2.31 2.64 2.97 3.3 3.63
column 13 to 16
3.96 4.29 4.62 4.95
Podobny efekt możemy uzyskać poleceniami linspace() i logspace(). Umożliwiają one równomierne
zapełnienie wybranego przedziału wybraną liczbą elementów.
-->linspace(0,10,6)
ans =
0. 2. 4. 6. 8. 10.
-->logspace(1,5,4)
ans =
10. 215.44347 4641.5888 100000.
W nawiasach pierwsza liczba odpowiada początkowi wektora, druga to koniec, a ostatnia to liczba
elementów. W przypadku skali logarytmicznej w nawiasach podaje się wykładniki potęgi.
W niektórych sytuacjach zachodzi konieczność odwołania się do wybranego elementu macierzy lub
wektora.
-->a(3)
ans =
3.
-->b(3)
ans =
3.
-->c(2,2)
ans =
5.
-->c(2,:)
ans =
4. 5. 6.
-->c(:,2)
ans =
2.
5.
8.
W Scilab'ie zdefiniowany jest symbol $ oznaczający ostatnią wartość ciągu. Za jego pomocą można
odwołać się do końcowych elementów wektora lub macierzy, nie znając nawet jest rozmiaru.
-->f=[1:6;2:7;3:8;4:9;5:10;6:11]
f =
1. 2. 3. 4. 5. 6.
2. 3. 4. 5. 6. 7.
3. 4. 5. 6. 7. 8.
4. 5. 6. 7. 8. 9.
5. 6. 7. 8. 9. 10.
6. 7. 8. 9. 10. 11.
-->f($-2:$,$-2:$)
ans =
7. 8. 9.
8. 9. 10.
9. 10. 11.
W Scilab'ie zdefiniowane są polecenia definiujące standardowe macierze jednostkową, zerową,
jedynkową, diagonalną i losową.
-->a=eye(4,4)
a =
1. 0. 0. 0.
0. 1. 0. 0.
0. 0. 1. 0.
0. 0. 0. 1.
-->a=zeros(3,2)
a =
0. 0.
0. 0.
0. 0.
-->a=ones(2,3)
a =
1. 1. 1.
1. 1. 1.
-->a=rand(3,4)
a =
0.2113249 0.3303271 0.8497452 0.0683740
0.7560439 0.6653811 0.6857310 0.5608486
0.0002211 0.6283918 0.8782165 0.6623569
c) Transponowanie macierzy
Dwie metody, pierwsza powoduje utworzenie macierzy transponowanej, poszczególne elementy są
zamieniane na liczby sprzężone, druga metoda tworzy macierz transponowaną.
-->a=[1+%i,1-%i;2+10*%i,2-10*%i]
a =
1. + i
1. - i
2. + 10.i 2. - 10.i
-->a'
ans =
1. - i 2. - 10.i
1. + i
2. + 10.i
-->a.'
ans =
1. + i
2. + 10.i
1. - i 2. - 10.i
d) Wyszukiwanie wartości maksymalnej i minimalnej w macierzy
-->a=rand(100,100)
-->max(a)
ans =
0.9999604
-->min(a)
ans =
0.0000004
2. Wykresy
Za rysowanie wykresów 2d w środowisku Scilab odpowiada polecenie plot2d. Podstawowa, minimalna
postać polecenia plot2d(y), generując wykres zbudowany z kolejnych wartości wektora y, na osi x umieszczane
są kolejne współrzędne wartości wektora y (0,1,2,3... n). Składnia ogólna polecenia jest następująca:
plot2d(x,y,<opcjonalne argumenty>), zapis argumentów jest następujący słowo kluczowe='wartość'. Przy
generowaniu wykresów przydatne są jeszcze dwa polecenia: subplot(m,n,p) – umożliwia dokonanie podziału
okna wyświetlającego wykresy na macierz podwykresów. Parametr m definiuje liczbę wierszy, n liczbę
kolumn, a p aktywuje pole macierzy podwykresów. Drugim parametrem jest polecenie generowania legendy:
legends.
3. Zadania
a) Zapoznać się z strukturą pomocy, wyszukać pomoc dla polecenia legends.
b) Zapoznać się z przykładami obliczeń dostępnych w programie.
c) Zdefiniować wektor t zawierający liczby rzeczywiste z zakresu od 0 do 10 co 0.01.
d) Zdefiniować macierz a w wymiarze 10 na 10 zawierające losowo wybrane liczby z zakresu 0 do 13.
e) Odszukać w pomocy informację o poleceniu Det(), obliczyć wyznacznik macierzy a.
f) Utworzyć macierze b o wymiarach 3 na 4, c o wymiarach 3 na 3, d o wymiarach 4 na 3 i wektor e o
długości 4 zawierające losowo wybrane elementy z przedziału 0 do 10.
g) Przeprowadzić próby podstawowych działań matematycznych na utworzonych macierzach i
wektorze (+, -, *, /, ^, przemienność działań, sin(x), cos(x), e^x, itp.)
h) Korzystając z pomocy zapoznać się z parametrami polecenia plot2d().
i) Na wspólnym wykresie zamieścić wykresy sin(t), cos(t), sin(t)^3+cos(t)^3, wykorzystać utworzony
wektor t
j) Na osobnych podwykresach utworzyć wykresy sin(t), cos(t), sin(t)^3+cos(t)^3, wykorzystać
utworzony wektor t
k) Utworzyć legendę do wykreślonych przebiegów
l) Zapoznać się z poleceniem plot3d(x,y,z) (w pomocy Scilab) i wykreślić wykres funkcji
f(x,y)=sin(x)*cos(y)