Scilab to program komputerowy służący do obliczeń numerycznych i wizualizacji wyników. Składnia języka jest bardzo podobna do komercyjnego programu Matlab. W programie Scilab działa się właściwie tylko na macierzach (tablicach liczb).
• wyświetlanie wyników
disp(2); disp("kwp")
• czyszczenie konsoli
clc
• czyszczenie zmiennych
clear
• symbol komentarza liniowego
// komentarz liniowy
• symbol komentarza blokowego
/*
komentarz
blokowy
*/
• separator dziesiętny to kropka
disp(2.4)
• definicja zmiennej
a = 2; disp(a)
• definicja wektora (2 elementy)
b = [5 6]; disp(b)
• definicja wektora
c = [1, 2, 3, 4, 5]; disp(c)
• definicja macierzy 2$\times$2
d = [1 2; 4 5]; disp(d)
• definicja wektora
e = 1:0.2:10; disp(e)
• definicja wektora, początek : koniec : liczba elementów
f = linspace(1,10,10); disp(f)
• macierz wypełniona zerami
g = zeros(5,5)
• macierz wypełniona jedynkami
h = ones(4,5)
Zadania:
• Do zmiennej A przypisz macierz
• Do zmiennej B przypisz wektor zawierający wszystkie liczby naturalne od 5 do 60
• Do zmiennej C przypisz macierz o wymiarach 5x8 wypełnioną jedynkami
a = [1 2 3 4; 6 7 8 9];disp(a);
• Zmiana pojedynczego elementu
a(1,1) = 0; disp(a);
• Zmiana wszystkich elementów w pierwszym wierszu
a(1,:) = 0; disp(a);
• Zmiana wszystkich elementów w trzeciej kolumnie
a(:,3) = 0; disp(a);
• Zmień elementy leżące w drugim wierszu oraz kolumnach od 2 do 4
a(2,2:4) = [3.5, 4.5, 5.5]; disp(a);
Zadania:
• Do zmiennej G przypisz macierz o wymiarach 30x30 wypełnioną zerami. Przypisz wszystkim elementom w wierszach 4 i 8 wartość 10.0
• Do zmiennej F przypisz wektor o długości 20 wypełniony zerami. Wstaw od 5 do ostatniego elementu kolejne liczby naturalne 1, 2...
• dodawanie
+ , np. 2 + 2
• odejmowanie
- , np. [2, 2] - [3, 4]
• mnożenie
* lub .* , np. 4*[7, 2]
• dzielenie
/ , np. 3/7
• potęgowanie
^ lub .^ np. [2, 3]^2
• pierwiastkowanie
sqrt, np. sqrt([9, 4])
• liczba $e$ (Eulera) i Pi
%e, %pi
Zadania:
• Zapisz następujące wyrażenie
$$a = \cfrac{2\sqrt{3} + 5^3}{(4+2)(1+\pi)}$$
• Zapisz następujące wyrażenie
$$c = \cfrac{2\sqrt[3]{11.5}}{4+e^3} +8.2$$
function y=fun(x)
y=(x.^2+2*x).*exp(-x);
endfunction
y = fun([5.0, 8.0])
disp(y)
gdzie $y$ - nazwa zmiennej zwracanej przez funkcję, $fun$ - nazwa funkcji, a $x$ to argument funkcji
function z=fun2d(x,y)
z = sin(x)*cos(y);
endfunction
a = fun2d(5.0, 1.0);
disp(a);
Zadania
• Zapisz następująca funkcję.
$$g(x) = 2x^2+4+6x^3$$
• Do zmiennej B przypisz wartość funkcji dla $x=4$.
• Zapisz funkcje do obliczania pola przekroju rury o promieniach $r1$ i $r2$. Do zmiennej POLE przypisz wartość funkcji dla $r1=2$ i $ r2=6$.
function y=f(x)
y=(x.^2+2*x).*exp(-x);
endfunction
x = linspace(-2.0,5.0,50);
plot(x,f,"+b")
// "b" - niebieski
// "k" - czarny
// "r" - czerwony
// "g" - zielony
// ".", "+", "o", "x", "*"
Zadania:
• Narysuj wykres funkcji.
$$beta(x) = 5sin(x)+ \sqrt{2x} + 3, \quad x \in \left<1,5\right>$$
x = zeros(1,10)
n = length(x)
for i=1:n
x(i) = i^2;
end
disp(x);
gdzie $i$ - licznik pętli, $n$ - liczba iteracji. Instrukcje zapisane między $for$ i $end$ wykonywane są $n$ razy.
Zadania:
• Do zmiennej $y$ przypisz wektor według wzoru
$$y_i = 3i+i^2 - 4, \quad i=1,2,...30$$
• Do zmiennej $M$ przypisz dwuwymiarową macierz według wzoru
$$M_{ij} = j+i +ij, i=1,2,...30, \quad j=1,2...20$$