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