%% PODSTAWOWE ZASADY PRACY w MATLAB / OCTAVE
%
% Tryb pracy: 
% - 1 - wsadowy (bezpoœrednio w Oknie Poleceñ - Command Window),
% - 2 - skryptowy (w Edytorze - Editor)
% Pocz¹tek pracy
clc, clear, close all
% 1. Zmienne skalarne
disp('-------------------')
disp('1. Zmienne skalarne')
a = 1, b = 3; c = a + b; a + b, ans*2, d = ans + 2*a
a-b, a/b, a*b, a^b
pi, i, 1/0, Inf, 0/0, NaN
%
% 2. Zmienne tablicowe
disp('-------------------')
disp('2. Zmienne tablicowe')
% 2a. definiowanie przez podanie elementów
A = [1 2 3 4], A = [1,2,3,4], A = [1 2 4; -5 6 7]
% 2b. definiowanie przez operator zakresu (:)
B = 1:10, B = 1:2:20, B = 10:1, B = 10:-1:1, B = [1:10; 1:2:20]
% 2c. definiowanie przez budowê z mniejszych tablic
A = [1 2; 3 4], B = [5 6; 7 8], C = [A B], C = [A; B] 
% 2d. definiowanie przez funkcje specjalne
ones(3,1), zeros(4,2), eye(4,5), rand(5,4), randn(3,2)
%
% 3. Edycja elementów tablic
disp('-------------------')
disp('3. Edycja elementów tablic')
A(1,1), A(3), A(1,:), A(:,2)
C([1,3],[1,2])
C(4,:) = [-5 -5], C(4,:) = []
%
% 4. Podstawowe funkcje matematyczne
disp('-------------------')
disp('4. Podstawowe funkcje matematyczne')
sin(a), sin(30), sin(pi/6), cos(A), tan(A)
asin(0.5), acos(0.5), asin(0.5)*180/pi, atan(1)*180/pi
exp(1), log(10), log(exp(3)), log10(1000)
sqrt(9), abs(-9)
round(3.6), floor(3.6), ceil(3.1)
%
% 5. Operacje macierzowe i wektorowe
disp('-------------------')
disp('5. Operacje macierzowe i wektorowe')
a = [1 2 3], b = [-1 2 0], A = [1 2 3; -1 0 1], B = 2*ones(3,3)
a', A' % transpozycja
a + b, a - b, A + 2, 2*A
a == b, a > b, a == 1, b <= 0, a > 0 & b < 0, a > b | b~=2
a*b', dot(a,b), dot(b,a) % iloczyn skalarny
A*a', A*B % mno¿enie macierzowe
cross(a,b), cross(b,a) % iloczyn wektorowy
B^2
sum(a), sum(A), sum(sum(A)), prod(a)
max(A), min(A), max(A), max(max(A))
norm(a), length(a), length(A), size(A), size(A,1), numel(A)
% 6. Operacje tablicowe (z kropk¹ ".")
disp('-------------------')
disp('6. Operacje tablicowe (z kropk¹ ".")')
a.*b, a./b, a.^2
A = [-3 1; 4 5], B = [1 2; -2 4]
A.*B, A./B, A.\B, A.^3, A.^B
%
% 7. Wybrane problemy algebry
disp('-------------------')
disp('7. Wybrane problemy algebry')
A = [5 1 -2; 1 6 2; -2 2 8], B = [-9; 3; 18]
det(A); % wyznacznik
inv(A), A^-1 % odwrotnoœæ macierzy
A^-1*B, inv(A)*B, A\B % rozwi¹zanie uk³adu równañ
eig(A), [U,V] = eig(A) % problem w³asny macierzy
% 8. Grafika 2D
disp('-------------------')
disp('8. Grafika 2D')
figure(1) % nowe okno graficzne
subplot(2,1,1) % podzia³ okna na podwykresy
x = -1:0.01:10; x = linspace(-1,10,1000); % dziedzina wykresu
y = sin(x).*x - cos(x).^2; % zbiór wartoœci funkcji
plot(x,y,'r-')
hold on
grid on
y = log(abs(x));
plot(x,y,'b-')
subplot(2,2,3)
plot([0 2 1 0],[0 0 2 0],'ko-','linewidth',2);
title('tytu³'), xlabel('opis osi x'), ylabel('opis osi y'), legend('legenda')
axis equal
% 9. Pêtla "for" (o okreœlonej liczbie przebiegów)
disp('-------------------')
disp('9. Pêtla "for" (o okreœlonej liczbie przebiegów)')
figure(2);
hold on
n = 5; % wykresy jednomianów w przedziale [a,b] o stopniach od 0 do n
a = 0; b = 1;
x = a:0.01:b;
for i = 0:n
    y = x.^i;
    plot(x,y,'-');
end