Octave kao kalkulator

ans varijabla

3+5
ans
ans*4
rez = 6/ans
ans
rez

preciznost ispisa

pi
e
format long
pi
e
format short
pi
output_precision(8)
pi
format short
i
i^2
i = 5
i^2
clear i
i^2
log(100)
log10(100)
log(e)

aritmetika s racionalnim brojevima

format rat
3/4
3/5+8/7
pi
pi+1
sqrt(2)
format short

Napomena. Kada je uključen format rat, tada se iracionalni brojevi ispisuju preko racionalnih aproksimacija.

neke cjelobrojne funkcije

floor(pi)
ceil(pi)
round(pi)
round(3.67)
floor(-pi)
ceil(-pi)
round(-pi)
round(-3.67)

malo numerike

1-5*0.2
1-0.2-0.2-0.2-0.2-0.2
1-(0.2+0.2+0.2+0.2+0.2)
a = 7/3-4/3-1
a == 0
a != 0
a < 1e-15
a < 10^(-15)
b = 10/3 - 7/3 -1;
b
b == 0
b != 0

varijable u memoriji

who
whos

spremanje varijabli u datoteku

Možemo spremiti samo neke varijable: save proba var1 var2 … Datoteka se sprema u tekući direktorij.

save proba

Izađite iz octave sučelja i ponovo pokrenite octave.

pwd
ls
dir
cd ~/Documents/octave/OPM
whos
load proba
whos
clear
whos
clc
help sqrt

Vektori

A = [1 3 5]
B = [1; 3; 5]
A1 = [1,3,5]
sin(A)
3*A-1
B^2
B.^2
v1 = linspace(1,3,5)
v2 = linspace(1,3.1,5)
u1 = 3:8
u2 = 3:0.2:8
u3 = 3:0.2:8.1
whos
whos u*
clear u*
whos

pregledavanje velikih vektora

v = 1:1000;
v
more on
v
more off
v

uzimanje nekog dijela vektora

v = [1 3 4 6 -4 8 9/7]
v(3)+v(1)
size(v)
length(v)
v(3:5)
v(2:2:7)
v([1 3 6])
v([1:3 7])
u = [2:3:20 v(2:2:7) v(5)]

neke operacije s vektorima

u'
a = [1 3 6]
b = [-1 3 -1]
2*a+3*b
sin(a)+b
b^2
b.^2
a*b
a.*b
a*b'
a'*b

zadatak

sinusi svih kutova koji su višekratnici od 60 stupnjeva unutar punog kuta

kutovi = 0:pi/3:2*pi
sin(kutovi)
kutovi_deg = 0:60:360
sin(kutovi_deg)
sin(kutovi_deg * pi/180)

Matrice

kreiranje matrica

A = [4 2 1; -4 6 -5]
B = [3 1; -2 8; 0 5]
C = [1:3; 9:-2:5]
D = [1 2 3]
D = [D; 4:6]
D = [D; 7 8 9]
size(A)
length(A)
rows(A)
columns(A)

operacije s matricama

A*B
B*C
A*C
A.*C
A.*B
A*a
A'
A*a'
A+C
2*A-5/3*C

uzimanje dijela matrice (submatrica)

A(2,3)+B(1,1)
D = [D [-1; -2; -3]]
F = [A C]
G = [A; C]
D(2,:)
D(:,3)
D(1:2,2:3)
D = [D; [0 0 2 5]]
[F [3; 4]; 1:7]
D(1:2:3,[1 3 4])
D([1 3],[1 3 4])
D
D(2:3,[1 4]) = [100 101; 102 103]
whos

kreiranje nekih specijalnih matrica

zeros(4,5)
zeros(1,6)+5
ones(2,6)
eye(5)
6*eye(5)
diag([1 3 6])
diag([1; 3; 6])
D
diag(D)
diag(C)
rand(4,5)
N=randi(37,2,5)
randi(37,4)
randi([-5 5],3,4)
repmat(N,2)
repmat(N,5)
repmat(N,2,3)
M = [] 
size(M)
M(1,3) = 4
M(2,1) = -3
M(7,5) = 11

ispitivanje tipova varijabli

whos
isscalar(u)
isvector(u)
ismatrix(u)
isvector(A)
typeinfo(u)
typeinfo(A)
br = 9
typeinfo(br)

