help -i temat
q - wyjście z pomocy

Podstawowe operacje arytmetyczne

+,-,*,/
2 + 3
2+3; - zapobiega wyświetlaniu się wyniku.
x=2+3;
x
e,pi,Inf,true,false - zdefiniowane stałe.
format long,format short,format bank, format - format wyświetlania liczb.
disp(x),disp("text") - wyświetlanie na wyjście wartości
ma=[1,3;4,7] - wprowadzenie macierzy 2 na 2
ma' - transponowana i sprzężona
ma = [ 1, 3, 2 ]
mb = [ 3; 5; 1 ]
mA = [ 1, 3, 2; 3, 5, 1; 5, 4, 1 ]
md = ma +1
me = 5*ma
ma/2
2/ma
2+mA
ma+mb'
mB = [ 1, 5, 3; 2, 1, 3; 4, 0, 13 ]
mA+mB
ma*mb
mb*ma
mA*mB
ma*mA
mA*ma'
ma.*mb'
ma./mb'
mA\mb
inv(mA) - macierz odwrotna

Niektóre wbudowane funkcje

cos(x), sin(x), tan(x), asin(x), acos(x), atan(x), sinh(x), cosh(x), tanh(x), asinh (x), acosh(x), atanh(x) - trygonometryczne
floor(x), ceil(x), round(x) - odcięcie po przecinku, następna naturalna, zaokrąglenie.
log(x), exp(x), sqrt(x)
imag(x),real(z), abs(z), arg(z) - dla liczb zespolonych.
det(mA), inv(mA), rank(mA), eig(mA), svd(mA) - algebra macierzowa
size(mA), length(mA), sum(ma), sumsq(ma) - funkcje związane z macierzami i wektorami

Równania nieliniowe

[x, info, msg] = fsolve (fcn, x0) - funkcja do znajdywanie miejsc zerowych równań nieliniowych.
przykład:
rozwiązanie układu równań
-2x2 + 3xy + 4 sin(y) = 6
3x2 - 2xy2 + 3 cos(x) = -4
definiujemy funkcje:
function y = f (x)
  y(1) = -2*x(1)^2 + 3*x(1)*x(2) + 4*sin(x(2)) - 6;
  y(2) = 3*x(1)^2 - 2*x(1)*x(2)^2 + 3*cos(x(1)) + 4;
endfunction
i implementujemy ją do funkcji fsolve
[x, info] = fsolve ("f", [1; 2])
[x0,fval,info,output]=fminbnd("f",-14,8) znajdywanie minimum funkcji f w zakresie od -14 do 8

Równanie dx/dt=f(x,g)

[x, istate, msg] lsode (fcn, x_0, t, t_crit) - funkcja służąca do rozwiązania równania dx/dt= f(x,t) dla x(t0)= x0
xdot = f (x, t) forma jaką musi mieć funkcja o nazwie fcn
Przykład:
function xdot = f (x, t)
  xdot = zeros (3,1);
  xdot(1) = 77.27 * (x(2) - x(1)*x(2) + x(1) \ #znak kontynuacji linii
  - 8.375e-6*x(1)^2);
  xdot(2) = (x(3) - x(1)*x(2) - x(2)) / 77.27;
  xdot(3) = 0.161*(x(1) - x(3));
endfunction
następnie
x0 = [ 4; 1.1; 4 ] - definicja warunków początkowych
t = linspace (0, 500, 1000);
y = lsode ("f", x0, t);
plot (t, x) - wykreślenie wyniku.

Wykresy

help plot
x = linspace(-pi, pi, 100);
octave:2> y = sin(x);
octave:3> plot(x, y);

x = linspace(-pi, pi);
plot(x, sin(x) + cos(2*x)/2, '+b');
axis([-pi, pi, -1.8, 1]);
title('Wykres y(x)')
legend('Dane z funkcji')
xlabel('x');
ylabel('y');

Wykres 3d

z = [0:0.05:5];
plot3(cos(2*pi*z), sin(2*pi*z), z, ";;");
title("Helix");
xlabel("x");
ylabel("y");
zlabel("z");

x = linspace(-pi, pi, 20);
[X, Y] = meshgrid(x);
mesh(x, x, sin(X).*cos(Y));

Skrypty

Utwórz skrypt w edytorze tekstu i zapisz w pliku o nazwie z rozszerzeniem .m

