Scilab 

Rozdział 3 Scilab jako kalkulator

Rozdział 3.1 Wstęp
Scilab tak jak każdy język programowania ma swoje instrukcje, np dodawanie, odejmowanie, sin(x)… itd.
Dla ich przetestowania idealnie nadaje się Konsola-podstawowe okno Scilaba
Po prostu wpisujesz np:
2+2
i od razu wyskakuje Ci wynik 4.
Przy takim podejściu Scilab, a ściślej jego Konsola robi za zwykłego kalkulatora. Z jednej strony jest to degradacja dla poważnego języka programowania. Z drugiej zaś, to idealna metoda nauki nowych instrukcji. Na przykład matematycznych, takich jak 4 działania, sinus, cosinus logarytm… Pozostałe instrukcje tj. sterujące, wejscia-wyjścia… poznamy w następnych rozdziałach.

Rozdział 3.2 Scilab a Xcos
W kursie Podstaw Automatyki wystarczy  kliknąć plik mp4, aby zobaczyć animację np. dla członu oscylacyjnego. Prościej się nie da. Na https://iautomatyka.pl/kurs-regulacji-pid-wstep-cz-1-34/ jest mniej wygodna, za to bardziej uniwersalna wersja Podstaw Automatyki. Mniej wygodna, bo wykorzystuje Scilaba, a ściślej jego program graficzny Xcos. Tam dla każdej animacji pobieram schemat blokowy jako plik typu plik.zcos.  Jest on tym samym dla Xcosa, czym np. dla Worda plik.doc.  Musisz mieć zainstalowanego Scilaba oraz pliki typu pliki.zcos. Tworząc tamtą wersję odniosłem, wrażenie, że Scilab to właściwie Xcos! A przecież Scilab to program podobny do Fortranu, Pascala, C++, Pythona itd. Zaś Xcos, to tylko graficzna nakładka Scilaba, która zamienia schematy blokowe na odpowiednie równania matematyczne, głównie różniczkowe. 
Wniosek
Scilab to wyspecjalizowana aplikacja ułatwiająca rozwiązanie typowych problemów matematycznych z instrukcjami matematycznymi i sterującymi.  Ma on fajną “podaplikację” graficzną Xcos , która zamienia schematy blokowe na równania matematyczne, głównie różniczkowe. Umożliwia analizę układów regulacji automatycznej, układów elektrycznych i mechanicznych bez głębokiego wchodzenia w równania różniczkowe. Xcos-em zajmiemy się w dalszych rozdziałach. Natomiast w tym rozdziale poznamy typowe instrukcje matematyczneInne tj. instrukcje wejścia, wyjścia,  wykresy funkcje… też w następnych rozdziałach. Czyli spojrzymy na Scilab tak jak na każdy “normalny” język programowania typu C++, Fortran

Rozdział 3.3 Podstawowe instrukcje matematyczne
Wybierz najwygodniejsza dla Ciebie metodę czytania kursu i natychmiastowego jej testowania.
W poprzednim rozdziale wybrałem metodę z Rozdz. 2.5 czyli
Małe okna Kursu i Scilaba jednocześnie
instrukcje będziesz przeważnie testował bez animacji, którą pozostawię dla mniej typowych przypadków.
Zaczniemy od najprostszego działania 
Dodawanie
2+2=4
Z poprzedniego rozdziału już wiesz jak to zrobić. Na wszelki wypadek  pokażę Ci to na animacji na Rys.3-1.

Rys.3-1
2+2
1.
Otwórz Scilaba klikając jego ikonę
2. Wpisz do okna Konsola
     2+2
3. Enter
–>Pojawi się wynik 4
4.
Wpisz clear; clc//instrukcje czyszczące Przeglądarkę zmiennych i Konsolę.
Czyść tak zawsze przy testowaniu kolejnych instrukcji tj. Odejmowanie, Mnożenie…

W ten sam sposób sprawdzisz  inne instrukcje  

Odejmowanie
5-3=2

Mnożenie
5*3=15

Dzielenie
20/4=5

Wartość bezwględna

abs(-2)
–> abs(-2)
ans =2.

Działania złożone np. z nawiasami i dzieleniem
(3+5*7)/(2+3*4)+4=6.7142857

Potęgowanie
2^3=8

Pierwiastkowanie
sqrt(9)=3
sqrt(10)=3.1622777…

Pierwiastkowanie n-tego stopnia
nthroot(27,3)
ans =
3.
Zgadza się. Pierwiastkiem trzeciego stopnia z 27 jest 3.
Sprawdźmy jeszcze 
nthroot(2,2)
ans =
1.4142136
zgadza się
nthroot(2,2)=sqrt(2)=1.4142136…
oraz potęgowanie
2^0.5

ans =
1.4142136 
Też się zgadza.
Sinus
sin(%pi/2)  (wynik wpisujemy w radianach)
ans =
1.

Cosinus
cos(%pi/2)
ans =
6.123D-17
Co jest grane? Powinno być 0! I tak jest. Zauważ, że 6.123D-17 jest liczbą bardzo, ale to bardzo małą!
Scilab tak to obliczył rozkładając cos(x) na wielomian. Dalej traktuje tę liczbę jako 0.
Sprawdź np. że 
1+6.123D-17=1

Tangens
tan(%pi/4)
ans =
1.0000000

Cotangens
cotg(%pi/4)
ans =
1.0000000

