Introdução ao Octave - Parte I
Primeiros passos nesse ambiente de computação numérica ideal
Vamos lá?
Estudar Cálculo Numérico pressupõe escrever algoritmos e analisá-los, claro, mas também implementá-los, executá-los, testá-los com diferentes conjuntos de dados; experimentá-los enfim. Para isso e mais um pouco temos o Octave como ambiente ideal. Nesta aula vamos conhecer esse pacote para computação numérica e aprender o básico.
- 1
- 2
- 3
O que o comando format long
faz?
Se x = [ 1; 2]
quais operações abaixo são válidas?
GNU Octave (ou Octave, para abreviar) é um ambiente científico que cresce com a contribuição de dezenas ou centenas de pesquisadores em análise numérica ao redor do mundo.
Por interativo quero dizer que você pode encará-lo como uma calculadora avançada, usando seus comandos já prontos um a um. Por expansível, quero dizer que qualquer um pode criar novos programas, usando tudo o que já estiver pronto, e disponibilizá-los dentro do ambiente do Octave, como se fosse um comando nativo, expandindo assim as funcionalidades originais.
Para expandir o Octave, novos programas são implementados usando sua linguagem de programação interna. Essa linguagem é bem simples de ser aprendida e altamente compatível com a linguagem do MATLAB.
Por fim, é muito importante saber que o Octave é um software livre. Isto significa que você pode ver como qualquer parte do Octave foi implementada, pode alterá-lo, reutilizar o código fonte em seus programas e distribuir suas alterações, desde que mantendo o mesmo nı́vel de liberdade que você recebeu, ou seja, usando a licença pública GPL.
Você pode instalar o Octave em seu computador ou usá-lo através do site Octave-Online.
O Octave pode ser usado interativamente, através de sua janela de comandos. Assim que um comando é digitado no prompt (>
), ele é imediatamente interpretado e o resultado é exibido logo a seguir . Por exemplo
1/7
ans = 0.14826
O comando format
foi usado no vídeo para alterar a exibição dos resultados na tela. Com format long
mais dígitos são exibidos, em oposição a format short
, que é o comportamento padrão. Note que esse comando não tem influência nas contas, que sempre são feitas com a precisão máxima possível. Para ver um texto explicativo sobre o comando, experimente digitar help format
.
Considere o exemplo:
a = 10; b = 5; c = a + b; a = 20;
Ao executar esse bloco de comandos no Octave, três variáveis serão criadas, a
, b
e c
. Logo de início a variável a
vale 10. O que significa então a linha a = 20;
? Do ponto de vista matemático essa linha não faz sentido, a
não pode ser igual a 10 e igual a 20. Mas na sintaxe do Octave, como acontece em muitas outras linguagens, o =
não representa uma igualdade, mas sim uma atribuição. No exemplo, a
começa valendo 10, até que seu valor é redefinido para 20 na última linha.
Qual o valor de c
? 15 ou 25? Como cada comando é executado no momento em que é avaliado, c
foi definido quando a
valia 10, portanto c
vale 15. O que acontecer depois com a
não altera o valor de c
.
Além de trabalhar com variáveis escalares, muito da força do Octave está em trabalhar com vetores e matrizes. Para defini-los, use colchetes. Dentro dos colchetes, o caractere de ponto-e-vírgula separa as linhas. A separação de colunas é feita por espaços ou, se precisar ser explícito, por vírgulas. Por exemplo:
u = [3 5 6 7] u = 3 5 6 7 v = [1; 0; 1; -1] v = 1 0 1 -1 s = u * v # Cálculo do produto interno s = 2 A = v * u # Cálculo do produto externo A = 3 5 6 7 0 0 0 0 3 5 6 7 -3 -5 -6 -7
Para consultar um elemento de um vetor ou matriz use parênteses para especificar o elemento. Por exemplo, x(2)
retorna o segundo elemento do vetor x
, A(2,1)
é o elemento da segunda linha e primeira coluna da matriz A
, e A(2,:)
representa toda a segunda linha de A
. Atenção: no Octave, todos os índices iniciam em 1.
As operações aritméticas quando aplicadas a matrizes e vetores tem o resultado matemáticos que se espera, ou seja, um produto matriz por vetor, só está definido se as dimensões são compatíveis (como nos exemplos acima). Para realizar uma operação, sem usar a álgebra usual para matrizes e vetores, mas sim aplicando-a aos elementos do vetor, utilize os operadores aritméticos precedidos por um .
, como .*
ou .^
. Exceção se faz ao operador de soma que, naturalmente já é computado elemento por elemento, quando aplicado a matrizes. Veja esses exemplos:
u = [1 2 3]; u * u # Operação que não faz sentido! error: operator *: nonconformant arguments (op1 is 1x3, op2 is 1x3) u .* u # Operação de produto coordenada a coordenada ans = 1 4 9
No vídeo, para exibir gráficos utilizamos duas funções distintas, fplot
e plot
. A primeira delas recebe como argumento uma função, enquanto que a segunda cria o gráfico a partir de vetores. O Octave tem muitas opções para criar gráficos. Experimente help plot
, para começar a descobrir mais.
Ao longo deste curso utilizaremos o Octave diversas vezes. É importante que você se familiarize com ele. Para isso, o principal é ser curioso. Tente e se permita errar. É o melhor jeito de aprender.
Referências
Site oficial do GNU Octave com documentação online ou em PDF.
Para usar o Octave sem precisar instalá-lo, experimente o Octave-Online.
Um livro texto para Cálculo Numérico que utiliza o Octave nos exemplo é:
A. Quarteroni e F. Saleri. Cálculo Científico com MATLAB e Octave. Springer, 2007.
1. Observe as seguintes linhas executadas no Octave.
A = [ 1 2; 3 4]; B = [ 1 1; 2 2]; C = (A + B) - (A .+ B); D = (A * B) - (A .* B); E = A .^ B;
Qual o resultado esperado para as matrizes C
, D
e E
? Tente descobrir por si mesmo e depois confira se acertou executando esses comandos no Octave.
2. Construa no Octave uma matriz quadrada de ordem 10, com 2 na diagonal principal e 3 na diagonal superior. Sua solução também funcionaria bem para matrizes de ordem bem maior, por exemplo, de ordem 1000?
3. Faça os gráficos das seguintes funções, nos intervalos prescritos.
- $f(x) = -3x^3+7x^2-5,$ $0\le x \le 2.$
- $g(x) = \cos(x) / \sqrt{x^2+1},$ $0\le x\le 20.$
- $h(x) = e^{3x} - e^{-3x},$ $-1\le x \le 1.$
cos
, sqrt
e exp
.