Spis treści
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.
Komentarze
W powyższym przykładzie znak # rozpoczyna komentarz, który rozciąga się do końca wiersza
Quit
Program opuszczamy poleceniem quit
>> quit
Polecenie to jest szczególnie przydatne w wersji konsolowej programu (tzw. CLI, ang. command-line interface) działającej w terminalu uniksowym.
Quiz
- Jakie jest główne przeznaczenie programu Octave?
- Co to jest tekst zachęty?
- Co oznaczają operatory
**
,^
,*
,/
,\
,+
i–
?. - Jak Octave interpretuje symbol
#
? - Jaka jest różnica między zapisem
x/y
iy\x
, jeżelix
iy
są „zwykłymi” liczbami? - Jak kończy się pracę z programem Octave?
Zadania
- Oblicz sin(20°).
- Która liczba jest większa, 1011 czy 1110?
- Sprawdź, że pierwiastek kwadratowy (
sqrt
) z-1
równa sięi
oraz żei
razyi
ró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)?
- Liczba cząsteczek gazu doskonałego wynosi
2,69e25
na metr sześcienny. Załóżmy, że każdą z tych cząsteczek powiększyliśmy do rozmiarów ziarnka ryżu i rozsypaliśmy równomiernie po powierzchni Ziemi (łącznie z oceanami). Oszacuj, jak grubą warstwą ryżu pokrylibyśmy naszą planetę? - (*) 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 niewiększa od 1? - czy mimo wszystko
sin2(i) + cos2(i) = 1
? - czy można zaryzykować twierdzenie, że
cos(i) = (e + 1/e)/2
? - dla ambitnych: na podstawie powyższych informacji zaproponuj wartość
sin(i)
jako wyrażenie zawierające stałee
orazi
. Do rozwiązania użyj kartki i długopisu. Możesz pomylić się o czynnik ±1, ale w ustaleniu wartości znaku możesz posłużyć się Octave.
- ile wynosi
Uwagi metodologiczne
Być może dziwisz się, że powyższe zadania odwołują się do nieomówionych jeszcze koncepcji, jak liczby e
i i
. One są po prostu tak ważne, że im szybciej się z nimi oswoisz, tym lepiej.