Cartilha de Octave para Matemática
Computacional
Edkallenn Lima
Mestre em Ciência da Computação, Policial Federal e
Professor
Centro Educacional Uninorte
Introdução
A proposta desta cartilha é apresentar uma introdução à computação científica por
meio do software GNU Octave, que possui estrutura similar à da linguagem
Matlab.
Matlab é uma linguagem de programação interpretada de alto nível, criada por

Cleve Moler no fim da década de 1970.
Centro Educacional Uninorte 2
Octave
Voltada ao cálculo matricial, à computação, visualização e programação numérica,
suas ferramentas e funções matemáticas embutidas permitem implementar
algoritmos mais rapidamente que utilizando ferramentas (como o Microsoft Excel)
ou linguagens compiladas (como C, C++ ou Fortran).
O GNU Octave é um software livre que compartilha da filosofia GNU
foi criado por John Eaton e vários colaboradores (veja a lista

completa em http://goo.gl/IzGafp
Centro Educacional Uninorte 3
Ferramentas Octave
Ele dispõe de ferramentas para a resolução de problemas relativos à álgebra linear,
equações não lineares, equações diferenciais e algébrico-diferenciais, entre outros.
Suas funcionalidades podem ser estendidas ao usarmos sua própria linguagem ou
criando módulos em outras linguagens
Centro Educacional Uninorte 4
Instalando Octave (Linux/BSD)
Obter o Octave em um sistema Linux é simples, uma vez que seus pacotes estão

presentes nos repositórios de grandes distribuições, como:
Debian (http://www.debian.org), Gentoo (http://www.gentoo.org/),
Fedora (http://www.fedoraproject.org/), openSUSE (http://www.opensuse.org/),
Arch (http://www.archlinux.org), entre outras.
Para instalá-lo, utilize o gerenciador de pacotes da sua distribuição.
Sistemas BSD, como o FreeBSD (https://www.freebsd.org/) e o OpenBSD
(http://www.openbsd.org/), também possuem o Octave em seus repositórios.
Para obtê-lo em um BSD, consulte as instruções de instalação do seu sistema.
Centro Educacional Uninorte 5
Instalando Octave (Windows e Mac)
Em ambientes Windows, por sua vez, um pacote .exe pode ser obtido para
instalação em https://ftp.gnu.org/gnu/octave/windows/.
Após o download, a instalação do programa pode ser realizada normalmente.
Por outro lado, se o seu computador rodar o MacOS X, instale o Octave a partir das
instruções presentes em http://wiki.octave.org/Octave_for_MacOS_X.
Centro Educacional Uninorte 6
Instalando Octave (Android e outros)
Existe também uma versão do Octave portada para o Android, que pode ser obtida
no endereço http://play.google.com/store/apps/details?id=com.octave.
Por fim, caso prefira compilar seus próprios executáveis, o código-fonte do Octave
está disponível em ftp://ftp.gnu.org/gnu/octave.
Centro Educacional Uninorte 7
Executando o Octave
Após as telas iniciais, o Octave é executado em sua interface gráfica:

Centro Educacional Uninorte 8
Executando o Octave - conhecendo o ambiente
O prompt aparece na Command Window , área à direita da interface (ver imagem slide
anterior)
O formato do prompt é dado por dois sinais de "maior que" ( >> )
Além da Command Window , a área da direita oferece outras duas abas: Editor, um
editor de texto integrado, e Documentation, a área destinada à pesquisa da
documentação do Octave.
À esquerda há o File Browser , um gerenciador de arquivos; Workspace , um
gerenciador de variáveis; e Command History , o histórico de comandos digitados.
Acima tem a barra de menus com as opções (em PT-BR), Arquivo, Editar,
Depurar, Tools, Janela, Ajuda, Novidades
Centro Educacional Uninorte 9
Encerrando o Octave
Para encerrar o programa, é suficiente digitar no prompt exit ou quit e teclar Enter.
No terminal, o Octave também pode ser interrompido com a combinação de teclas
Ctrl + C.
A interface gráfica possui ainda a opção Exit no menu File.
Centro Educacional Uninorte 10
Primeiro programa em Octave
No prompt do Octave, digite:
1 > disp('Alô Mundo!'); 

Ao final do comando, tecle Enter .
A função disp mostra qualquer variável que for colocada entre parênteses na
próxima linha. Nesse caso, usamos uma string
Centro Educacional Uninorte 11
Continuando...
Podemos armazenar o texto a ser exibido em uma variável
1 > texto = 'Alô Mundo!'; 

2 > disp(texto);

O símbolo = (igual) é o operador de atribuição.
Com ele, atribuímos a expressão à direita do igual para o componente à esquerda
Centro Educacional Uninorte 12
Conseguindo ajuda
podemos obter ajuda utilizando o comando help
1 > help dist

Atenção: A LINGUAGEM MATLAB É CASE SENSITIVE!
Centro Educacional Uninorte 13
Operações básicas em Octave
A forma mais simples de trabalhar com o Octave é digitar os comandos

matemáticos, como em uma calculadora normal. Exemplo: somar 2+3
1 >> 2+3

Teclando Enter, tem-se o resultado:
ans = 5

O valor calculado é exibido e guardado na variável ans , do inglês
answer (resposta), e pode ser usado no cálculo seguinte:
2 >> ans+10

Centro Educacional Uninorte 14
Operadores Aritméticos
As operações aritméticas básicas são obtidas pelos seguintes operadores:
Operador Operação
- subtração
* multiplicação
/ divisão
^ potência
A ordem dos operadores é a usual
Centro Educacional Uninorte 15
Funções Matemáticas básicas
Função Descrição Uso Resultado
factorial Fatorial de n factorial(5) 120
Potência/Raiz Potenciação/Exponenciação power(2,4) 16
Raiz Quadrada Raiz quadrada sqrt(2) 1.4142
abs(x) Módulo de x abs(-4) 4
round(x) Arredonda o valor de x round(4.66657) 5
exp(x) Função exponencial exp(1) 2.71828
log10(x) Logaritmo de x na base 10 log(10) 1
en
Centro Educacional Uninorte 16
Funções Trigonométricas
Função Descrição
sin(x) Seno de x
cos(x) Cosseno de x
tan(x) Tangente de x
cot(x) Cotangente de x
As inversas iniciam com a letra a e as hiperbólicas finalizam com h
Centro Educacional Uninorte 17
Funções de Arredondamento
Função Descrição
round(x) Arredonda para o inteiro mais próximo.
fix(x) Arredonda para o inteiro positivo imediatamente menor.
ceil(x) Arredonda para o inteiro positivo imediatamente maior.
floor(x) Arredonda para o inteiro negativo imediatamente menor.
rem(x,y) Retorna o resto da divisão x por y.
sign(x) Função sinal. Retorna: 1 (se x > 0); -1(se x < 0); 0 (se x = 0)
Centro Educacional Uninorte 18
Dicas matemáticas importantes:
Há muitas outras funções matemáticas podendo ser observadas na documentação
Os ângulos usados como argumentos nas funções trigonométricas devem estar em
radianos
Para saber quais são as variáveis nomeadas, digita-se:
1 >> who

Para remover da área de trabalho uma variável já atribuída, usa-se o comando
clear , seguido do nome da variável. Limpar todas basta clear all
O comando whos Exibe uma lista de variáveis declaradas/ ativas na memória, com
o respectivo tamanho em bytes e a classe de armazenamento.
Centro Educacional Uninorte 19
Complexos
O número imaginário, equivalente à raiz quadrada de -1, é representado por i ou j.
Então, definimos números complexos no Octave por meio de suas

partes real e imaginária. Por exemplo:
1 > 3i 

2 > 2 + 3j 

A parte imaginária do número complexo é o número acompanhado de i. As duas

partes podem ser separadas por meio das funções real() e imag()
Centro Educacional Uninorte 20
Complexos 2
Podemos calcular também o ângulo entre o vetor que representa um número

complexo e o semieixo positivo das abscissas ( angle() ), ou seu conjugado
complexo ( conj() ):
1 > angle(1)

2 ans = 0 

3 > conj(1) 

4 ans = 1 

5 > angle(2+3i) 

6 ans = 0.98279 

7 > conj(2+3i) 

8 ans = 2 - 3i

Centro Educacional Uninorte 21
Formatação de Dados Numéricos
Comando Descrição
format short 4 dígitos decimais.
format long 14 dígitos decimais.
format short e Notação científica com 4 dígitos decimais.
format long e Notação científica com 15 dígitos decimais.
format short g 5 dígitos no total.
format long g 16 dígitos no total.
format bank 2 dígitos decimais.
Centro Educacional Uninorte 22
Variáveis predefinidas
Operação Símbolo
ans Valor da última expressão não atribuída a uma variável especificada.
pi Aproximação do número
e Aproximação do número
inf Infinito
i 0+1i
j O mesmo que i
NaN Abreviação de Not-a-Number . Valor numérico inválido. Por exemplo: .
π
e
0/0
Centro Educacional Uninorte 23
Tipos de dados
O Octave suporta três tipos de dados básicos:
Vetores: eles são objetos que podem ter várias dimensões e acomodar
elementos ordenados em seu interior.
Strings: uma string é um conjunto de caracteres. Um exemplo já citado é o Alô
Mundo!.
Estruturas: permitem a organização de dados por campos, podendo
armazenar vetores e strings.
Há a possibilidade de trabalhar com classes e com Orientação a Objeto(OO). Mais
informações na documentação oficial do programa
Não será usado OOP nessa cartilha.
Centro Educacional Uninorte 24
Vetores
Arrays em Octave são chamados de matrizes.
Matrizes unidimensionais são chamadas de vetores.
Use um espaço ou uma vírgula , para separar os elementos em uma linha e
ponto e vírgula ; para iniciar uma nova linha. Leia mais sobre matrizes siga este
link
Em Octave, vale a máxima tudo é um vetor! Mesmo os números simples são
tratados como vetores
Centro Educacional Uninorte 25
Vetores - Exemplos
Por exemplo, atribuiremos um número à variável A:
1 > A = 3 

2 A = 3 

Vejamos quais são as dimensões de A de acordo com o Octave.
Para isso, utilizaremos a função size() :
1 > size(A) 

ans =

1 1

O Octave diz que nossa variável A é um vetor de uma linha e uma

coluna.
Centro Educacional Uninorte 26
Vetores com mais elementos
Como exemplo, atribuiremos números de 1 a 5 ao vetor V:
1 > V = [1 2 3 4 5] 



V = 

1 2 3 4 5

Para acessar cada elemento de V, os parênteses são usados.
V(indice) em que indice é o índice do vetor (começando em 1)
O último elemento pode ser acessado com V(end)
Para o tamanho de V , use size(V) o resultado mostra 1 5 que diz que o vetor
tem uma linha e cinco colunas (vetor-linha)
Centro Educacional Uninorte 27
Vetor-coluna
Iniciamos novas linhas em um vetor usando ponto e vírgula ( ; ). Dessa forma,
podemos definir um vetor com apenas uma coluna, chamado de vetor-coluna:
>> vetor_coluna=[1;2;3;4;5]

vetor_coluna =

1

2

3

4

5

>>

Usando size(vetor_coluna) : 5 1 (cinco linhas e uma coluna)
Centro Educacional Uninorte 28
Matrizes
Podemos criar vetores com números de linhas e colunas diferentes de 1 (que são
as matrizes). Assim
>> A = [1 2 3; 3 2 1; 2 3 1]

A =

1 2 3

3 2 1

2 3 1

>>

As linhas de um vetor devem ter a mesma quantidade de elementos ou será
gerado um erro!
Para acessar um elemento usamos dois índices: A(1,2) 2
→
Centro Educacional Uninorte 29
Vetores - dicas úteis
a função numel() , que retorna o número de elementos de uma variável
length() retorna o comprimento de um vetor. Essa função escolhe o maior
número entre linhas e colunas
O primeiro índice (ao contrário de muitas linguagens de programação é 1)
Teremos uma aula separada desta cartilha só para vetores e matrizes
Centro Educacional Uninorte 30
Strings
Usaremos a seguinte variável como exemplo: str1 = 'Este um exemplo de string'
As strings são vetores no Octave!
>> str1

str1 = Este um exemplo de string

>> size(str1)

ans =

1 26

>> length(str1)

ans = 26

>> numel(str1)

ans = 26

>>

Centro Educacional Uninorte 31
Strings: Octave x MATLAB
O Octave aceita tanto as aspas simples como as duplas na definição de strings
mas o ambiente MATLAB da Mathworks não aceita as aspas duplas.
Caso você precise de compatibilidade de código, é recomendável usar apenas
aspas simples.
Centro Educacional Uninorte 32
Estruturas
Estruturas são variáveis mais complexas, que guardam várias informações
diferentes.
Criaremos uma agenda de endereços e telefones para mostrar como as estruturas
funcionam. Digite no prompt:
>> agenda(1).nome = 'Fulano';

>> agenda(1).endr = 'Abbey Road';

>> agenda(1).email = 'fulano@abbeyroad.com';

>> agenda(1).fone = '18990001234';

Centro Educacional Uninorte 33
Visualizando a estrutura criada
>> agenda

agenda =

scalar structure containing the fields:

nome = Fulano

endr = Abbey Road

email = fulano@abbeyroad.com

fone = 18990001234

>>

Centro Educacional Uninorte 34
Adicionando elementos na estrutura
Assim:
agenda(2).nome = 'Sicrano'; 

agenda(2).endr = 'Bourbon Street'; 

agenda(2).email = 'sicrano@bourbonst.com'; 

agenda(2).fone = '219943215300'; 

agenda(3).nome = 'Beltrano'; 

agenda(3).endr = 'Rua Augusta'; 

agenda(3).email = 'beltrano@ruaaugusta.com'; 

agenda(3).fone = '11912320091';

Centro Educacional Uninorte 35
Visualizando os novos elementos
>> agenda(2)

ans =

scalar structure containing the fields:

nome = Sicrano

endr = Bourbon Street

email = sicrano@bourbonst.com

fone = 219943215300

>> agenda(3)

ans =

scalar structure containing the fields:

nome = Beltrano

endr = Rua Augusta

email = beltrano@ruaaugusta.com

fone = 11912320091

>>

Centro Educacional Uninorte 36
Operadores de Identificação
Operador Função
isnumeric (x) retorna não nulo se x é um objeto numérico
ischar(s) retorna 1 se s é uma string
isreal (x) retorna não nulo se x é um objeto numérico real
isfloat (x) retorna não nulo se x é um objeto numérico pto. flutuante
iscomplex (x) retorna não nulo se x é um objeto numérico de valor complexo
ismatrix (a) retorna 1 se a é matriz, c/c zero
isvector (a) retorna 1 se a é vetor, c/c zero
Centro Educacional Uninorte 37
Matrizes e vetores
A construção de matrizes e vetores no Octave já está inclusa na instalação padrão
do programa.
Na sintaxe, o vetor é representado como um conjunto de números, separados em
linhas e colunas, organizados entre  [] , de modo que:
A separação por espaço  ou vírgula , representa números em uma mesma
linha da matriz;
A separação por  ; , nesse caso, representa números em diferentes linhas.
Centro Educacional Uninorte 38
Matrizes e vetores - Exemplo 1
1. Para construir um vetor linha x , basta criar a lista com seus elementos separados
por  ,  ou por espaço :
x=[1,2,3,4]

x =

1 2 3 4

Centro Educacional Uninorte 39
Matrizes e vetores - Exemplo 2
2. Para construir um vetor coluna y , basta criar a lista com seus elementos
separados por  ;
(não se preocupe, o ponto e vírgula no final do vetor continua existindo).
y=[1;2;3;4]

y =

1

2

3

4

Centro Educacional Uninorte 40
Matrizes e vetores - Exemplo 3
3. Para construir uma matriz M de 3 linhas e 4 colunas , teremos que usar todos os
separadores vistos anteriormente:
M = [1 2 3;4,5,6;7,8 9]

%Uma sugestão é fazer da seguinte forma

M = [1 2 3;

4 5 6;

7 8 9];

M =

1 2 3

4 5 6

7 8 9

Centro Educacional Uninorte 41
Matrizes e vetores - Exemplo 4
Obs: O Octave/Matlab aceita variáveis como entrada das matrizes.
Exemplo:
format bank

k=10;

x=sqrt(3)^5;

M = [k k^2 sqrt(k);

x sqrt(x) x/k;

pi 2*pi sin(pi)]

M =

10.00 100.00 3.16

15.59 3.95 1.56

3.14 6.28 0.00

Centro Educacional Uninorte 42
Raízes Reais
Para se encontrar as raízes reais de um polinômio, basta utilizar a função
roots(v) , que retorna em um vetor coluna, as raízes de um polinômio, cujos
coeficientes das potências em ordem decrescente são os elementos do vetor v. -
No exemplo 21, as raízes do polinômio: são -4 e 1
>> roots([1,3,-4])

ans =

-4

1

>>

x +
2 3x − 4
Centro Educacional Uninorte 43
Algumas funções nativas do Matlab/Octave - 1
zeros(m,n) : retorna uma matriz nula com m linhas e n colunas.
ones(m,n) : retorna uma matriz com todos os elementos igual a 1, com m linhas
e n colunas.
eye(m,n) : retorna uma matriz com a diagonal principal com elementos iguais a 1
e os outros elementos iguais a zero, com m linhas e n colunas.
length(A) : retorna o número de elementos no vetor A.
size(A) : retorna um vetor linha [m,n] onde m e n representam a dimensão da
linha e coluna respectivamente.
reshape(A,m,n) : rearranja uma matriz A com r linhas e s colunas para m linhas
e n colunas. r vezes s deve ser numericamente igual a m vezes n.
Centro Educacional Uninorte 44
Algumas funções nativas do Matlab/Octave - 2
diag(v) : quando v é um vetor, cria uma matriz quadrada contendo os elementos
de v na diagonal principal. Quando v é uma matriz, cria um vetor coluna a partir
dos elementos na diagonal principal.
round(v) : quando v é uma matriz, os elementos são arredondados para o inteiro
mais próximo, no caso de a parte fracion ́
aria ser igual a 0,5 o elemento é
arredondado para o inteiro maior.
rand** ou **rand() : retorna um número aleatório entre 0 e 1.
rand(m,n) : retorna uma matriz m×n com elementos aleatórios entre 0 e 1.
randperm(n) : retorna um vetor linha com n elementos que são a permutação
aleatória dos inteiros de 1 até n.
randn(m,n) : retorna uma matriz m×n com média 0 e desvio-padrão 1.
Centro Educacional Uninorte 45
Algumas funções nativas do Matlab/Octave - 3
median(A) : se A é um vetor, retorna o valor mediano dos elementos do vetor.
mean(A) : se A é um vetor, retorna o valor médio dos elementos do vetor. Se A é
uma matriz retorna um vetor linha com a media de cada coluna.
sort(A) : se A é um vetor, ordena os elementos de A na ordem crescente. Se A é
uma matriz, ordena os elementos de cada coluna.
C = max(A) : se A é um vetor, C receberá o maior elemento de A. Se A é uma
matriz, C é um vetor linha contendo o maior elemento em cada coluna de A.
[d n]=max(A) : se A é um vetor, d recebe o maior elemento de A e n indica a
posição desse elemento no vetor (a primeira posição, caso o elemento não seja
único).
Centro Educacional Uninorte 46
Algumas funções nativas do Matlab/Octave - 4
min(A) : semelhante à função max(A), porém retorna o minimo.
[d,n]=min(A) : semelhante à função [d,n]=max(A), porém retorna o minimo.
sum(A) : se A é um vetor, retorna a soma dos elementos do vetor. Se A é uma
matriz retorna um vetor linha com a soma de cada coluna.
std(A) : se A é um vetor, retorna o desvio-padrão dos elementos do vetor.
det(A) : retorna o determinante da matriz quadrada A.
dot(a,b) : determina o produto escalar de dois vetores a e b.
cross(a,b) : determina o produto vetorial de dois vetores a e b. Os dois vetores
devem possuir três elementos.
Centro Educacional Uninorte 47
Gráficos em MATLAB e Octave
Os gráficos em duas dimensões são os mais comuns por serem de simples
entendimento e representação.
Tais gráficos podem ser de coordenadas cartesianas ou polares
Comandos para gerar gráficos
plot(x, y) : gera gráficos lineares com x sendo a variável independente e y a
variável dependente
plot(x, y, z, w) : Plota dois gráficos (ou mais, dependendo do número de
argumentos). O MATLAB seleciona linhas diferentes para cada gráfico
Centro Educacional Uninorte 48
Gráficos - Exemplo 1
>> plot ([1, 2, 3], [4, 3, 6], [1, 2, 3], [5, 7, 6])

Dois gráficos em uma só figura
(gerados pelo código acima)
Um gráfico é gerado pelo par de
vetores [1, 2, 3], [4, 3, 6] e
outro pelo par [1, 2, 3], [5,
7, 6] 

Centro Educacional Uninorte 49
Comandos auxiliares para gráficos
title("texto") : Comando para adicionar um título (texto) ao topo do gráfico;
xlabel("texto") : Escreve unia legenda no eixo x;
ylabel("texto") : Escreve uma legenda no eixo x;
text( x, y, "texto") : Escreve um texto no ponto (x, y). Se x e y são vetores, o
texto é escrito a cada ponto;
gtext("texto") : Escreve um texto no ponto determinado pela posição do mouse
no gráfico;
legend( 'textol', 'texto2', ... ) : Coloca legendas nos gráficos, na ordem em
que eles foram plotados, no canto superior direito da figura;
Centro Educacional Uninorte 50
Outros comandos auxiliares para gráficos
legend( textol', 'texto2', location', pos ) : Coloca as legendas na posição
indicada por "pos", que podem ser: north, south, east, weast, northeast, northwest,
southeast, Southwest.
grid on : Adiciona grades no gráfico plotado;
grid off : Retira as grades do gráfico corrente:
hold on e hold off : Usa-se para plotar outro gráfico na mesma figura. Este
comando mantém o gráfico antigo até que o hold off seja usado. Assim, consegue-
se sobrepor os gráficos.
axis(v) : Este comando é utilizado para representar o gráfico em uma
determinada faixa de valores determinada pelo vetor v . O vetor tem como
elementos os valores mínimo e máximo dos eixos x e y ([xmin xmax ymin ymax]).
Centro Educacional Uninorte 51
Parâmetros para axis e plot
axis 'parâmetro' : Se o parâmetro for square , a função transforma a região do
gráfico em quadrada ou cúbica.
Se for tight , ela ajusta a região de acordo com os dados.
Se for normal , ela remove qualquer ajuste definido e ajusta o gráfico da
melhor forma possível.
plot ( x, y, 'parâmetro' ) : 'parâmetro' é uma combinação de características,
tipo de linha, de marcador e de cor, que se deseja aplicar ao gráfico.
Não há ordem específica para a combinação dos parâmetros nem é necessário
determinar os três. Veja tabela no próximo slide
Centro Educacional Uninorte 52
Opções do plot para MATLAB e Octave (cores)
Cor código
Vermelho 'r'
Verde 'g'
Azul 'b'
Ciano 'c'
Magenta 'm'
Amarelo 'y'
Preto / Branco 'k' / 'w'
Centro Educacional Uninorte 53
Opções do plot para MATLAB e Octave (linestyle)
Descrição Código
Linha sólida (padrão) '−'
Tracejado '−−'
Pontilhado ':'
Traço e ponto '−.'
Centro Educacional Uninorte 54
Opções do plot para MATLAB e Octave (mark -
marcadores) - 1
Código Descrição
'o' Círculo
'+' Sinal de +
'*' Asterisco
'.' Ponto
'x' X
'_' Linha horizontal
Centro Educacional Uninorte 55
Opções do plot para MATLAB e Octave (mark -
marcadores) - 2
Código Descrição
'|' Linha Vertical
'square' or 's' Quadrado
'diamond' or 'd' Losango
'^' Acento circunflexo
'v' Letra V
Centro Educacional Uninorte 56
Opções do plot para MATLAB e Octave (mark -
marcadores) - 3
Código Descrição
'>' Símbolo de maior
'<' Símbolo de menor
'pentagram' or 'p' Pentagrama
'hexagram' or 'h' Hexagrama
Centro Educacional Uninorte 57
Funções Especiais de Plotagem em 2 Dimensões
bar(x,y) , Dados 2 vetores de dados x e y, é produzido um gráfico de

barras. Se somente um argumento é dado, pegamos os valores de y, e as
coordenadas x são colocadas para ser o índice dos elementos.
´ equivalente a: [xb,yb] = bar(x,y); plot(xb,yb) ;
loglog(args) , Plota em escala logarítmica ambos os eixos.
polar(θ, ρ) , Faz um gráfico de acordo com as coordenadas polares θ e ρ.
semilogy(args) , Gráfico logarítmico somente no eixo y.
semilogx(args) , Gráfico logarítmico somente no eixo x.
stairs(x, y) , Gráfico em degrau.
loglog(args) , Plota em escala logarítmica ambos os eixos.
Centro Educacional Uninorte 58
Plotando em 3 dimensões
Há muitas formas de se criar um gráfico 3D. Primeiro é necessário gerar a malha de
dados a serem visualizados(usando o recurso meshgrid ).
Para executar a visualização 3D pode-se utilizar o comando mesh e para geração
de contornos, o comando contour
Centro Educacional Uninorte 59
Plotando em 3
dimensões
Exemplo:
>> [x,y]=meshgrid(-4:0.6:4,-3:0.6:3);

>> z=x.^2+y.^2;

>> grid;

>> xlabel('eixo x');

>> ylabel('eixo y');

>> zlabel('eixo z');

>> title('Exemplo de Mesh');

>> mesh(x,y,z);

Centro Educacional Uninorte 60
Como Salvar os Gráficos
No Octave o processo de gravação de um determinado gráfico utiliza a seguinte
sequência de comandos:
>> gset term postscript eps 22

>> gset output "nome do grafico.ps"

>> replot

Centro Educacional Uninorte 61
Funções estatísticas mais comuns - 1
Função: mean(x) :
Se x é uma matriz, esta função irá computar o significado para cada coluna e
retorná-las em um vetor linha.
Função: median(x)
Esta função calcula a mediana do vetor x.
Função: std(x) :
Esta função calcula o desvio-padrão do vetor x.
Centro Educacional Uninorte 62
Funções estatísticas mais comuns - 2
Função: cov(x,y)
Cada linha de x e y é uma observação e cada coluna é uma variável. A entrada
(i,j) ordem de cov(x) é a covariância entre a variável de ordem i em x, e a
variável de ordem j em y.
Função: corrcoef(x,y)
Esta função faz a correlação entre a variável de ordem i em x, e a variável de
ordem j em y.
Centro Educacional Uninorte 63
Programação
Um algoritmo é uma sequência finita de ações executáveis, precisos e não
ambíguos a fim de obter uma solução para um determinado problema.
Já a linguagem de programação traduz um algoritmo (sequência de
instruções/ações) da linguagem humana para a linguagem de máquina.
Centro Educacional Uninorte 64
Pseudocódigo
Uma maneira eficiente de projetar um algoritmo é por meio de um pseudo código.
Por exemplo, se eu quero escrever um algoritmo que devolve o módulo de um
número, em qualquer linguagem de programação, seu pseudocódigo pode ser
escrito da seguinte forma:
Dado um número a

Se a >= 0, então

modulo = a

Senão

modulo=-a

retorna modulo

Centro Educacional Uninorte 65
Programação
Em C, por exemplo, o algoritmo acima poderia ser escrita como uma função, e
ficaria assim:
double modulo(double x){

double m; 

if (x >= 0){

m = x; 

} else {

m = -x; 

} 

return m; 

}

Centro Educacional Uninorte 66
Programação
Em Python, por exemplo, esse mesma função ficaria
def modulo(x):

if x >= 0:

m = x 

else:

m = -x 

return m

Centro Educacional Uninorte 67
Programação
Cada linguagem de programação tem suas características. No Matlab/Octave, por
exemplo, a mesma função acima ficaria:
function m = modulo(x)

if x >= 0 

m = x; 

else m = -x; 

end 

end 

>> m1 = modulo(-2) m2 = modulo(-2332)

>> m1 = 2 m2 = 2332

Centro Educacional Uninorte 68
Observações importantes 1
Algumas observações importantes na hora de criarmos nossos algoritmos aqui no
Octave/Matlab:
Todo texto depois de % é considerado um comentário;
O caractere ... indica que o comando continua na próxima linha. Tal recurso
permite deixar o texto mais organizado;
Usa-se o ponto e vírgula ; (lembra dele?) no final de uma linha de comando.
Ele omite na janela de comandos as iterações que serão realizadas (mantém a
janela de comando mais limpa e organizada);
Pode-se colocar mais de um comando em uma linha, separando-os por ponto
e vírgula;
Centro Educacional Uninorte 69
Observações importantes 2
Os nomes das variáveis devem ser palavras únicas, sem inclusão de espaços e
devem começar com uma letra, seguida de letras ou números, podendo conter até
19 caracteres;
Para a entrada de dados via teclado usa-se a função input ;
Para mostrar mensagens de texto na tela utiliza-se o comando disp .
Você pode usar a função tic/toc para contar o tempo de execução do algoritmo.
Por exemplo:
tic; 

% algoritmo 

toc;

Centro Educacional Uninorte 70
Comando lógico-relacionais
Operações lógicas Descrição
∼ Negação
| ... ou ...
& ... e ...
OBS: Operações curto-circuito
expr1 && expr2 representa a operação lógica ... e ... e aplica um comportamento
de curto circuito no código. Isto é, expr2 não é avaliada se expr1 é falso.
expr1 || expr2 representa a operação lógica ... ou ... e aplica um comportamento
de curto circuito no código. Isto é, expr2 não é avaliada se expr1 for verdadeira.
Centro Educacional Uninorte 71
Operadores relacionais
Operações relacionais Descrição
== Igual a
∼= Diferente
< menor do que
> maior do que
<= menor ou igual a (≤)
>= maior ou igual a (≥)
O Octave/Matlab possui estruturas que permitem o controle do fluxo de execução
de comandos e da ordem em que a computação é feita.
Centro Educacional Uninorte 72
Laço for
A estrutura for possibilita que um bloco de código seja repetido por um número
de vezes fixo e predefinido. Sua sintaxe é:
for variável = início:passo:fim 

% comandos 

end

Centro Educacional Uninorte 73
Exemplo for
N = input('Digite um número natural: ');

disp(' ')

disp('Método 1 - Laço FOR')

disp(' ')

soma = 0;

tic;

for n = 1:N

soma = soma + n;

end

disp(['A soma de 1 até ' num2str(N) ' é ' num2str(soma)]);

toc;

Centro Educacional Uninorte 74
Observação sobre o tempo
Laços for nem sempre são a melhor forma de construir um algoritmo, em
Matlab/Octave.
Vamos escrever o mesmo algoritmo acima usando vetores e funções nativas.
Em seguida, comparar os tempos.
Centro Educacional Uninorte 75
Soma - funções nativas
disp(' ')

disp('Método 2 - vetores e funções nativas')

disp(' ')

tic;

t = [1:N];

soma2 = sum(t);

disp(['A soma de 1 até ' num2str(N) ' é ' num2str(soma)]);

toc;

Centro Educacional Uninorte 76
Comparação tempos:
>> soma

Digite um número natural: 100

Método 1 - Laço FOR

A soma de 1 até 100 é 5050

Elapsed time is 0.051239 seconds.

>> soma2

Método 2 - vetores e funções nativas

A soma de 1 até 100 é 5050

Elapsed time is 0.00329399 seconds.

Centro Educacional Uninorte 77
Laço while
A estrutura while é utilizada quando é necessário repetir certo comando de código
várias vezes, enquanto uma determinada condição é satisfeita.
Geralmente, usa-se while quando não se sabe ao certo a quantidade de passos a
serem dados pelo algoritmo.
Sintaxe:
while expressão 

comandos 

end

Centro Educacional Uninorte 78
Exemplo while 1
1. Encontre o menor número
x=1;

n=0;

while x>1e-12

n = n+1;

x = x/2;

end

disp(['Quando n = ' num2str(n) ', a sequência 1/(2^n) chegou a ' num2str(x)]);

>> menor_numero_n

Quando n = 40, a sequência 1/(2^n) chegou a 9.0949e-13

n ∈ N ∪ {0} tal que  ​ <
2n
1
10 12
−
Centro Educacional Uninorte 79
If, Elseif e Else
A estrutura if é usada para executar um bloco de comandos apenas se uma
determinada condição for satisfeita.
Sintaxe:
if expressão1

% comandos 1

elseif expressão2

% comandos 2

elseif expressão3

% comandos 3

else

% comandos 4

end

Centro Educacional Uninorte 80
Exemplo If
Fazer um programa que diga se a pessoa é adulta, adolescente, criança ou idosa,
com base na idade fornecida. Use o comando While para fazer o usuário digitar
uma idade maior do que zero.
Centro Educacional Uninorte 81
idade_correta = false;

while ~idade_correta

idade = input('Informe sua idade: ');

if idade > 0

idade_correta = true;
end

end

if idade < 12

disp('Você é uma criança.')

elseif idade >= 12 & idade < 18

disp('Você é um adolescente.')

elseif idade >= 18 & idade < 65

disp('Você é um adulto.')
else

disp('Você é um idoso')

end

if idade > 150

disp(' ')

disp(' ')

disp(' ')

disp('... Matusalém, é você?')

end

Centro Educacional Uninorte 82
Switch, case, otherwise
O switch executa uma ação dentre várias opções, dependendo de um parâmetro
passado inicialmente, onde cada escolha é um caso.
Sintaxe:
switch variável_de_teste

case{caso1}

% comandos1

case{caso2}

% comandos2

case{caso3}

% comandos3

otherwise

% comandos

end

Centro Educacional Uninorte 83
Exemplo switch
Construir um programa onde o usuário digita dois números e indica se irá somá-
los, multiplicá-los ou subtraí-los.
Centro Educacional Uninorte 84
n = input('Digite um número: '); m = input('Digite um número: ');

operacao = input('Digite: 1 para somá-los; 2 para subtraí-los; 3 para multiplicá-los. Opção: ');

switch operacao

case{1}

oper='+';

x=n+m;

case{2}

oper='-';

x=n-m;

case{3}

oper='*';

x=m*n;

otherwise

x=NaN;

disp('Essa não é uma operação válida')

end

if x ~= NaN

disp([num2str(n) oper num2str(m) '=' num2str(x)])

end

Centro Educacional Uninorte 85
Funções
Muitas vezes queremos criar funções que ainda não estão na biblioteca virtual do
Octave/MATLAB. Para isso temos o comando function , que obedece a seguinte
sintaxe:
function[saida] = nomedafuncao(entrada)

% Comentário da função, que aparecerá quando fizer '>>> help nomedafuncao'

<comandos>

end

Centro Educacional Uninorte 86
Dúvidas
Centro Educacional Uninorte 87

Cartilha de Octave para Matematica Computacional.pdf

  • 1.
    Cartilha de Octavepara Matemática Computacional Edkallenn Lima Mestre em Ciência da Computação, Policial Federal e Professor Centro Educacional Uninorte
  • 2.
    Introdução A proposta destacartilha é apresentar uma introdução à computação científica por meio do software GNU Octave, que possui estrutura similar à da linguagem Matlab. Matlab é uma linguagem de programação interpretada de alto nível, criada por Cleve Moler no fim da década de 1970. Centro Educacional Uninorte 2
  • 3.
    Octave Voltada ao cálculomatricial, à computação, visualização e programação numérica, suas ferramentas e funções matemáticas embutidas permitem implementar algoritmos mais rapidamente que utilizando ferramentas (como o Microsoft Excel) ou linguagens compiladas (como C, C++ ou Fortran). O GNU Octave é um software livre que compartilha da filosofia GNU foi criado por John Eaton e vários colaboradores (veja a lista completa em http://goo.gl/IzGafp Centro Educacional Uninorte 3
  • 4.
    Ferramentas Octave Ele dispõede ferramentas para a resolução de problemas relativos à álgebra linear, equações não lineares, equações diferenciais e algébrico-diferenciais, entre outros. Suas funcionalidades podem ser estendidas ao usarmos sua própria linguagem ou criando módulos em outras linguagens Centro Educacional Uninorte 4
  • 5.
    Instalando Octave (Linux/BSD) Obtero Octave em um sistema Linux é simples, uma vez que seus pacotes estão presentes nos repositórios de grandes distribuições, como: Debian (http://www.debian.org), Gentoo (http://www.gentoo.org/), Fedora (http://www.fedoraproject.org/), openSUSE (http://www.opensuse.org/), Arch (http://www.archlinux.org), entre outras. Para instalá-lo, utilize o gerenciador de pacotes da sua distribuição. Sistemas BSD, como o FreeBSD (https://www.freebsd.org/) e o OpenBSD (http://www.openbsd.org/), também possuem o Octave em seus repositórios. Para obtê-lo em um BSD, consulte as instruções de instalação do seu sistema. Centro Educacional Uninorte 5
  • 6.
    Instalando Octave (Windowse Mac) Em ambientes Windows, por sua vez, um pacote .exe pode ser obtido para instalação em https://ftp.gnu.org/gnu/octave/windows/. Após o download, a instalação do programa pode ser realizada normalmente. Por outro lado, se o seu computador rodar o MacOS X, instale o Octave a partir das instruções presentes em http://wiki.octave.org/Octave_for_MacOS_X. Centro Educacional Uninorte 6
  • 7.
    Instalando Octave (Androide outros) Existe também uma versão do Octave portada para o Android, que pode ser obtida no endereço http://play.google.com/store/apps/details?id=com.octave. Por fim, caso prefira compilar seus próprios executáveis, o código-fonte do Octave está disponível em ftp://ftp.gnu.org/gnu/octave. Centro Educacional Uninorte 7
  • 8.
    Executando o Octave Apósas telas iniciais, o Octave é executado em sua interface gráfica: Centro Educacional Uninorte 8
  • 9.
    Executando o Octave- conhecendo o ambiente O prompt aparece na Command Window , área à direita da interface (ver imagem slide anterior) O formato do prompt é dado por dois sinais de "maior que" ( >> ) Além da Command Window , a área da direita oferece outras duas abas: Editor, um editor de texto integrado, e Documentation, a área destinada à pesquisa da documentação do Octave. À esquerda há o File Browser , um gerenciador de arquivos; Workspace , um gerenciador de variáveis; e Command History , o histórico de comandos digitados. Acima tem a barra de menus com as opções (em PT-BR), Arquivo, Editar, Depurar, Tools, Janela, Ajuda, Novidades Centro Educacional Uninorte 9
  • 10.
    Encerrando o Octave Paraencerrar o programa, é suficiente digitar no prompt exit ou quit e teclar Enter. No terminal, o Octave também pode ser interrompido com a combinação de teclas Ctrl + C. A interface gráfica possui ainda a opção Exit no menu File. Centro Educacional Uninorte 10
  • 11.
    Primeiro programa emOctave No prompt do Octave, digite: 1 > disp('Alô Mundo!'); Ao final do comando, tecle Enter . A função disp mostra qualquer variável que for colocada entre parênteses na próxima linha. Nesse caso, usamos uma string Centro Educacional Uninorte 11
  • 12.
    Continuando... Podemos armazenar otexto a ser exibido em uma variável 1 > texto = 'Alô Mundo!'; 2 > disp(texto); O símbolo = (igual) é o operador de atribuição. Com ele, atribuímos a expressão à direita do igual para o componente à esquerda Centro Educacional Uninorte 12
  • 13.
    Conseguindo ajuda podemos obterajuda utilizando o comando help 1 > help dist Atenção: A LINGUAGEM MATLAB É CASE SENSITIVE! Centro Educacional Uninorte 13
  • 14.
    Operações básicas emOctave A forma mais simples de trabalhar com o Octave é digitar os comandos matemáticos, como em uma calculadora normal. Exemplo: somar 2+3 1 >> 2+3 Teclando Enter, tem-se o resultado: ans = 5 O valor calculado é exibido e guardado na variável ans , do inglês answer (resposta), e pode ser usado no cálculo seguinte: 2 >> ans+10 Centro Educacional Uninorte 14
  • 15.
    Operadores Aritméticos As operaçõesaritméticas básicas são obtidas pelos seguintes operadores: Operador Operação - subtração * multiplicação / divisão ^ potência A ordem dos operadores é a usual Centro Educacional Uninorte 15
  • 16.
    Funções Matemáticas básicas FunçãoDescrição Uso Resultado factorial Fatorial de n factorial(5) 120 Potência/Raiz Potenciação/Exponenciação power(2,4) 16 Raiz Quadrada Raiz quadrada sqrt(2) 1.4142 abs(x) Módulo de x abs(-4) 4 round(x) Arredonda o valor de x round(4.66657) 5 exp(x) Função exponencial exp(1) 2.71828 log10(x) Logaritmo de x na base 10 log(10) 1 en Centro Educacional Uninorte 16
  • 17.
    Funções Trigonométricas Função Descrição sin(x)Seno de x cos(x) Cosseno de x tan(x) Tangente de x cot(x) Cotangente de x As inversas iniciam com a letra a e as hiperbólicas finalizam com h Centro Educacional Uninorte 17
  • 18.
    Funções de Arredondamento FunçãoDescrição round(x) Arredonda para o inteiro mais próximo. fix(x) Arredonda para o inteiro positivo imediatamente menor. ceil(x) Arredonda para o inteiro positivo imediatamente maior. floor(x) Arredonda para o inteiro negativo imediatamente menor. rem(x,y) Retorna o resto da divisão x por y. sign(x) Função sinal. Retorna: 1 (se x > 0); -1(se x < 0); 0 (se x = 0) Centro Educacional Uninorte 18
  • 19.
    Dicas matemáticas importantes: Hámuitas outras funções matemáticas podendo ser observadas na documentação Os ângulos usados como argumentos nas funções trigonométricas devem estar em radianos Para saber quais são as variáveis nomeadas, digita-se: 1 >> who Para remover da área de trabalho uma variável já atribuída, usa-se o comando clear , seguido do nome da variável. Limpar todas basta clear all O comando whos Exibe uma lista de variáveis declaradas/ ativas na memória, com o respectivo tamanho em bytes e a classe de armazenamento. Centro Educacional Uninorte 19
  • 20.
    Complexos O número imaginário,equivalente à raiz quadrada de -1, é representado por i ou j. Então, definimos números complexos no Octave por meio de suas partes real e imaginária. Por exemplo: 1 > 3i 2 > 2 + 3j A parte imaginária do número complexo é o número acompanhado de i. As duas partes podem ser separadas por meio das funções real() e imag() Centro Educacional Uninorte 20
  • 21.
    Complexos 2 Podemos calculartambém o ângulo entre o vetor que representa um número complexo e o semieixo positivo das abscissas ( angle() ), ou seu conjugado complexo ( conj() ): 1 > angle(1) 2 ans = 0 3 > conj(1) 4 ans = 1 5 > angle(2+3i) 6 ans = 0.98279 7 > conj(2+3i) 8 ans = 2 - 3i Centro Educacional Uninorte 21
  • 22.
    Formatação de DadosNuméricos Comando Descrição format short 4 dígitos decimais. format long 14 dígitos decimais. format short e Notação científica com 4 dígitos decimais. format long e Notação científica com 15 dígitos decimais. format short g 5 dígitos no total. format long g 16 dígitos no total. format bank 2 dígitos decimais. Centro Educacional Uninorte 22
  • 23.
    Variáveis predefinidas Operação Símbolo ansValor da última expressão não atribuída a uma variável especificada. pi Aproximação do número e Aproximação do número inf Infinito i 0+1i j O mesmo que i NaN Abreviação de Not-a-Number . Valor numérico inválido. Por exemplo: . π e 0/0 Centro Educacional Uninorte 23
  • 24.
    Tipos de dados OOctave suporta três tipos de dados básicos: Vetores: eles são objetos que podem ter várias dimensões e acomodar elementos ordenados em seu interior. Strings: uma string é um conjunto de caracteres. Um exemplo já citado é o Alô Mundo!. Estruturas: permitem a organização de dados por campos, podendo armazenar vetores e strings. Há a possibilidade de trabalhar com classes e com Orientação a Objeto(OO). Mais informações na documentação oficial do programa Não será usado OOP nessa cartilha. Centro Educacional Uninorte 24
  • 25.
    Vetores Arrays em Octavesão chamados de matrizes. Matrizes unidimensionais são chamadas de vetores. Use um espaço ou uma vírgula , para separar os elementos em uma linha e ponto e vírgula ; para iniciar uma nova linha. Leia mais sobre matrizes siga este link Em Octave, vale a máxima tudo é um vetor! Mesmo os números simples são tratados como vetores Centro Educacional Uninorte 25
  • 26.
    Vetores - Exemplos Porexemplo, atribuiremos um número à variável A: 1 > A = 3 2 A = 3 Vejamos quais são as dimensões de A de acordo com o Octave. Para isso, utilizaremos a função size() : 1 > size(A) ans = 1 1 O Octave diz que nossa variável A é um vetor de uma linha e uma coluna. Centro Educacional Uninorte 26
  • 27.
    Vetores com maiselementos Como exemplo, atribuiremos números de 1 a 5 ao vetor V: 1 > V = [1 2 3 4 5] V = 1 2 3 4 5 Para acessar cada elemento de V, os parênteses são usados. V(indice) em que indice é o índice do vetor (começando em 1) O último elemento pode ser acessado com V(end) Para o tamanho de V , use size(V) o resultado mostra 1 5 que diz que o vetor tem uma linha e cinco colunas (vetor-linha) Centro Educacional Uninorte 27
  • 28.
    Vetor-coluna Iniciamos novas linhasem um vetor usando ponto e vírgula ( ; ). Dessa forma, podemos definir um vetor com apenas uma coluna, chamado de vetor-coluna: >> vetor_coluna=[1;2;3;4;5] vetor_coluna = 1 2 3 4 5 >> Usando size(vetor_coluna) : 5 1 (cinco linhas e uma coluna) Centro Educacional Uninorte 28
  • 29.
    Matrizes Podemos criar vetorescom números de linhas e colunas diferentes de 1 (que são as matrizes). Assim >> A = [1 2 3; 3 2 1; 2 3 1] A = 1 2 3 3 2 1 2 3 1 >> As linhas de um vetor devem ter a mesma quantidade de elementos ou será gerado um erro! Para acessar um elemento usamos dois índices: A(1,2) 2 → Centro Educacional Uninorte 29
  • 30.
    Vetores - dicasúteis a função numel() , que retorna o número de elementos de uma variável length() retorna o comprimento de um vetor. Essa função escolhe o maior número entre linhas e colunas O primeiro índice (ao contrário de muitas linguagens de programação é 1) Teremos uma aula separada desta cartilha só para vetores e matrizes Centro Educacional Uninorte 30
  • 31.
    Strings Usaremos a seguintevariável como exemplo: str1 = 'Este um exemplo de string' As strings são vetores no Octave! >> str1 str1 = Este um exemplo de string >> size(str1) ans = 1 26 >> length(str1) ans = 26 >> numel(str1) ans = 26 >> Centro Educacional Uninorte 31
  • 32.
    Strings: Octave xMATLAB O Octave aceita tanto as aspas simples como as duplas na definição de strings mas o ambiente MATLAB da Mathworks não aceita as aspas duplas. Caso você precise de compatibilidade de código, é recomendável usar apenas aspas simples. Centro Educacional Uninorte 32
  • 33.
    Estruturas Estruturas são variáveismais complexas, que guardam várias informações diferentes. Criaremos uma agenda de endereços e telefones para mostrar como as estruturas funcionam. Digite no prompt: >> agenda(1).nome = 'Fulano'; >> agenda(1).endr = 'Abbey Road'; >> agenda(1).email = 'fulano@abbeyroad.com'; >> agenda(1).fone = '18990001234'; Centro Educacional Uninorte 33
  • 34.
    Visualizando a estruturacriada >> agenda agenda = scalar structure containing the fields: nome = Fulano endr = Abbey Road email = fulano@abbeyroad.com fone = 18990001234 >> Centro Educacional Uninorte 34
  • 35.
    Adicionando elementos naestrutura Assim: agenda(2).nome = 'Sicrano'; agenda(2).endr = 'Bourbon Street'; agenda(2).email = 'sicrano@bourbonst.com'; agenda(2).fone = '219943215300'; agenda(3).nome = 'Beltrano'; agenda(3).endr = 'Rua Augusta'; agenda(3).email = 'beltrano@ruaaugusta.com'; agenda(3).fone = '11912320091'; Centro Educacional Uninorte 35
  • 36.
    Visualizando os novoselementos >> agenda(2) ans = scalar structure containing the fields: nome = Sicrano endr = Bourbon Street email = sicrano@bourbonst.com fone = 219943215300 >> agenda(3) ans = scalar structure containing the fields: nome = Beltrano endr = Rua Augusta email = beltrano@ruaaugusta.com fone = 11912320091 >> Centro Educacional Uninorte 36
  • 37.
    Operadores de Identificação OperadorFunção isnumeric (x) retorna não nulo se x é um objeto numérico ischar(s) retorna 1 se s é uma string isreal (x) retorna não nulo se x é um objeto numérico real isfloat (x) retorna não nulo se x é um objeto numérico pto. flutuante iscomplex (x) retorna não nulo se x é um objeto numérico de valor complexo ismatrix (a) retorna 1 se a é matriz, c/c zero isvector (a) retorna 1 se a é vetor, c/c zero Centro Educacional Uninorte 37
  • 38.
    Matrizes e vetores Aconstrução de matrizes e vetores no Octave já está inclusa na instalação padrão do programa. Na sintaxe, o vetor é representado como um conjunto de números, separados em linhas e colunas, organizados entre  [] , de modo que: A separação por espaço  ou vírgula , representa números em uma mesma linha da matriz; A separação por  ; , nesse caso, representa números em diferentes linhas. Centro Educacional Uninorte 38
  • 39.
    Matrizes e vetores- Exemplo 1 1. Para construir um vetor linha x , basta criar a lista com seus elementos separados por  ,  ou por espaço : x=[1,2,3,4] x = 1 2 3 4 Centro Educacional Uninorte 39
  • 40.
    Matrizes e vetores- Exemplo 2 2. Para construir um vetor coluna y , basta criar a lista com seus elementos separados por  ; (não se preocupe, o ponto e vírgula no final do vetor continua existindo). y=[1;2;3;4] y = 1 2 3 4 Centro Educacional Uninorte 40
  • 41.
    Matrizes e vetores- Exemplo 3 3. Para construir uma matriz M de 3 linhas e 4 colunas , teremos que usar todos os separadores vistos anteriormente: M = [1 2 3;4,5,6;7,8 9] %Uma sugestão é fazer da seguinte forma M = [1 2 3; 4 5 6; 7 8 9]; M = 1 2 3 4 5 6 7 8 9 Centro Educacional Uninorte 41
  • 42.
    Matrizes e vetores- Exemplo 4 Obs: O Octave/Matlab aceita variáveis como entrada das matrizes. Exemplo: format bank k=10; x=sqrt(3)^5; M = [k k^2 sqrt(k); x sqrt(x) x/k; pi 2*pi sin(pi)] M = 10.00 100.00 3.16 15.59 3.95 1.56 3.14 6.28 0.00 Centro Educacional Uninorte 42
  • 43.
    Raízes Reais Para seencontrar as raízes reais de um polinômio, basta utilizar a função roots(v) , que retorna em um vetor coluna, as raízes de um polinômio, cujos coeficientes das potências em ordem decrescente são os elementos do vetor v. - No exemplo 21, as raízes do polinômio: são -4 e 1 >> roots([1,3,-4]) ans = -4 1 >> x + 2 3x − 4 Centro Educacional Uninorte 43
  • 44.
    Algumas funções nativasdo Matlab/Octave - 1 zeros(m,n) : retorna uma matriz nula com m linhas e n colunas. ones(m,n) : retorna uma matriz com todos os elementos igual a 1, com m linhas e n colunas. eye(m,n) : retorna uma matriz com a diagonal principal com elementos iguais a 1 e os outros elementos iguais a zero, com m linhas e n colunas. length(A) : retorna o número de elementos no vetor A. size(A) : retorna um vetor linha [m,n] onde m e n representam a dimensão da linha e coluna respectivamente. reshape(A,m,n) : rearranja uma matriz A com r linhas e s colunas para m linhas e n colunas. r vezes s deve ser numericamente igual a m vezes n. Centro Educacional Uninorte 44
  • 45.
    Algumas funções nativasdo Matlab/Octave - 2 diag(v) : quando v é um vetor, cria uma matriz quadrada contendo os elementos de v na diagonal principal. Quando v é uma matriz, cria um vetor coluna a partir dos elementos na diagonal principal. round(v) : quando v é uma matriz, os elementos são arredondados para o inteiro mais próximo, no caso de a parte fracion ́ aria ser igual a 0,5 o elemento é arredondado para o inteiro maior. rand** ou **rand() : retorna um número aleatório entre 0 e 1. rand(m,n) : retorna uma matriz m×n com elementos aleatórios entre 0 e 1. randperm(n) : retorna um vetor linha com n elementos que são a permutação aleatória dos inteiros de 1 até n. randn(m,n) : retorna uma matriz m×n com média 0 e desvio-padrão 1. Centro Educacional Uninorte 45
  • 46.
    Algumas funções nativasdo Matlab/Octave - 3 median(A) : se A é um vetor, retorna o valor mediano dos elementos do vetor. mean(A) : se A é um vetor, retorna o valor médio dos elementos do vetor. Se A é uma matriz retorna um vetor linha com a media de cada coluna. sort(A) : se A é um vetor, ordena os elementos de A na ordem crescente. Se A é uma matriz, ordena os elementos de cada coluna. C = max(A) : se A é um vetor, C receberá o maior elemento de A. Se A é uma matriz, C é um vetor linha contendo o maior elemento em cada coluna de A. [d n]=max(A) : se A é um vetor, d recebe o maior elemento de A e n indica a posição desse elemento no vetor (a primeira posição, caso o elemento não seja único). Centro Educacional Uninorte 46
  • 47.
    Algumas funções nativasdo Matlab/Octave - 4 min(A) : semelhante à função max(A), porém retorna o minimo. [d,n]=min(A) : semelhante à função [d,n]=max(A), porém retorna o minimo. sum(A) : se A é um vetor, retorna a soma dos elementos do vetor. Se A é uma matriz retorna um vetor linha com a soma de cada coluna. std(A) : se A é um vetor, retorna o desvio-padrão dos elementos do vetor. det(A) : retorna o determinante da matriz quadrada A. dot(a,b) : determina o produto escalar de dois vetores a e b. cross(a,b) : determina o produto vetorial de dois vetores a e b. Os dois vetores devem possuir três elementos. Centro Educacional Uninorte 47
  • 48.
    Gráficos em MATLABe Octave Os gráficos em duas dimensões são os mais comuns por serem de simples entendimento e representação. Tais gráficos podem ser de coordenadas cartesianas ou polares Comandos para gerar gráficos plot(x, y) : gera gráficos lineares com x sendo a variável independente e y a variável dependente plot(x, y, z, w) : Plota dois gráficos (ou mais, dependendo do número de argumentos). O MATLAB seleciona linhas diferentes para cada gráfico Centro Educacional Uninorte 48
  • 49.
    Gráficos - Exemplo1 >> plot ([1, 2, 3], [4, 3, 6], [1, 2, 3], [5, 7, 6]) Dois gráficos em uma só figura (gerados pelo código acima) Um gráfico é gerado pelo par de vetores [1, 2, 3], [4, 3, 6] e outro pelo par [1, 2, 3], [5, 7, 6] Centro Educacional Uninorte 49
  • 50.
    Comandos auxiliares paragráficos title("texto") : Comando para adicionar um título (texto) ao topo do gráfico; xlabel("texto") : Escreve unia legenda no eixo x; ylabel("texto") : Escreve uma legenda no eixo x; text( x, y, "texto") : Escreve um texto no ponto (x, y). Se x e y são vetores, o texto é escrito a cada ponto; gtext("texto") : Escreve um texto no ponto determinado pela posição do mouse no gráfico; legend( 'textol', 'texto2', ... ) : Coloca legendas nos gráficos, na ordem em que eles foram plotados, no canto superior direito da figura; Centro Educacional Uninorte 50
  • 51.
    Outros comandos auxiliarespara gráficos legend( textol', 'texto2', location', pos ) : Coloca as legendas na posição indicada por "pos", que podem ser: north, south, east, weast, northeast, northwest, southeast, Southwest. grid on : Adiciona grades no gráfico plotado; grid off : Retira as grades do gráfico corrente: hold on e hold off : Usa-se para plotar outro gráfico na mesma figura. Este comando mantém o gráfico antigo até que o hold off seja usado. Assim, consegue- se sobrepor os gráficos. axis(v) : Este comando é utilizado para representar o gráfico em uma determinada faixa de valores determinada pelo vetor v . O vetor tem como elementos os valores mínimo e máximo dos eixos x e y ([xmin xmax ymin ymax]). Centro Educacional Uninorte 51
  • 52.
    Parâmetros para axise plot axis 'parâmetro' : Se o parâmetro for square , a função transforma a região do gráfico em quadrada ou cúbica. Se for tight , ela ajusta a região de acordo com os dados. Se for normal , ela remove qualquer ajuste definido e ajusta o gráfico da melhor forma possível. plot ( x, y, 'parâmetro' ) : 'parâmetro' é uma combinação de características, tipo de linha, de marcador e de cor, que se deseja aplicar ao gráfico. Não há ordem específica para a combinação dos parâmetros nem é necessário determinar os três. Veja tabela no próximo slide Centro Educacional Uninorte 52
  • 53.
    Opções do plotpara MATLAB e Octave (cores) Cor código Vermelho 'r' Verde 'g' Azul 'b' Ciano 'c' Magenta 'm' Amarelo 'y' Preto / Branco 'k' / 'w' Centro Educacional Uninorte 53
  • 54.
    Opções do plotpara MATLAB e Octave (linestyle) Descrição Código Linha sólida (padrão) '−' Tracejado '−−' Pontilhado ':' Traço e ponto '−.' Centro Educacional Uninorte 54
  • 55.
    Opções do plotpara MATLAB e Octave (mark - marcadores) - 1 Código Descrição 'o' Círculo '+' Sinal de + '*' Asterisco '.' Ponto 'x' X '_' Linha horizontal Centro Educacional Uninorte 55
  • 56.
    Opções do plotpara MATLAB e Octave (mark - marcadores) - 2 Código Descrição '|' Linha Vertical 'square' or 's' Quadrado 'diamond' or 'd' Losango '^' Acento circunflexo 'v' Letra V Centro Educacional Uninorte 56
  • 57.
    Opções do plotpara MATLAB e Octave (mark - marcadores) - 3 Código Descrição '>' Símbolo de maior '<' Símbolo de menor 'pentagram' or 'p' Pentagrama 'hexagram' or 'h' Hexagrama Centro Educacional Uninorte 57
  • 58.
    Funções Especiais dePlotagem em 2 Dimensões bar(x,y) , Dados 2 vetores de dados x e y, é produzido um gráfico de barras. Se somente um argumento é dado, pegamos os valores de y, e as coordenadas x são colocadas para ser o índice dos elementos. ´ equivalente a: [xb,yb] = bar(x,y); plot(xb,yb) ; loglog(args) , Plota em escala logarítmica ambos os eixos. polar(θ, ρ) , Faz um gráfico de acordo com as coordenadas polares θ e ρ. semilogy(args) , Gráfico logarítmico somente no eixo y. semilogx(args) , Gráfico logarítmico somente no eixo x. stairs(x, y) , Gráfico em degrau. loglog(args) , Plota em escala logarítmica ambos os eixos. Centro Educacional Uninorte 58
  • 59.
    Plotando em 3dimensões Há muitas formas de se criar um gráfico 3D. Primeiro é necessário gerar a malha de dados a serem visualizados(usando o recurso meshgrid ). Para executar a visualização 3D pode-se utilizar o comando mesh e para geração de contornos, o comando contour Centro Educacional Uninorte 59
  • 60.
    Plotando em 3 dimensões Exemplo: >>[x,y]=meshgrid(-4:0.6:4,-3:0.6:3); >> z=x.^2+y.^2; >> grid; >> xlabel('eixo x'); >> ylabel('eixo y'); >> zlabel('eixo z'); >> title('Exemplo de Mesh'); >> mesh(x,y,z); Centro Educacional Uninorte 60
  • 61.
    Como Salvar osGráficos No Octave o processo de gravação de um determinado gráfico utiliza a seguinte sequência de comandos: >> gset term postscript eps 22 >> gset output "nome do grafico.ps" >> replot Centro Educacional Uninorte 61
  • 62.
    Funções estatísticas maiscomuns - 1 Função: mean(x) : Se x é uma matriz, esta função irá computar o significado para cada coluna e retorná-las em um vetor linha. Função: median(x) Esta função calcula a mediana do vetor x. Função: std(x) : Esta função calcula o desvio-padrão do vetor x. Centro Educacional Uninorte 62
  • 63.
    Funções estatísticas maiscomuns - 2 Função: cov(x,y) Cada linha de x e y é uma observação e cada coluna é uma variável. A entrada (i,j) ordem de cov(x) é a covariância entre a variável de ordem i em x, e a variável de ordem j em y. Função: corrcoef(x,y) Esta função faz a correlação entre a variável de ordem i em x, e a variável de ordem j em y. Centro Educacional Uninorte 63
  • 64.
    Programação Um algoritmo éuma sequência finita de ações executáveis, precisos e não ambíguos a fim de obter uma solução para um determinado problema. Já a linguagem de programação traduz um algoritmo (sequência de instruções/ações) da linguagem humana para a linguagem de máquina. Centro Educacional Uninorte 64
  • 65.
    Pseudocódigo Uma maneira eficientede projetar um algoritmo é por meio de um pseudo código. Por exemplo, se eu quero escrever um algoritmo que devolve o módulo de um número, em qualquer linguagem de programação, seu pseudocódigo pode ser escrito da seguinte forma: Dado um número a Se a >= 0, então modulo = a Senão modulo=-a retorna modulo Centro Educacional Uninorte 65
  • 66.
    Programação Em C, porexemplo, o algoritmo acima poderia ser escrita como uma função, e ficaria assim: double modulo(double x){ double m; if (x >= 0){ m = x; } else { m = -x; } return m; } Centro Educacional Uninorte 66
  • 67.
    Programação Em Python, porexemplo, esse mesma função ficaria def modulo(x): if x >= 0: m = x else: m = -x return m Centro Educacional Uninorte 67
  • 68.
    Programação Cada linguagem deprogramação tem suas características. No Matlab/Octave, por exemplo, a mesma função acima ficaria: function m = modulo(x) if x >= 0 m = x; else m = -x; end end >> m1 = modulo(-2) m2 = modulo(-2332) >> m1 = 2 m2 = 2332 Centro Educacional Uninorte 68
  • 69.
    Observações importantes 1 Algumasobservações importantes na hora de criarmos nossos algoritmos aqui no Octave/Matlab: Todo texto depois de % é considerado um comentário; O caractere ... indica que o comando continua na próxima linha. Tal recurso permite deixar o texto mais organizado; Usa-se o ponto e vírgula ; (lembra dele?) no final de uma linha de comando. Ele omite na janela de comandos as iterações que serão realizadas (mantém a janela de comando mais limpa e organizada); Pode-se colocar mais de um comando em uma linha, separando-os por ponto e vírgula; Centro Educacional Uninorte 69
  • 70.
    Observações importantes 2 Osnomes das variáveis devem ser palavras únicas, sem inclusão de espaços e devem começar com uma letra, seguida de letras ou números, podendo conter até 19 caracteres; Para a entrada de dados via teclado usa-se a função input ; Para mostrar mensagens de texto na tela utiliza-se o comando disp . Você pode usar a função tic/toc para contar o tempo de execução do algoritmo. Por exemplo: tic; % algoritmo toc; Centro Educacional Uninorte 70
  • 71.
    Comando lógico-relacionais Operações lógicasDescrição ∼ Negação | ... ou ... & ... e ... OBS: Operações curto-circuito expr1 && expr2 representa a operação lógica ... e ... e aplica um comportamento de curto circuito no código. Isto é, expr2 não é avaliada se expr1 é falso. expr1 || expr2 representa a operação lógica ... ou ... e aplica um comportamento de curto circuito no código. Isto é, expr2 não é avaliada se expr1 for verdadeira. Centro Educacional Uninorte 71
  • 72.
    Operadores relacionais Operações relacionaisDescrição == Igual a ∼= Diferente < menor do que > maior do que <= menor ou igual a (≤) >= maior ou igual a (≥) O Octave/Matlab possui estruturas que permitem o controle do fluxo de execução de comandos e da ordem em que a computação é feita. Centro Educacional Uninorte 72
  • 73.
    Laço for A estruturafor possibilita que um bloco de código seja repetido por um número de vezes fixo e predefinido. Sua sintaxe é: for variável = início:passo:fim % comandos end Centro Educacional Uninorte 73
  • 74.
    Exemplo for N =input('Digite um número natural: '); disp(' ') disp('Método 1 - Laço FOR') disp(' ') soma = 0; tic; for n = 1:N soma = soma + n; end disp(['A soma de 1 até ' num2str(N) ' é ' num2str(soma)]); toc; Centro Educacional Uninorte 74
  • 75.
    Observação sobre otempo Laços for nem sempre são a melhor forma de construir um algoritmo, em Matlab/Octave. Vamos escrever o mesmo algoritmo acima usando vetores e funções nativas. Em seguida, comparar os tempos. Centro Educacional Uninorte 75
  • 76.
    Soma - funçõesnativas disp(' ') disp('Método 2 - vetores e funções nativas') disp(' ') tic; t = [1:N]; soma2 = sum(t); disp(['A soma de 1 até ' num2str(N) ' é ' num2str(soma)]); toc; Centro Educacional Uninorte 76
  • 77.
    Comparação tempos: >> soma Digiteum número natural: 100 Método 1 - Laço FOR A soma de 1 até 100 é 5050 Elapsed time is 0.051239 seconds. >> soma2 Método 2 - vetores e funções nativas A soma de 1 até 100 é 5050 Elapsed time is 0.00329399 seconds. Centro Educacional Uninorte 77
  • 78.
    Laço while A estruturawhile é utilizada quando é necessário repetir certo comando de código várias vezes, enquanto uma determinada condição é satisfeita. Geralmente, usa-se while quando não se sabe ao certo a quantidade de passos a serem dados pelo algoritmo. Sintaxe: while expressão comandos end Centro Educacional Uninorte 78
  • 79.
    Exemplo while 1 1.Encontre o menor número x=1; n=0; while x>1e-12 n = n+1; x = x/2; end disp(['Quando n = ' num2str(n) ', a sequência 1/(2^n) chegou a ' num2str(x)]); >> menor_numero_n Quando n = 40, a sequência 1/(2^n) chegou a 9.0949e-13 n ∈ N ∪ {0} tal que  ​ < 2n 1 10 12 − Centro Educacional Uninorte 79
  • 80.
    If, Elseif eElse A estrutura if é usada para executar um bloco de comandos apenas se uma determinada condição for satisfeita. Sintaxe: if expressão1 % comandos 1 elseif expressão2 % comandos 2 elseif expressão3 % comandos 3 else % comandos 4 end Centro Educacional Uninorte 80
  • 81.
    Exemplo If Fazer umprograma que diga se a pessoa é adulta, adolescente, criança ou idosa, com base na idade fornecida. Use o comando While para fazer o usuário digitar uma idade maior do que zero. Centro Educacional Uninorte 81
  • 82.
    idade_correta = false; while~idade_correta idade = input('Informe sua idade: '); if idade > 0 idade_correta = true; end end if idade < 12 disp('Você é uma criança.') elseif idade >= 12 & idade < 18 disp('Você é um adolescente.') elseif idade >= 18 & idade < 65 disp('Você é um adulto.') else disp('Você é um idoso') end if idade > 150 disp(' ') disp(' ') disp(' ') disp('... Matusalém, é você?') end Centro Educacional Uninorte 82
  • 83.
    Switch, case, otherwise Oswitch executa uma ação dentre várias opções, dependendo de um parâmetro passado inicialmente, onde cada escolha é um caso. Sintaxe: switch variável_de_teste case{caso1} % comandos1 case{caso2} % comandos2 case{caso3} % comandos3 otherwise % comandos end Centro Educacional Uninorte 83
  • 84.
    Exemplo switch Construir umprograma onde o usuário digita dois números e indica se irá somá- los, multiplicá-los ou subtraí-los. Centro Educacional Uninorte 84
  • 85.
    n = input('Digiteum número: '); m = input('Digite um número: '); operacao = input('Digite: 1 para somá-los; 2 para subtraí-los; 3 para multiplicá-los. Opção: '); switch operacao case{1} oper='+'; x=n+m; case{2} oper='-'; x=n-m; case{3} oper='*'; x=m*n; otherwise x=NaN; disp('Essa não é uma operação válida') end if x ~= NaN disp([num2str(n) oper num2str(m) '=' num2str(x)]) end Centro Educacional Uninorte 85
  • 86.
    Funções Muitas vezes queremoscriar funções que ainda não estão na biblioteca virtual do Octave/MATLAB. Para isso temos o comando function , que obedece a seguinte sintaxe: function[saida] = nomedafuncao(entrada) % Comentário da função, que aparecerá quando fizer '>>> help nomedafuncao' <comandos> end Centro Educacional Uninorte 86
  • 87.