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)