neke funkcije na matricama

D
det(D)
inv(D)
D*inv(D)
trace(D)
A
trace(A)
rank(D)

malo ozbiljnije numerike

S = [4 -2 2; -4 -3 3; -9 -3 3]
det(S)
inv(S)
cond(S)

Sustavi linearnih jednadžbi

A = [1 2 4; -2 5 1; 1 -1 2]
det(A)
cond(A)
B = [2; 3; -1]

rješenje sustava \(AX=B\)

inv(A)*B
A\B
A*ans

rješenje sustava \(XA=B^T\)

B'*inv(A)
B'/A
ans*A

sustav \(SX=B\) nema rješenja

S\B
S*ans
rank(S)
rank([S B])
rref([S B])

sustav s beskonačno mnogo rješenja

A = [1 1 1; 2 0 3; 3 1 4]
B = [2; 5; 7]
A\B
A*ans
det(A)
cond(A)
rref([A B])
primjer nekvadratnog sustava
A = [1 3 4; 3 -1 2]
B = [-1; 4]
A\B
A*ans
rank(A)
rank([A B])
rref([A B])

Graf realne funkcije realne varijable

x = linspace(1,10,150);
y = sin(x);
whos
plot(x,y)
grid on
xlabel('x')
ylabel('funkcija')
axis([0 12 -1.5 1.5])
title('graf')
hold on
plot(x,cos(x),'r:')
figure(2)
plot(x,log(x))
plot(x,sin(x))
plot(x,log(x),x,sin(x),"linestyle",'--',"color",[0.2,0.4,0.3])
plot(x,log(x),'linewidth',2,x,sin(x),'r--')
plot(x,log10(x),'linewidth',2,x,sin(x),'r*')
plot(x,log10(x),'linewidth',2,x,sin(x),'color','r','linestyle','none','marker','*')
x1 = linspace(2,6,10);
y1 = sin(x1)
plot(x,log10(x),'linewidth',2,x1,y1,'r-')
plot(x,log10(x),'linewidth',2,x1,y1,'ro')
plot(x,log10(x),'linewidth',2,x1,y1,'ro-')
figure(1)
plot(x,0.5*x-3,'m-')
clf
clear all

String, struktura i ćelija

string

s1 = "osam"
s2 = "osam12"
s3 = [s1 " " s2]
s1(2)
s3(2:6)
s4=[s1; s2]
s4(2,1)
size(s4)
s4(1,6)
disp(repmat('a',[1,50]))
whos

struktura

mat.s1 = s1
mat.s2 = s2
mat.broj = 56
mat.(s1) = "da"
mat2 = struct("s1",s1,"s2",s2,"broj",56,(s1),"da","vektor",[2,3,4])
mat2=struct("s1",s1,"s2",s2,"broj",56,"vektor",[2,3,4])
mat2.vektor
mat2.vektor(3)
mat2.osam

ćelija

cell1 = {s1, s2}
cell1{1,1}
cell1{1}
cell2 = {s1,s2; 56, [0,7,6]}
cell2{1,2}
cell2{2,2}
cell2{2,2}(3)
0.5*cell2{2,2}
whos

Instaliranje dodatnih paketa

Zadatak
Napravite u octave sljedeću tablicu:

t sin(t) sin(2t)
0.00000 0.00000 0.00000
0.20000 0.19867 0.38942
0.40000 0.38942 0.71736
0.60000 0.56464 0.93204
0.80000 0.71736 0.99957
1.00000 0.84147 0.90930

rješenje

t = 0:0.2:1
[t sin(t) sin(2*t)]
[t sin(t) sin(2*t)]'
[t' sin(t)' sin(2*t)']
z = (0:0.2:1)'
[z sin(z) sin(2*z)]

Na sljedećem linku skinite paket dataframe. Instalaciju u octave pokrenemo iz direktorija u kojem je sačuvana instalacijska datoteka.

pkg install dataframe-1.2.0.tar.gz

Prije korištenja treba učitati paket.

pkg load dataframe
tablica s podacima u redovima
tablica1 = {"t",t; "sin(t)",sin(t); "sin(2*t)", sin(2*t)}
dataframe(tablica1)
tablica s podacima u stupcima
tablica2 = {"t", "sin(t)", "sin(2*t)"; z, sin(z), sin(2*z)}
dataframe(tablica2)