Wyświetlanie wyniku obliczeń
Tuż po uruchomieniu Octave wyświetla krótki tekst, tzw. zachętę (ang. prompt) do wpisania polecenia:
>>
W starszych wersjach programu (przed wersją 4.0.0) zachęta składa się z czterech elementów: nazwy programu (octave), znaku dwukropka, numeru polecenia (tu: 1) i znaku >:
octave:1>
Rozpocznijmy od prostego zadania: ile wynosi rozwinięcie dziesiętne ułamka 1/7? W tym celu po tekście zachęty wpisujemy wyrażenie 1/7 i przyciskamy <enter>
>> 1/7
Program odpowie następująco:
ans = 0.14286
Napis ans oznacza specjalną zmienną, w której przechowywana jest wartość ostatniego wyrażenia. Sprawdźmy to, obliczając 1/ans:
>> 1/ans ans = 7
Spróbujmy teraz obliczyć wartość 1/0.14286:
>> 1/0.14286 ans = 6.9999
Porównanie wyników obliczeń dwóch ostatnich wyrażeń musi budzić zaniepokojenie. Z jednej strony program informuje nas, że ans = 0.14286, z drugiej strony zaś twierdzi, że 1/ans oraz 1/0.14286 mają różne wartości. Gdzie tu logika?
Odpowiedź jest prosta – Octave wyświetla przybliżone wartości wyników obliczeń i wartości zmiennych. Domyślnie wyświetlane jest 5 cyfr znaczących wyniku. Jeżeli chcemy zwiększyć dokładność do 15 cyfr, co z grubsza odpowiada domyślnej dokładności obliczeń, powinniśmy wydać polecenie
>> format long
Jeśli teraz spróbujemy wyznaczyć wartość ilorazu 1/7, otrzymamy aż piętnaście poprawnych cyfr wyniku
>> 1/7 ans = 0.142857142857143 >> 1/ans ans = 7
Zazwyczaj dokładność sięgająca piętnastu cyfr znaczących jest niepotrzebna. Aby ponownie otrzymywać skrócone wartości obliczeń, wydajemy polecenie
>> format short
Operatory arytmetyczne
Octave umożliwia wykonywanie wszystkich podstawowych operacji matematycznych. Wykaz najważniejszych operatorów rozpoznawanych przez Octave znajduje się w Tabeli 1.
| Operacja | Operator | Przykłady |
|---|---|---|
| potęgowanie | ** lub ^ | 2**3, 2^3 |
| mnożenie | * | 2 * 3 |
| dzielenie | / lub \ | 1/7 lub 7\1 |
| dodawanie | + |
2 + 2 |
| odejmowanie | – |
3 – 2 |
Największą niespodziankę stanowi możliwość zapisu dzielenia w postaci y\x zamiast standardowego x/y. Jeżeli x i y są zwykłymi liczbami, wyrażenia x/y i y\x są sobie równoważne. Z tego powodu zapisu y\x używa się głównie w operacjach na macierzach, zwłaszcza przy rozwiązywaniu układów równań liniowych, gdyż w ogólnym przypadku mnożenie macierzy jest operacją nieprzemienną (tzn. dla macierzy x i y wyrażenie x*y rzadko kiedy równe jest y*x). Dla macierzy odróżnianie x/y od y\x jest bardzo ważne, ale póki nie wiemy, co to są macierze i jak się je mnoży, potraktujmy zapis y\x jako ciekawostkę.
Wśród powyższych operatorów największy priorytet ma potęgowanie, następnie mnożenie i dzielenie, następnie dodawanie i odejmowanie. Dlatego wyrażenie 2+2**3/4 interpretowane jest jak 2 + ((2**3)/4) a nie jak np. 2 + 2**0.75.
Stałe matematyczne
Octave rozpoznaje też kilka stałych matematycznych. Najważniejsze z nich przedstawia Tabela 2.
| Stała | Zapis w Octave | Znaczenie |
|---|---|---|
| π | pi | iloraz obwodu koła do jego średnicy |
| e | e | podstawa logarytmów naturalnych |
| i | i lub j | jednostka urojona |
Dokładne znaczenie dwóch ostatnich stałych zostanie omówione w dalszej części kursu. Teraz wystarczy zapamiętać, że e jest pewną liczbą,
>> e ans = 2.7183
natomiast i jest “magicznym obiektem”, który podniesiony do kwadratu daje -1:
>> i*i ans = -1
Jednostkę urojoną i wprowadzam w tym kursie bardzo szybko, gdyż może pojawić się jako wynik pewnych działań, które wg. kursu matematyki szkolnej są zabronione:
>> log(-1) ans = 0.00000 + 3.14159i >> sqrt(-1) ans = 0 + 1i
Jak widzimy, Octave potrafi obliczać logarytmy i pierwiastki kwadratowe z liczb ujemnych. O tym, jak to jest możliwe, dowiemy się w dalszej części kursu.
Funkcje matematyczne
W Octave można posługiwać się nie tylko sinusem i logarytmem, ale niemal wszystkimi funkcjami używanymi na kursach matematyki wyższej, m.in. sin, cos, exp, sqrt, log10 i wieloma, wieloma innymi. Oto kilka przykładów użycia Octave jako zaawansowanego kalkulatora naukowego:
>> pi^2 ans = 9.8696 >> log10(1000) ans = 3 >> log10(1e3) ans = 3 >> sin(cos(sin(cos(1)))) ans = 0.76471 >> factorial(6) ans = 720 >> factorial(50) ans = 3.0414e+064 >> log10(factorial(50)) ans = 64.483
Użyta powyżej funkcja log10 oblicza logarytm dziesiętny. Zapis 1e3 oznacza 1*103 (jest to tzw. notacja naukowa). Funkcja factorial służy do obliczania silni. Innymi słowy, factorial(n) jest iloczynem wszystkich liczb naturalnych od 1 do n: factorial(n) = n! = 1*2*,...,*n. W szczególności factorial(6) = 1*2*3*4*5*6 = 720, natomiast factorial(50) jest tak wielką liczbą, że wynik podawany jest w notacji naukowej – dlatego powinniśmy ją rozumieć. Z kolei ostatni przykład ilustruje użyteczność logarytmów dziesiętnych: skoro log10(factorial(50)) = 64.483, to 50! jest liczbą 65-cyfrową. W rzeczywistości równa jest (około) 3.0414e+064, czyli faktycznie ma 65 cyfr dziesiętnych.
Należy pamiętać, że Octave zakłada, że argumenty funkcji trygonometrycznych podawane są w radianach. Aby obliczyć np. sin(n), gdzie n jest wyrażone w stopniach, należy n pomnożyć przez π i podzielić przez 180:
>> sin(30 * pi / 180) # sinus 30 stopni ans = 0.50000
Warto zwrócić uwagę na to, że w Octave przecinek dziesiętny przyjmuje postać kropki: o ile w języku polskim piszemy 0,5, to zarówno w języku angielskim, jak i w Octave piszemy 0.5.
Quit
Program opuszczamy poleceniem quit
>> quit
Polecenie to jest szczególnie przydatne w wersji konsolowej programu (tzw. CLI, ang. command-line interface).
Quiz
- Jakie jest główne przeznaczenie programu Octave?
- Co to jest tekst zachęty?
- Co oznaczają operatory
**,^,*,/,\,+,–? - Jak kończy się pracę z programem Octave?
Zadania do wykonania w Ovtave
- Oblicz sin(20°).
- Która liczba jest większa, 1011 czy 1110?
- Sprawdź, że pierwiastek kwadratowy (
sqrt) z-1równa sięioraz żeirazyirówna się-1. - Sprawdź, że Octave potrafi obliczać logarytm z liczb ujemnych.
- Ile wynosi numeryczna wartość wyrażenia
log(-1)? - Na podstawie wyniku numerycznego zaproponuj wzór na
log(-1).
- Ile wynosi numeryczna wartość wyrażenia
- Oblicz wartość π do potęgi π z dokładnością do 10 cyfr po przecinku.
- Octave podaje identyczną wartość 2.7183 dla wyrażenia (1 + 1/100000)100000 oraz stałej e. Jak sprawdzić, że w rzeczywistości nie są one sobie naprawę równe?
- Ile dokładnie jest różnych wyników losowania totolotka (6 z 49)? Wskazówka: użyj polecenia nchoosek(n,k)
- Skoro już wiesz, że Octave obsługuje liczby zespolone (czyli liczby zawierające jednostkę urojoną
i), sprawdź- ile wynosi
cos(i)i czy wartość tego wyrażenia jest nie większa od 1? - czy mimo wszystko
sin2(i) + cos2(i) = 1? - czy można zaryzykować twierdzenie, że
cos(i) = (e + 1/e)/2?
- ile wynosi
- Na podstawie wzoru \cos (x)=\frac{e^{ix}+e^{-ix}}{2} i jedynki trygonometrycznej zaproponuj analogiczny wzór na
sin(x)jako wyrażenie zawierające stałeeorazi. Do ustalenia wartości znaku ±1, posłuż się Octave.