Metody numeryczne Laboratorium 1 Będziemy używać narzędzia

Transkrypt

Metody numeryczne Laboratorium 1 Będziemy używać narzędzia
Metody numeryczne
Laboratorium 1
Będziemy używać narzędzia GNU Octave z nakładką graficzną QtOctave. Jest to darmowy
odpowiednik programu Matlab. Większość programów napisanych dla jednego programu działa też
w drugim.
Dokumentacja GNU Octave: HTML i PDF
Okno programu QtOctave - Terminal
Z prawej strony na dole mamy linię poleceń, gdzie wpisujemy wyrażenia, np. (3+5)*12.
Wyniki wykonywanych poleceń widać w terminalu, prawa strona okna programu.
Z lewej strony mamy trzy panele:
• Lista zmiennych – wyświetla informację o zmiennych w programie
• Lista poleceń – lista ostatnio wpisanych poleceń
• Nawigator – lista plików i katalogów, można zapisywać i wczytywać pliki programów czyli
skrypty (*.m), wykresy, wyznaczone dane, ...
QtOctave - Edytor
Oprócz wpisywana poleceń w bezpośrednio w linii poleceń, można je również wpisywać w pliku,
np. test.m i następnie uruchamiać jako program. Służy do tego Edytor, ikona
.
Większość poleceń wprowadzać będziemy tekstowo, z linii pleceń czy w programie. Niektóre
polecenia można wprowadzić z menu, np.:
Warto pewnie skorzystać z rysowania wykresów i ich eksportu
do plików graficznych – dużo łatwiej wybrać dostępne opcje niż
nauczyć się składni odpowiednich komend na pamięć.
Zapoznanie się ze środowiskiem.
1. Pomoc i czyszczenie terminala
help – wyświetla pomoc do podanego polecenia, np.:
help who – wyświetla pomoc o poleceniu who
clc – czyści ekran terminala
Ćwiczenia
1.1. Wyświetlić informacje o funkcjach sqrt i nthroot. Do czego one służą?
1.2. Wyczyścić ekran.
Stałe - dokumentacja
e – wartość stałej e
pi – wartość liczby pi
Inf – nieskończoność
NaN – oznacznie Not a Number (to nie liczba)
I – liczba urojona, można też pisać małe i
eps – precyzja maszyny
realmax – największa możliwa liczba w zapisie zmiennopozycyjnym
realmin – najmniejsza możliwa …
2. Proste operacje matematyczne
2+4, 4-5, 3*7, 12/8
2^3 albo 2**3
2+3*4
(2+3)*4 – ważne jest stosowanie nawiasów
4^0.5
4^1/2 albo 4^(1/2) – ważna jest kolejność działań, bo chociaż wynik ten sam to liczy się inaczej!!
27^1/3
27^(1/3)
Porównanie wartości: 12 > 8, 9 <= 8, 2 == 2, 4 != 5
Ćwiczenia
√
3
5
1
2
Jak jest różnica jeśli polecenie zakończymy średnikiem?
2.1. Obliczyć
32 +0.0625∗8+
3. Funkcje matematyczne, potęgi i logarytmy – dokumentacja,
funkcje trygonometryczne – dokumentacja
sqrt(4) – pierwiastek kwadratowy
cbrt(27) – pierwiastek sześcienny (trzeciego stopnia), to samo co 27^(1/3) albo 27**(1/3)
nthroot(4,2) – pierwiastek n-tego stopnia
nthroot(27,3)
nthroot(64,6)
log(e^3) – log naturalny, o podstawie e
log10(1000) – log o podstawie 10
log2(128) – log o podstawie 2
sin(pi)
sin(pi/2)
cos, tan, cot, sec, csc
Inne funkcje... cyklometryczne, hiperboliczne, …
Ćwiczenia
3.1. Wyliczyć wartość wyrażeń:
a)
√
3
5
32 +sin (
b) 1+cos ( 1
2
pi
)
2
5
⋅pi +0.5236
6
√
⋅log2(256)
2396+
145
29
)−sin (
5
⋅pi)
14
4. Zmienne
Zmienną może być dowolny ciąg znaków składający się z liter, liczb i znaków podkreślenia.
Powinien zaczynać się od litery. Małe i duże litery są rozróżniane. Przykłady:
a=12;
A=[1 2 3; 4,7,9];
b2=sqrt(2);
inna_war=631.45;
minPerDay2=92.6;
_12name=3**4; % Też działa choć zaczyna się od znaku ”_”
c=a*5+b2;
Podane nazwy zmiennej, nie zakończonej średnikiem, wyświetli jej wartość., np. polecenie: A
wyświetli całą zawartość macierzy A.
Kilka poleceń związanych ze zmiennymi
Wyświetlanie listy zdeklarowanych zmiennych, ich rozmiarów oraz ich usuwanie
who
whos
% to samo co zawiera panel „Lista zmiennych”
size(A)
% rozmiar zmiennej/macierzy A
size(A,1)
% liczba wierszy macierzy A
size(A,2)
% liczba kolumn macierzy A
length(A) % największy z rozmiarów
clear _12name;
Ćwiczenia
4.1. Przyprostokątne trójkąta prostokątnego wynoszą: a=9, b=12. Obliczyć przeciwprostokątną c
korzystając ze zmiennych a i b.
4.2. Jeśli a i b będą długościami podstaw trapezu, a odległość między podstawami będzie siódmą
częścią sumy ich długości, to jakie będzie jego pole? Pole zapisać w zmiennej Pt.
4.3. W zmiennej Pk zapisać pole koła, którego średnica równa się sumie a i b.
5. Wektory i macierze
Zmienne mogą być wektorami, macierzami albo n-wymiarowymi macierzami.
Wektor będący wierszem definiujemy następująco:
x=[1 2 3] % liczby oddzielamy spacją albo przecinkiem
Wektor kolumnowy definiujemy:
x=[1;2;3] % liczby oddzielone średnikiem
Używając powyższych dwóch sposobów można łatwo utworzyć różne macierze np. 2x4, 3x3, 4x2:
A=[1 2 3 4; 3 -8 0 5]
B=[1,0,5; -2,3,8; a,b,c]
% można używać wcześniejszych zmiennych
C=[1 2; 3 4; pi 2*pi; 0 e] % można używać stałych
Tworząc wektory czy macierze można używać operatora zakresu (z podaniem kroku albo bez jego
podawania, domyślnie krok co 1). Operator zakresu to ”:” (dwukropek).
V1 = 1:6
% wektor 6-elementowy, domyślny krok 1
v2 = 1:0.3:6 % wektor 17-elementowy, krok co 0.3
v3 = a:-3:-a % jeśli a=9 to wektor 7-elementowy od 9 do -9 z krokiem -3
% macierz 3x3, środkowy wiersz podany jako zakres
M1=[1 2 3; 0:0.45:1; 4 5 6]
% macierz 3x4 z trzech zakresów, trzeci z krokiem ujemnym
M2=[1:4; 2:5; 0:-1:-3]
% macierz 3x5, różne kroki ale taka sama liczba elementów
M3=[-pi:pi/2:pi; 0:2:8; -5:-2:-13]
Do tworzenia macierzy można używać specjalnych funkcji:
M4 = rand(4,2) % macierz 4x2 wypełniona liczbami losowymi
M5 = ones(5)
% macierz 5x5 wypełniona jedynkami
M6 = zeros(2,7) % macierz 2x7 zawierająca zera
Operacje na macierzach
Na wektorach i macierzach można można operować jak na wartościach skalarnych, np.:
v3.^2
% poniesienie każdego elem. wektora v3 do kwadratu (.^)
v3+rand(1) % dodanie tej samej losowej wartości do elem. V3
v3+rand(1,7) % dodanie innej losowej wartości do każdego elem. v3
M4*4
% 4-krotne zwiększenie wartości elementów macierzy
2*(M1+8)/pi % zwiększenie elementów o 8, pomnożenie, podzielenie
Operacje macierzowe
M2'
% transponowanie macierzy (apostrof)
M1*M3
% mnożenie macierzy, muszą być odpowiednich rozmiarów
M1.*B
% mnożenie elementów macierzy między sobą,
% jest to co innego niż mnożenie macierzy
times(M1,B) % inny sposób na mnożenie elem. macierzy między sobą
inv(B)
% wyznaczenie macierzy odwrotnej
inv(B)*B
% sprawdzenie czy otrzymamy macierz jednostkową
det(m)
% wyznacznik macierzy m
Dostęp do wybranych elementów macierzy, indeksowanie elementów
Do poszczególnych elementów macierzy, albo ich zakresów można się odwoływać podając numer
wiersza lub kolumny albo ich zakresy. Numery indeksów zaczynają się od 1. Przykłady:
M3(2,3) % podajemy indeksy elementów w nawiasie,
% tutaj jest drugi wiersz, trzecia kolumna
M2(1:2,2:end) % zakresy elementów,
% tutaj wiersze od 1 do 2, kolumny od 2 do końca
M4(:,:) % cała macierz, wszystkie wiersze i wszystkie kolumny
M2(2,:) % drugi wiersz, wszystkie kolumny
Można w ten sposób wybierać elementy z jednej macierzy i przypisywać je do innych. np.:
% macierz M2 w 3 wierszu ma 3 elementy z 1 wiersza macierzy M1
M2=[-pi:pi/2:pi; 0:2:8; 1 2 M1(1,:)]
W ten sposób można też ustawiać wartości w całych zakresach w macierzy, np.:
% ustawia wartość 0 w 2 i 3 wierszu we wszystkich kolumnach
M2(2:3,:)=0
Ćwiczenia
5.1. Utworzyć dwie macierze:
1 4
1
2
3
oraz B= 0 3
A=
4 5 0
2 2
5.2. Utworzyć macierze C i D o wartościach: C=A*B, D=B*A.
Jakie są ich rozmiary? Jak sprawdzić ich rozmiary przynajmniej na dwa sposoby?
[
]
[ ]
5.3. Zwiększyć wartości elementów macierzy D dwukrotnie.
5.4. Utworzyć macierz E o rozmiarze 3x4 zawierającą same zera. Wartości pierwszych trzech
kolumn macierzy E przypisać z macierzy D.
5.5. Utworzyć macierz F, której wartości będą iloczynami poszczególnych wartości transponowanej
macierzy A i macierzy B (nie mnożymy macierzy ale ich poszczególne wartości).
Jakie rozmiary będzie miała macierz F?
Wektory
5.6. Utworzyć wektor u zawierający wartości: u=[0 pi/2 pi 3/2pi 2pi]
5.7. Utworzyć wektor v zawierający wartości cos(u). Narysować na osi współrzędnych punkty
złożone z par (ui,vi) dla utworzonych wektorów. Co zdaje się przypominać wykres?
Jak narysować bardziej wierny wykres funkcji cosinus?
5.8. Utworzyć wektor x zawierający wartości od 0 do 2pi z krokiem co 0.2. Odczytać rozmiar
wektora.
5.9. Utworzyć wektor y zawierający elementy równe sin(x). Narysować wykres funkcji sin(x).
5.10. Utworzyć macierz BIG będącą wynikiem pomnożenia transponowanego wektora y przez jego
samego. Wynik powinien być macierzą kwadratową. Można narysować: surf(BIG)
6. Rysowanie wykresów
Wykresy rysujemy za pomocą funkcji plot() - dokumentacja
Przykłady:
x1=[0 1 2 3 4 5 6];
y1=[0 1 2 3 4 5 9];
x2=0:0.1:2*pi;
y2=sin(x2);
plot(x1,y1);
% linia bez zaznaczonych punktów, domyślnie
plot(x1,y1,'-'); % jw.
% czerwona linia (red) z kwadratowymi punktami (square)
plot(x1,x1.^3,'-sr');
% brak linii, okrągłe punkty („o”) w kolorze czarnym (black)
plot(x1,x1.^3,'ok');
% zielona linia (green) z trójkątnymi punktami („^”) z legendą: „y=x^3”
plot(x1,x1.^3,'-^g;y=x^3;');
Można rysować kilka wykresów jednocześnie, np.:
plot(x1,y1,x2,y2)
% dwa wykresy, domyślne kolory
plot(x1,y1,'-dr',x2,y2,'-*k') % dwa wykresy, różne kol. i oznaczenia pkt.
plot(x1,y1, x2,y2, x2,cos(x2), x1,x1/2) % aż cztery różne wykresy
Do testowania rysowania można użyć funkcji: sombrero() albo peaks().
Ćwiczenia
3
6.1. Narysować na jednym rysunku wykresy funkcji
argumentów [-1, 1].
2
y=x , y=x 2 , y=x , y=x
3
dla przedziału
6.2. Narysować koło składające się z dwóch wykresów funkcji. Środek koła może być w punkcie
(0,0). Obie funkcje narysować tym samym kolorem, punkty oznaczyć znakami +. Rysunek zapisać
do pliku: kolo.png.
6.3. Narysować koło w biegunowym układzie współrzędnych korzystając z menu:
Wykres > 2D > Biegunowy

Podobne dokumenty