Programando em Octave (parte 1)
Se você ainda está preso ao Windows pelo gancho do MATLAB, está na hora de adquirir a liberdade. Octave usa uma linguagem compatível com MATLAB. É uma linguagem computacional que usa as matrizes como suas variáveis. Esta forma de ver as variáveis acelera o cálculo computacional, pois todas as operações são vistas como operações entre matrizes.
Parte 4: Funções
Octave traz várias funções embutidas, das mais simples a algumas bem especiais. Veja algumas:
Aritméticas:
octave:34> sin(mat1)
Matriciais:
OCTAVE dispões de muitas funções específicas para uso em matrizes. Veja algumas:
octave:35> det(mat1)
ans = 0
octave:36> eig(mat1)
warning: inverse: matrix singular to machine precision, rcond = 7.90026e-20
Observação importante: Por padrão, a impressão na tela ocorre apenas no final da execução de uma instrução/comando, ou antes de um 'input' (que veremos um pouco adiante). Quando queremos evitar que um resultado apareça na tela, usamos ' ; ' (ponto e vírgula) no final da instrução. Outro símbolo importante é o ' : ' (dois pontos), usado para construir uma seqüência (na verdade, uma progressão aritmética). Veja um exemplo:
octave:1> x=2:3:19
A sintaxe é : nome_da_variável:primeiro_termo:incremento:limite_para_ultimo_termo. Veja mais um exemplo:
octave:2> y=100:-13:-20
Aritméticas:
- sin(X), cos(X), sqrt(X), log(X) : respectivamente o seno, cosseno, raiz quadrada e logaritmo dos elementos da matriz X.
- exp(X): e elevado a cada um dos elementos da matriz X.
- ceilceil(x): arredondamento para cima do número 'real' x
- floor(x): arredondamento para baixo do número 'real' x
- round(x): arredondamento para o inteiro mais próximo
- conj(x): complexo conjugado de x
- imag(x): parte imaginária do número complexo x
- real(x): parte real do número complexo x
- sign(x): sinal (positivo ou negativo) do número real x
- gcd(x,y): máximo divisor comum de x e y
- lcm(x,y): mínimo múltiplo comum de x e y
- rem(x,y): resto da divisão x/y
octave:34> sin(mat1)
ans = 0.84147 0.90930 0.14112 -0.75680 -0.95892 -0.27942 0.65699 0.98936 0.41212 -0.54402 -0.99999 -0.53657 0.42017 0.99061 0.65029 -0.28790octave:35>
Matriciais:
OCTAVE dispões de muitas funções específicas para uso em matrizes. Veja algumas:
- det(X): determinante de X
- eig(X): conjunto dos autovalores de X
- expm(X): exponencial matricial de X (lembre que exp(X) é a exponencial elemento a elemento)
- logm(X): logaritmo matricial; inversa de expm(X)
- inv(X): matriz inversa de X
- sum(X): vetor cujos elementos sãos as somas dos elementos das colunas de X
- trace(X): traço de X (soma dos elementos da diagonal)
- norm(Y): norma do vetor Y (quadrado da raiz quadrada do somatório dos módulos)
octave:35> det(mat1)
ans = 0
octave:36> eig(mat1)
ans =
36.20937 + 0.00000i
-2.20937 + 0.00000i
0.00000 + 0.00000i
0.00000 - 0.00000i
octave:37> inv(mat1)warning: inverse: matrix singular to machine precision, rcond = 7.90026e-20
ans =
6.3719e+16 -7.7005e+16 -3.7149e+16 5.0434e+16
-5.9168e+16 7.2791e+16 3.1922e+16 -4.5545e+16
-7.2822e+16 8.5432e+16 4.7603e+16 -6.0212e+16
6.8271e+16 -8.1218e+16 -4.2376e+16 5.5323e+16
octave:38>
Observação importante: Por padrão, a impressão na tela ocorre apenas no final da execução de uma instrução/comando, ou antes de um 'input' (que veremos um pouco adiante). Quando queremos evitar que um resultado apareça na tela, usamos ' ; ' (ponto e vírgula) no final da instrução. Outro símbolo importante é o ' : ' (dois pontos), usado para construir uma seqüência (na verdade, uma progressão aritmética). Veja um exemplo:
octave:1> x=2:3:19
x = 2 5 8 11 14 17octave:2>
A sintaxe é : nome_da_variável:primeiro_termo:incremento:limite_para_ultimo_termo. Veja mais um exemplo:
octave:2> y=100:-13:-20
y = 100 87 74 61 48 35 22 9 -4 -17octave:3>