Plik 2. Zajęcia 1
Transkrypt
Plik 2. Zajęcia 1
ZAJĘCIA
1
TECHNOLOGIE INFORMACYJNE
LGORYTMÓW
WORZENIA A
ASADY T
Z
ALGORYTMÓW
TWORZENIA
ZASADY
AB
ATL
BSŁUGI M
STAWY O
OD
IP
TL
OD
LAB
MAT
OBSŁUGI
DSTAWY
PO
ALGORYTMY
algorytm =z def. przepis prowadzący do rozwiązania zadania, problemu. W przepisie
tym podaje się opis czynności, które trzeba wykonać, oraz dane, dla których algorytm
będzie określony.
Rodzaje algorytmów:
a. Iteracyjne - rodzaj algorytmu i programu, w których wielokrotnie wykonuje się
pewne instrukcje, dopóki nie zostanie spełniony określony warunek,
b. Rekurencyjne - takie procedury, które w swojej definicji posiadają wywołanie
samej siebie,
c. Sekwencyjne - instrukcje wykonywane są w porządku, w jakim zostały wprowadzone.
Skrzynki START i STOP wskazują początek i koniec
każdego algorytmu. Ze skrzynki START wychodzi
tylko jedna droga, do skrzynki STOP wchodzi, co
najmniej jedno połączenie.
W skrzynce instrukcyjnej umieszcza się polecenia do
wykonania - instrukcje - podstawienie, obliczenie,
wprowadzenie wartości.
W skrzynce warunkowej umieszcza się warunek, który decyduje o wyborze dalszej drogi postępowania.
Ze skrzynki wychodzą dwa połączenia: TAK (wybierane, gdy warunek jest spełniony), NIE, (gdy warunek nie jest spełniony).
W skrzynce wejścia / wyjścia umieszcza się wprowadzane dane lub wyprowadzane wyniki. Ze skrzynki
wychodzi tylko jedno połączenie.
W algorytmie tym wykorzystujemy skrzynkę warunkową, ponieważ mamy do czynienia z sytuacją, gdy tok dalszego postępowania zależy od
dokonanego wyboru (dokładnie: zależy od pogody).
Piotr Misiura Przykłady algorytmów w fizyce
1
Schemat blokowy algorytmy sekwencyjnego
Schemat blokowy algorytmu warunkowego
Piotr Misiura Przykłady algorytmów w fizyce
2
Schemat blokowy algorytmu osiągnięcia zamierzonego celu
Schemat blokowy:
Piotr Misiura Przykłady algorytmów w fizyce
3
Zbuduj algorytm, za pomocą, którego można obliczyć drugą i trzecią potęgę danej
liczby.
BUDOWA ALGORYTMU:
START
- podaj liczbę a,
- oblicz kwadrat liczby a,
- oblicz sześcian liczby a,
- podaj wartość kwadratu
liczby a,
- podaj sześcian liczby a.
STOP
Piotr Misiura Przykłady algorytmów w fizyce
2. Zbuduj algorytm służący do rozwiązania równania typu ax + b = 0
BUDOWA ALGORYTMU:
START
- podaj wartość współczynnika a,
- podaj wartość współczynnika b,
- jeżeli a = 0, to sprawdź b,
- jeżeli b = 0, to napisz, że
jest to równanie tożsamościowe
(nieskończenie wiele rozwiązań),
- jeżeli b<>0, to napisz, że
jest to
równanie sprzeczne
(nie ma rozwiązań),
- jeżeli a<>0, to oblicz x
- napisz rozwiązanie równania x:=
STOP
Piotr Misiura Przykłady algorytmów w fizyce
4
BUDOWA ALGORYTMU:
START
1. Zmierz masę ciała stałego m=
2. Zmierz za pomocą menzurki objętość ciałaV=
3. Oblicz gęstość ciała
4. Podaj gęstość ciała (g/cm3) r:=
STOP
Piotr Misiura Przykłady algorytmów w fizyce
ZADANIA DO WYKONANIA
1.
2.
Zapisz algorytm rozwiązywania równania typu ax + b = c
Dane są długości trzech odcinków. Zbadaj, czy można zbudować z nich trójkąt.
3. Sprawdź, czy trójkąt o bokach a, b, c jest trójkątem prostokątnym.
4. Podaj algorytm obliczania pola figur płaskich.
5. Podaj algorytm obliczający pole powierzchni całkowitej i objętość brył.
6. Przedstaw za pomocą algorytmu sposób na obliczanie gęstości ciała stałego.
7. Zapisz za pomocą algorytmu sposób na rozpoznawanie rodzaju ruchu ciała ze
względu na zmianę prędkości. i zapisz powyższy algorytm za pomocą schematu blokowego.
8. Zapisz za pomocą algorytmu sposób obliczania ciężaru ciała na Ziemi, Księżycu, Marsie i Wenus.
9. Zapisz za pomocą algorytmu sposób obliczania przyspieszenia ciała, gdy
znamy przyrost prędkości ciała oraz czas, w którym ten przyrost nastąpił.
10. Zapisz algorytm obliczania drogi w ruchu:
a) jednostajnym po linii prostej,
b) jednostajnym po okręgu,
c) jednostajnie przyspieszonym.
11. Zapisz za pomocą algorytmu sposób obliczania przyspieszenia ciała, gdy
znamy wartość siły wypadkowej działającej na ciało oraz masę tego ciała. (II
zasada dynamiki).
12. Zapisz algorytm obliczania pracy, mocy, energii potencjalnej i energii kinetycznej ciała.
Przygotowano na podstawie: Piotr Misiura Przykłady algorytmów w fizyce
5
PODSTAWY OBSŁUGI PROGRAMU MATLAB
Uwagi:
• Znak (=) jest oznaczeniem przypisania, a nie jest znakiem równości. Program ma, więc cechy sekwencyjności instrukcji (przypisanie innego wyrażenia tej samej zmiennej zastępuje przypisanie poprzednie).
• Średnik (;) na końcu wyrażenia oznacza, że wynik nie będzie wyświetlany
na ekranie, ale polecenie jest wykonane. Po średniku w tej samej linii można umieszczać następne instrukcje.
• Kontynuacja instrukcji w następnej linii zachodzi, jeżeli dana linia instrukcji jest zakończona wielokropkiem (...).
• Komentarz umieszcza się po znaku procentu (%) w osobnej linii lub za instrukcją.
• Litery duże i małe są standardowo rozróżniane w nazwach zmiennych, np.
Alpha i alpha to dwie różne zmienne. Rozróżnianie dużych i małych liter
można przełączać stosując polecenia:
» casesen off -
wstrzymanie rozróżniania,
» casesen on -
wznowienie rozróżniania,
»casesen -
przełączanie statusu
Reedycji tekstu w linii dokonuje się za pomocą klawiszy strzałek oraz klawiszy
specjalnych:
↑, Ctrl-P -
przywołanie poprzedniej linii,
↑, Ctrl-N -
przywołanie następnej linii,
← , Ctrl-B -
przesunięcie w lewo,
→, Ctrl-F -
przesunięcie w prawo,
Ctrl-, ←, →
przesunięcie o jeden wyraz w lewo lub w prawo,
Home. Ctrl-A -
przesunięcie do początku linii,
End. Ctrl-E -
przesunięcie na koniec linii,
Esc -
czyszczenie linii,
Del. Ctrl-D -
usunięcie znaku nad kursorem,
6
Backspace -
usunięcie znaku na lewo od kursora,
Ctrl-K -
zmazanie do końca linii od pozycji kursora.
Grupę wartości specjalnych, do których należy ans stanowią:
eps -
dystans pomiędzy dwiema kolejnymi liczbami zmiennoprzecinkowymi; dla komputerów osobistych i stacji roboczych wynosi w przybliżeniu eps=2,22.10-16. Tej zmiennej może być
przypisana przez użytkownika inna wartość, włączając zero.
pi -
π = 3,1415926…
inf -
∞ (wartość nieskończona),
NaN -
wartość nieokreślona (ang. Not a Number) pojawiająca się np.
w wyniku dzielenia przez zero,
date -
bieżąca data podana tekstowo.
clock -
bieżąca data i czas podane cyfrowo,
flops -
licznik operacji zmiennopozycyjnych (pojawia się na końcu
obliczeń), podanie tej komendy powoduje wyświetlenie liczby
tych operacji, co pozwala zorientować się o jakości algorytmu
numerycznego (przed uruchomieniem algorytmu należy jednak
wyzerować licznik: » flops(0)),
nargin -
liczba argumentów wejściowych funkcji (używa się jej zwykle
w plikach funkcyjnych w instrukcjach warunkowych, głównie
w celu stworzenia molliwości podawania nie wszystkich argumentów wejściowych funkcji - argumenty opcjonalne).
nargout -
liczba argumentów wyjściowych funkcji (używana w instrukcjach warunkowych wewnątrz plików funkcyjnych głównie w
celu stworzenia możliwości zwracania przez funkcję nie
wszystkich wartości
Elementy macierzy wprowadza się wierszami oddzielonymi średnikami pomiędzy
dwoma nawiasami kwadratowymi []. Zamiast średnika na końcu wiersza można
użyć klawisza <Enter>, który w tym przypadku działa jako separator, gdyż kon7
strukcja pełnego wyrażenia nie jest zakończona (zakończeniem jest nawias] ).
Elementy w wierszu można oddzielać spacją lub przecinkiem.
» A = [10 sin(alpha) cos(alpha)
1 20 4; 4, 6, 30]
<Enter>
<Enter>
A=
10.0000 0.8660 0.5000 1.0000 20.0000 4.0000 4.0000 6.0000 30.0000
Zdefiniowano macierz B i pomnożono ją przez poprzednio zdefiniowaną macierz
A , otrzymując macierz C. Liczba kolumn macierzy B jest równa liczbie wierszy
macierzy A.
» B = [2 4 6];
% Wektor wierszowy
» C = B*A
C=
48.0000 117.7321 197.0000
Wykonanie mnożenia odwrotnego daje komunikat o błędzie:
» A*B
Error using = * Inner matrix dimensions must agree.
Na macierzach można wykonywać różne operacje, np. wyznaczenie diagonalnej z
macierzy A:
» diag(A)
ans =
10 20 30
Podczas sesji można zawsze przywołać rozbudowane instrukcje pomocy
oferowane przez MATLAB. Można wywołać pomoc ogólną w postaci menu wyboru poleceniem:
» help
albo zażądać pomocy odnoszącej się do konkretnej instrukcji, funkcji lub komendy podając jej nazwę
» help nazwa .
Przy zrozumieniu działania niektórych instrukcji może być pomocne wywołanie
» demo
8
Użyteczna jest możliwość wyświetlania informacji co jeden ekran
» more on - włączenie,
» more off - wyłączenie.
Instrukcją tą można poprzedzić help dla zbyt "długich" informacji.
Wstrzymanie pracy MATLAB-a na n sekund może być dokonane instrukcją:
» pause(n)
lub na czas nieokreślony, aż do naciśnięcia dowolnego klawisza, podając:
» pause
Liczby zespolone
Użycie liczb zespolonych nie wymaga deklaracji typu zmiennych, a wprowadza
się je według wzorca:
» z = a + b*i
lub
» z = a + b*j
gdzie i oraz j oznaczają standardowo predefiniowaną w programie jednostkę
urojoną. Jeżeli litery te zostaną przyporządkowane innym zmiennym, to nową
jednostkę urojoną można zdefiniować jako:
» ii = sqrt(-1)
Do wykonywania operacji na liczbach zespolonych służą funkcje standardowe
podane poniżej dla liczby zespolonej oznaczonej przez z :
» real (z) - część rzeczywista liczby z,
» imag (z) - część urojona,
» conj (z) - liczba zespolona sprzężona do z,
» angle(z) - argument liczby zespolonej,
» abs (z) - moduł liczby zespolonej.
W poniższj sesji podano kilka przykładów użycia liczb zespolonych.
» a = 1 + 6*i
a=
1.0000+6.0000i
9
» cos(a)
ans =
1.0899e+002-1.6974e+002i
» b = 10 - 2*j
b=
10.0000-2.0000*j
» c = a*b
C=
22.0000+58.0000i
» real(c)
ans =
22
» angle(c)
ans =
1.20833
Łańcuchy tekstowe
W MATLAB-ie możliwe są operacje na zmiennych będących łańcuchami tekstowymi (ang. string). Łańcuch tekstu umieszcza się pomiędzy dwoma apostrofami,
np:
» a = 'napis danej tekstowej'
Format wyświetlanych liczb
Instrukcja format określa sposób wyświetlania wyników.
format short
4 miejsca dziesiętne (liczba stałopozycyjna) 3.1416
format long
14 miejsc, reprezentacja stałopozycyjna 3.14159265358979
format short e
4 miejsca, reprezentacja zmiennopozycyjna 3.1416e+00
format long e
15 miejsc, reprezentacja zmiennopozycyjna 3.
141592653589793e+ 00
format hex
reprezentacja heksadecymalna 400921fb54442d18
10
format bank
format finansowy (USA) 3.14
format compact
zwarty zapis z pominięciem pustych linii (dla dużych macierzy)
format loose
wprowadzanie pustych linii przy wyświetlaniu
format +
wyświetla +, - i spacje dla dodatnich, ujemnych i zerowych
elementów
Standardowo MATlAB rozpoczyna pracę z formatem short.
Współpraca z systemem operacyjnym
W MATLAB-ie dostępne są elementarne komendy operacji na plikach dyskowych:
path -
wyświetla ścieżki dostępu do katalogów MATLAB-a,
dir -
wyświetlanie zawartości bieżącego katalogu,
pwd -
wyświetla nazwę bieżącego katalogu (od wersji MATlAB 4.1),
type -
wyświetlanie zawartości pliku,
delete -
usuwanie pliku,
cd -
zmiana bieżącego katalogu, do którego MATLAB zapisuje.
Dla większości komend należy określić ścieżkę dostępu. Przy instrukcji ty-
pe należy podać rozszerzenie pliku, w przeciwnym razie MATLAB przyjmie domyślnie rozszerzenie .m.
Zapisywanie przestrzeni roboczej w pliku dyskowym (zapisywanie
zmiennych) - diary, save
Zapisania danych oraz całej sesji z MATLAB-em można dokonać na kilka sposobów.
Przy niezbyt dużych macierzach występujących w trakcie sesji i niezbyt dużej ilości danych całą sesję wraz z pojawiającymi się komunikatami można zapisać poleceniem diary w pliku ASCII:
» diary filename inicjacja zapisu w pliku filename.
Cała sesja zostanie zapisana po komendzie wyjścia
» quit
11
Jeśli plik filename istnieje, to następny zapis zostanie dodany do poprzedniego.
Oprócz powyższej stosuje się komendy:
» diary off
zawieszenie (przerwanie) statusu zapisywania do określonego
pliku,
» diary on
wznowienie zapisywania do pliku [dename lub do standardowego pliku o nazwie diory,
» diary
zapisywanie do pliku dyskowego o standardowej nazwie diary
lub przełączenie statusu zapisu z on na off lub odwrotnie.
Wartości wybranych zmiennych lub wszystkie można zapisać w pliku dyskowym poleceniem save w postaci:
» save
» save filename
» save filename zmienn1 zmienna2 ...
W pierwszym przypadku zapisywane są wszystkie zmienne (bez komentarza tak jak w diary) w binarnym pliku dyskowym o standardowej nazwie mat lab.
mat (rozszerzenie. mat). W drugim przypadku zapis jest do pliku binarnego filename.mat, natomiast w przypadku trzecim do tego zbioru są zapisywane tylko
wybrane zmienne.
Zapisu w formacie tekstowym dokonuje się, podając opcje -ascii w poleceniu
save:
» save filename zmienna1 zmienna2 -ascii
zapis z pojedynczą precyzją (8
cyfr)
» save filename zmienna1 zmienna2 -ascii
-double podwójna precyzja (16
cyfr)
» save filename zmienna1 zmienna2 -ascii -tabs
oddzielenie kolumn tabulatora-
mi
Odtwarzanie zmiennych i przestrzeni roboczej - load
12
Odtworzenie pliku binarnego filename.mat, zapisanego poleceniem save, dokonywane jest poleceniem:
» load filename
Polecenie to można również stosować do wprowadzania plików tekstowych
ASCII pod warunkiem, że plik zawiera przynajmniej jedną tablicę prostokątną lub
kwadratową. Można wczytać do przestrzeni roboczej MATLAB-a dane z pliku,
umieszczone w kolumnach oddzielonych spacjami. Mogą to być wyniki pomiaru
lub wyniki obliczeń z innego programu zapisane np. w pliku wynik.dat.
Wydanie polecenia
» load wynik.dat
spowoduje utworzenie w MATLAB-ie zmiennej o nazwie wynik (bez rozszerzenia). Przykładowo, jeżeli w pliku ASCII wynik.dat mamy ciąg liczb
1
11
21
2
12
22
3
13
23
4
14
24
5
15
25
to po wczytaniu tego pliku utworzona zostanie zmienna wynik będąca macierzą o
pięciu wierszach i trzech kolumnach. Dalej, ta zmienna może być poddana działaniom MATlAB-a.
Informacje o przestrzeni roboczej - who, exist, what, which
Kolejne polecenia wydawane w trakcie zapisywania M-pliku skryptowego zapełniają, początkowo pustą, przestrzeń roboczą poszczególnymi zmiennymi.
Listę zmiennych mozna wyprowadzić jednym z poleceń:
» who
» whos
» who global
» whos global
13
Pierwsze polecenie (who) wyświetla listę zmiennych zainstalowanych bieżąco w
pamięci operacyjnej. Whos listuje bieżące zmienne, ich wymiary i wszystkie niezerowe części urojone. Te instrukcje z parametrem global listują wszystkie zmienne z globalnej przestrzeni pracy. Oprócz tego wyświetlana jest informacja o ilości
dostępnej pamięci operacyjnej.
Podobne działanie ma polecenie:
» exist
wyświetla informację czy istnieje zmienna lub plik o podanej
nazwie:
e=exist('nazwa').
Poniższe polecenia dotyczą zawartości katalogów:
» what
podaje informację o wszystkich M-plikach maj dujących się w
bieżącym katalogu dyskowym.
» what dirname
podaje informację o wyszczególnionym katalogu dimame
określonym w ścieżce dostępu MA TUB-a.
Informację o konkretnym pliku funkcyjnym o nazwie funname wraz z podaniem
ścieżki dostępu (funkcja MATlAB-a lub SIMULINK-a) i typu (M-plik, Mex-plik,
wbudowana funkcja) otrzymuje się po wydaniu polecenia
»which funname
Czyszczenie przestrzeni roboczej, macierze puste - clear,
Całą przestrzeń roboczą można wyczyścić lub usunąć konkretne zmienne za pomocą poleceń:
» clear
» clear zmienna1 zmienna2
Chcąc wyzerować zmienną (macierz łącznie z liczbą wierszy i kolumn), można
zdefiniować ją jako tzw. macierz pustą
»A = []
Informacja o wymiarach macierzy - size
14
Znajomość wymiarów macierzy (liczba wierszy m i liczba kolumn n) jest często
niezbędna, gdyż można odwołać się do tych wartości przy budowaniu innych macierzy związanych wymiarami z daną.
Dla pewnej macierzy A wydanie polecenia
» d = size(A)
powoduje utworzenie wektora wierszowego o dwóch wartościach d = [ m, n ], po
czym moma wyświetlić
»d
otrzymując w odpowiedzi dwie konkretne liczby określające liczbę wierszy i kolumn.
Instrukcję tę można wydać również inaczej
» [m, n] = size(A)
po czym zażądać wyświetlenia:
» m lub
»n
Liczby wierszy i kolumn można osiągnąć również bezpośrednio
» m=size(A,1)
» n = size(A,2)
ZADANIA DO WYKONANIA 2
1. Oblicz ułamek π/3, a następnie cosinus z π/3
2. Zdefiniuj macierz 4x5 i wyznacz jej diagonalną
3. Przemnóż dwie dowolne macierze przez siebie jakie warunek muszą spełniać?
4. Jaką funkcję spełnia znak %.
5. Utwórz wektor o wartości początkowej 2, końcowej 38 ze skokiem 4.
6. Jaki jest ustawiony format wyświetlania liczb.
7. Przedstaw liczbę 2,5 w rożnej postaci używając funkcji format.
8. Wyznacz wartość sumy:
1+
1 1 1
− +
2 3 8
15
9. Proszę podać przykład użycia średnika. Jaką pełni funkcję na końcu wiersza?
10. Proszę zapisać poniższe wyrażenia w notacji MATLAB-a:
a.
U cb
a
= 0
w0
Vc
V
T
+ AT ⋅ c
T
w0
a V
+ 1 c
w1 V
w1
a
+ 2
w2
Vc
V
w2
a V
+ ∑ Vk c − 1
k =4 k + 1 V
Kv
k +1
+
1+1.25⋅ε
2 + 0.25⋅ε
2.23
Vc
3.23 + 0.25 ⋅ ε Vc
⋅
⋅
−
+
⋅
2 + 0.25 ⋅ ε V
1 + 1.25 ⋅ ε V
1 + 0.25 ⋅ ε Vc
+
⋅
3 − 0.75 ⋅ ε V
3(1−⋅ε / 4 )
b.
Z0 (VHr ) − Zc
∂Z0 V − Zc − 1 ∂E1
RTc2 ∂Vr
∂Vr Hr
2
1 ∂ 2 E1
∂ Z0
∂V 2 VHr − RT 2 ∂V 2
c
r 1
r
a0
1
1
1
w0
w1
w2
=
× a1
1
w0 ( 1 + w0 ) w1( 1 + w1 ) w2 ( 1 + w2 ) a2
c.
m pa
Π*
1
Π * ⋅ BL* ⋅ (1 − α )
=
⋅
−
(BL* + Π * )
mha (BL* + Π * ⋅ (1 − BL* )) 1 − α ⋅ Π *
d.
e.
α
1 −
k −1
B
α
C
f e (mvk ) = mvk ⋅
α B
1 − β ⋅ C
BC
16