#! sciezkaiprograminterpreteroctave -gf ma=[1,2,3]
mA=[1,3,5;7,11,13;17,19,23]
ma*mA
det(mA)

source "scieżkadosptepu/nazwa.m"
octave nazwaplikuzeskryptem - wywołanie skryptu z wiersza poleceń

Typy danych

typeinfo() - typy zdefiniowane w octave.
size(b) - rozmiar zmiennej.
1.34e-3
1+4i
a=[1,3;4,7]
"cos tam"
'cos tam'
hex2dec("ff")
dec2bin(25)
dec2hex(25)
str2num(s)
str = {
  a=1.2
  b=[1,2;3,4]
  c="text"
}
global x=1.5 - definiuje zmienną globalną, przydatne np. w definicji zmiennej w funkcji (jest widoczna globalnie)

Wyrażenia

mA(1,1) - odwołanie się do pierwszego elementu macierzy b.
mA(:,1) - odwołanie się do pierwszej kolumy
mA(2,:) - odwołanie się po drugiego wiersza
mA(2:3,1,2) - 2 i 3 wiersz, 1 i 2 kolumna
mA(end-1:end,end-1:end)
3*a - mnożenie macierzy przez stałą.
3^4 - 3 do potęgi 4
sqrt (2^4+3^2) wywołanie funkcji z jednym argumentem.
ma-mb - odejmowanie, jeżeli ma i mb macierze to odejmowanie element po elemencie (macierze muszą mieć ten sam wymiar).
ma*mb - mnożenie, jeżeli macierze to muszą się zgadzać odpowiednie wymiary.
ma' - macierz transponowana. ma/mb - dzielenie, dla macierzy (inverse (y')*x')'
ma.^mb - potęgowanie element po elemencie

Operatory porównawcze

x
y<=x
x==y
x>=y
x>y
x!=y
x<>y

Wyrażenia logiczne

& - i
| - lub
~ - zaprzeczenie
! - zaprzeczenie

Instrukcje sterujące

if ... else endif

if(rem (x,2)==0)
  printf("x jest parzysta\n")
 else
  printf("x jest nieparzysta\n")
endif

if ... elseif ... else ... endif

if (rem (x, 2) == 0)
  printf ("x jest parzysta\n");
 elseif (rem (x, 3) == 0)
  printf ("x jest nieparzysta i podzielna przez 3\n");
 else
  printf ("x jest nie parzysta\n");
endif

while ... endwhile

mc = [1,2,3,4,5,6,7,8,9,10];
i = 3;
while (i <= 10)
  mc (i) = mc (i-1) + mc (i-2);
  i++;
endwhile

do ... while

mc = [1,2,3,4,5,6,7,8,9,10];
i = 2;
do
  i++;
  mc (i) = mc (i-1) + mc (i-2);
until (i == 10)

for ... endfor

mc = [1,2,3,4,5,6,7,8,9,10];
for i = 3:10
  mc (i) = mc (i-1) + mc (i-2);
endfor

break; - wyjście z pętli

Funcje

function sr = srednia(v)
  if (isvector (v))
    sr = sum (v) / length (v);
  endif
endfunction

function [max, idx] = maxwar (v)
  idx = 1;
  max = v (idx);
  for i = 2:length (v)
    if (v (i) > max)
      max = v (i);
      idx = i;
    endif
  endfor
endfunction

Zapisywanie do pliku i czytanie danych z pliku

save nazwapliku - zapisuje wszystkie zmienne w pliku o podanej nazwie
save nazwapliku x y z zapisze tylko wymienione zmienne
load nazwapliku - wczytuje wszystkie zmienne z pliku


mA = [1,3,5;7,11,13;17,19,23]; # utworzenie macierzy
plik = fopen("dane", "w",'ieee-le'); # otarcie pliku do zapisu
fprintf(plik, "%f ", mA); # wpisanie macierzy mA do pliku dane
fclose(plik); # zamknięcie pliku

r, w, a - czytanie, pisanie , dołączanie (atrybuty otwarcia pliku)
%i, %f, %e, %g - liczby w formacie całkowita, zmiennoprzecinkowa, w formacie np. 2.3e-5, w formacie %f i %e.
mC=fscanf(plik,"%f") - wczytanie danych z pliku.

Literatura:
"Octave tutorial" Henri Amuasi
Tutorials
GNU Octave
Octave-Forge - Function Reference