Gdy chcesz potraktować funkcje trygonometryczne  po ludzku, czyli w stopniach dodaj literkę d.
Czyli będzie sind(x), cosd(x), tand(x) i cotg(x)
Sprawdźmy np. sin(30º)
sind(30)
ans =
0.5000000

Sprawdźmy też twierdzenie 
sin²(x)+cos²(x)=1
dla x=30º
–> [sind(x)]^2+[cosd(x)]^2
ans =
1.

4 ważne stałe matematyczne π, e
%pi=3.1415927…
%e=2.7182818…
%eps=2.220D-16=”prawie zero”
Czasami Scilab w obliczeniach zamiast zera podaje bardzo małą liczbę “prawie zero”. Wiadomo np. że cos(0)=0 a w Scilabie wyjdzie cos(0)=”prawie zero”.
%i=0. + i –>liczba urojona i
Liczba zespolona 2+3i
2+3*%i=2. + 3.i

Uwaga:
W tym rozdziale do tej testowałeś instrukcje jako zwykłe  działania np. 2+2. Tu wynik został przyporządkowany konkretnej zmiennej ans. Czyli ans=2+2=4. Gdybyś potem wprowadził do konsoli np. 2+3 to wynik 5  też byłby w tej samej zmiennej ans=2+3=5.  A gdybyś zastosował dodawanie z przyporządkowaniem do zmiennej o konkretnym adresie w pamięci np. x=2+2 i y=2+3 ? Wtedy mogłoby nam ułatwić robotę obliczając z=x*y=4*5=20

Definiowanie wektora
Po wpisaniu do konsoli 
x=[1,2,3]
i kliknięciu Enter pojawi się tekst
x =
1. 2. 3.
W ten sposób powstała zmienna jako wektor o kolejnych wartościach 1, 2, 3.
Uwaga
Pierwszy element tego wektor to x(1)=1, a nie x(0)=1. 
Wniosek:
Indeksowanie wektora w Scilabie. Zaczyna się od a nie od 0! Sporo czasu spędziłem na szukaniu błędów przy testowaniu programu. Pamiętaj o tym!
Wektor, a także macierze, nie muszą składać się tylko z liczb. Mogą być utworzone także z napisów ( inaczej stringów).
x=[‘Warszawa’, ‘Kraków’, ‘Suwałki’]
Sprawdź w konsoli

x=[‘Warszawa’, ‘Kraków’, ‘Suwałki’]
x =
“Warszawa” “Kraków” “Suwałki”

Transponowanie wektora
y=x’ 
y =

1.
2.
3.
Powstał nowy wektor y, który z “poziomego” wektora x, stał się “pionowym” wektorem y
Iloczyn skalarny 2 wektorów
x=[1,2,3]
y=[4,5,6]
z=x*y’
–>iloczyn skarny-zwróć uwagę na znak
Po wciśnięciu Enter został obliczony iloczyn skalarny tych wektorów jako

x=[1,2,3]
x =
1. 2. 3.
–> y=[4,5,6]
y =
4. 5. 6.
–> z=x*y’
z =
32.
Zwróć uwagę na to, że iloczyn skalarny 2 wektorów jest liczbą=32 inaczej skalarem a nie wektorem!
Sprawdzę ręcznie.
1*4+2*5+3*6=32 
Zgadza się!
Macierz
Macierz jest uogólnieniem wektora  i jej przykładem jest np.
A=[2,2,4;5,2,3;4,2,7] 
Dziwnie ten twór wygląda. Sprawdź to w konsoli Scilaba

A=[2,2,4;5,2,3;4,2,7]
A =

2. 2. 4.
5. 2. 3.
4. 2. 7.
Na macierzach możesz wykonywać operacje dodawania, odejmowania, mnożenia i dzielenia.
np. 

–> B=[1,2,5;-3,2,-2;-1,2,3]
B =

1. 2. 5.
-3. 2. -2.
-1. 2. 3.
Z dodawaniem i odejmowaniem nie ma problemu
A+B
ans =

3. 4. 9.
2. 4. 1.
3. 4. 10.
Ale z mnożeniem to musisz sobie przypomnieć teorię.
–> A*B
ans =

-8. 16. 18.
-4. 20. 30.
-9. 26. 37.

Jak zrobić macierz której każdy element podniosę do kwadratu?
A=[2,2,4;5,2,3;4,2,7]
A =

2. 2. 4.
5. 2. 3.
4. 2. 7.

–> A.^2 (zwróć uwagę na kropkę przy A)
ans =

4. 4. 16.
25. 4. 9.
16. 4. 49.
Sprawdź czy się zgadza.
Albo do każdego elementu dodamy 1

Każdy element macierzy A pomnożony przez odpowiedni element macierzy B
Uwaga:
Nie jest to mnożenie macierzy A i B

A=

A=[2,2,4;5,2,3;4,2,7]
A =

2. 2. 4.
5. 2. 3.
4. 2. 7.

B=[1,2,5;-3,2,-2;-1,2,3]
B =

1. 2. 5.
-3. 2. -2.
-1. 2. 3.

A.*B (zwróć uwagę na kropkę przy A)
ans =

2. 4. 20.
-15. 4. -6.
-4. 4. 21.

Inne instrukcje operacji matematycznych
Podałem tylko najbardziej potrzebne instukcje Scilaba. W helpie znajdziesz każdą instrukcję matematyczną.

np. Rozkład na czynniki pierwsze
factor(20)
ans =
2. 2. 5.
Rzeczywiście 20=2*2*5

Scroll to Top