Cartilha de Octave para Matematica Computacional.pdf
6 de Jul de 2022•0 gostou•52 visualizações
Baixar para ler offline
Denunciar
Tecnologia
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.
Cartilha de Octave para Matematica Computacional.pdf
1. Cartilha de Octave para Matemática
Computacional
Edkallenn Lima
Mestre em Ciência da Computação, Policial Federal e
Professor
Centro Educacional Uninorte
2. 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
3. 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
4. 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
5. 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
6. 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
7. 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
8. Executando o Octave
Após as 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
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
11. 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
12. 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
13. Conseguindo ajuda
podemos obter ajuda utilizando o comando help
1 > help dist
Atenção: A LINGUAGEM MATLAB É CASE SENSITIVE!
Centro Educacional Uninorte 13
14. 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
15. 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
16. 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
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çã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
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 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
22. 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
23. 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
24. 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
25. 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
26. 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
27. 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
28. 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
29. 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
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 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
32. 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
33. 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
34. 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
36. 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
37. 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
38. 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
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 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
44. 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
45. 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
46. 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
47. 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
48. 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
49. 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
50. 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
51. 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
52. 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
53. 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
54. 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
55. 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
56. 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
57. 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
58. 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
59. 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
61. 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
62. 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
63. 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
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 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
66. 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
67. 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
68. 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
69. 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
70. 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
71. 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
72. 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
73. 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
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 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
76. 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
77. 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
78. 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
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 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
81. 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
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
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
84. 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
85. 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
86. 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