Wstępne zapoznanie się z octavem

Transkrypt

Wstępne zapoznanie się z octavem
Rozdziaª 2
Wst¦pne zapoznanie si¦ z octavem
W przypadku przeznaczenia dwóch laboratoriów scenariusz ka»dych zaj¦¢ polega na rozwi¡zaniu mo»liwie du»ej ilo±ci kolejnych zada« z tego rozdziaªu.
W przypadku jednych zaj¦¢ nale»y dokona¢ wyboru rozwi¡zuj¡c tylko kilkanajwa»niejszych pozycji z listy zada«.
Zadania w tym rozdziale ilustruj¡ podstawowe operacje, struktury i wªasno±ci octave'a. Przedstawimy w zadaniach octave jako kalkulator naukowy.
Omówimy te» operator dwukropek sªu»¡cy np. tworzeniu indeksów. Przetestujemy, jak tworzy¢ macierze, wektory; jak zapisywa¢ zmienne do plików
(czyta¢ z plików) w formatach: tekstowym i binarnym. Sprawdzimy tworzenie macierzy z podmacierzy, wycinanie podmacierzy i inne podstawowe
operacje na macierzach - mno»enie, dodawanie, transponowanie, funkcje matematyczne od macierzy, normy wektorów/macierzy.
Zadania obejmuj¡ równie» tworzenie wykresów funkcji matematycznych
przy pomocy funkcji octave'a plot(). Sprawdzimy te» tworzenie i u»ywanie
skryptów i funkcji (m-pliki) w octavie, oraz podstawowe instrukcje warunkowe i p¦tle:
• if else endif;
• switch case endswitch
• while( ) do endwhile;
• do .. until( );
• for .. endfor.
Zadania obejm¡ te» wska¹niki do funkcji (function handle) i operator @ zwracaj¡cy wska¹nik do funkcji.
5
Zadanie 1 Octave jako kalkulator. Otwórz sesj¦ octave'a. Zapoznaj si¦
z pomoc¡ do funkcji sqrt() oraz sin(). Policz w octave'ie, ile
wynosi pierwiastek z 5 oraz policz warto±¢ funkcji sin na tym
pierwiastku.
Zadanie 2 Operacje macierzowe. Operator dwukropek.
• Utwórz wektor z liczbami od 1 do 20 oraz wektor ze wszystkimi liczbami parzystymi od −6 do 4.
• Utwórz dowolne macierze 3x4 A i 3x5 B, a nast¦pnie macierz
•
•
•
•
•
•
•
3x8 C, której pierwsze 3 kolumny to A, a kolejne to B.
Z macierzy C 'wytnij' podmacierz D skªadaj¡c¡ si¦ z 1 gªównego minora tzn. 3x3 od C(1,1) do C(3,3).
Zamie« kolejno±¢ kolumn D.
Zamie« kolejno±¢ wierszy D.
Wytnij dolnotrójk¡tn¡, a potem górnotrójk¡tn¡ cz¦±¢ macierzy D
Wstaw D z powrotem do C jako gªówny minor.
Policz sin(D) = (sin(Dij ) od D.
Zapisz D do pliku (binarnego i ASCII) - zamie« element
D(1,1) na -100 i wczytaj now¡ macierz do octave'a.
Zadanie 3 Funkcje matematyczne od macierzy. Normy macierzy i
wektorów
Policz dyskretn¡ norm¦ maksimum od (sin(x))2 na [0, 1] (wektorowoczyli bez u»ycia p¦tli).
Zadanie 4 Wykresy funkcji matematycznych.
• Narysuj wykres funkcji sin(x) na odcinku [0, 4].
• Narysuj wykres funkcji sin(x) na odcinku [0, 4] - wykres po-
winien by¢ podpisany, narysowany za pomoc¡ gwiazdek w
kolorze czerwonym.
• Narysuj w jednym oknie podpisane wykresy funkcji sin(x) i
log(x) na odcinku [1, 6] podpisane odpowiednio.
Zadanie 5 Znajd¹ przybli»one maksimum i minimum funkcji
f (x) = x ∗ (3 + 2 ∗ cos(x))
6
na odcinku [−1, 5] bez u»ycia p¦tli, oraz przybli»enia punktów
ekstremalnych.
Powtórz to zadanie dla jakiego± wielomianu stopnia dwa i trzy
np. x3 + x2 − x − 4.
Zadanie 6 Funkcje w octave'ie, m-pliki, czyli tzw. pliki funkcyjne.
Utwórz funkcj¦ w m-pliku obliczaj¡c¡ dla zadanego x warto±¢
funkcji
f (x) = (sin(x))2 .
Zadanie 7 Zmienne globalne
Utwórz m-plik z funkcj¡ octave'a obliczaj¡c¡ warto±¢ funkcji matematycznej z parametrem: sin(a ∗ x) - parametr przeka» jako
zmienn¡ globaln¡.
Zadanie 8 Implementacja wektorowa funkcji w octave'ie.
Utwórz m-plik z funkcj¡ obliczaj¡cy warto±¢ funkcji f (x) = 1 +
(cos(x))2 dla argumentu b¦d¡cego macierz¡, tzn. je±li X = (xi,j )i,j
macierz wymiaru M × N , to funkcja powinna zwróci¢ Y macierz
wymiaru M × N tak¡, »e
Y = (yi,j )i,j ,
yi,j = f (xi,j ).
Narysuj wykres f na odcinku [−1, 5] z wykorzystaniem tylko jednego wywoªania tak zaimplementowanej funkcji octave'a.
Zadanie 9 Funkcje anonimowe.
Utwórz funkcj¦ uchwyt do funkcji anonimowej, która dla danego
argumentu x zwraca warto±¢ równ¡ (sin(x))2 .
Zadanie 10 P¦tle, instrukcje warunkowe, instrukcja printf ().
• Zapoznaj si¦ z pomoc¡ octave'a do p¦tli while, p¦tli for,
instrukcji warunkowej if oraz funkcji drukuj¡cej napisy na
ekranie printf().
• Przy pomocy p¦tli
for ( k = . . . )
endfor
7
while ( warunek stopu )
endwhile
oblicz sum¦
SN = 1 + ... + N
dla N = 100.
• U»yj instrukcji warunkowej
if ()
endif
by sprawdzi¢, czy otrzymane SN zostaªo obliczone poprawnie, tzn. czy otrzymali±my 0.5 ∗ N ∗ (N + 1)
• wyprowad¹ na ekran komunikat u»ywaj¡c
printf ( )
8