Komputerowe Wspomaganie Projektowania

Scilab-wprowadzenie

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)

Definiowanie zmiennych

• 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

$$\left( \begin{matrix} 1 & 2 & 3 & 4\\ 2.5 & 3.5 & 4.5 & 5.5\\ 4.0& 3.0& 2.0 & 1.0 \\ \end{matrix} \right)$$

• 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

Modyfikowanie zmiennych

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...

Operatory matematyczne i wbudowane stałe

• 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$$

Definiowanie i wywoływanie funkcji

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$.

Rysowanie wykresów funkcji

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>$$

Pętle

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$$