Академический Документы
Профессиональный Документы
Культура Документы
MATLAB - Seminário
Algoritmos e Estrutura de Dados 2016_1
Rodrigo Barbosa de Santis
6 DE ABRIL DE 2016
Conteúdo
1. Introdução ................................................................................................................................... 1
1.1 Vantagens .............................................................................................................................. 1
1.2 Desvantagens ........................................................................................................................ 2
1.3 O ambiente MATLAB ............................................................................................................. 2
1.3.1 Desktop (Área de Trabalho)............................................................................................ 2
1.3.2 The Command Window (Janela de Comandos) ............................................................. 3
1.3.3 The Command History Window (Janela de Histórico de Comandos) ............................ 5
1.3.4 The Start Button (Botão Iniciar) ..................................................................................... 6
1.3.5 Edit/Debug Window (Janela de Edição/Debug) ............................................................. 6
1.3.6 Figure Windows (Janelas de Figuras) ............................................................................. 8
2. Criando e operando vetores e matrizes ..................................................................................... 9
2.1 Criando um array ................................................................................................................... 9
2.2 Funções de inicialização de variáveis .................................................................................... 9
2.3 Operando escalares e matrizes ........................................................................................... 11
2.3.1 Operando elemento-por-elemento.............................................................................. 11
2.3.2 Operações relacionais .................................................................................................. 11
2.3.3 Operadores lógicos ....................................................................................................... 12
2.3.4 Operações matemáticas elementares.......................................................................... 12
3. Plotando gráficos 2-D ................................................................................................................ 13
3.1 Personalizando o gráfico ..................................................................................................... 14
3.2 Controle dos eixos e de zoom ............................................................................................. 14
3.3 Gráficos sobrepostos ........................................................................................................... 14
3.4 Gráficos especias em 2-D .................................................................................................... 15
4. Gráficos em 3-D......................................................................................................................... 17
5. Estruturas de Controle e Repetição .......................................................................................... 18
5.1 If-elseif-else ......................................................................................................................... 18
5.2 Switch-case-otherwise ........................................................................................................ 18
5.3 For........................................................................................................................................ 19
5.4 While ................................................................................................................................... 19
5.5 Outros operadores .............................................................................................................. 20
5.5.1 Break ............................................................................................................................. 20
5.5.2 Continue ....................................................................................................................... 20
5.5.3 Error .............................................................................................................................. 21
6. Polinômios, Derivada e Integral ................................................................................................ 21
6.1 Polinômios ........................................................................................................................... 21
6.1.1 Criando Polinômios....................................................................................................... 21
6.1.2 Somatório ..................................................................................................................... 21
6.1.3 Funções de Calculo ....................................................................................................... 21
6.1.4 Encontrando as raízes ................................................................................................... 22
6.2 Derivada .............................................................................................................................. 22
6.3 Integral ................................................................................................................................ 23
6.3.1 Integral Indefinida ........................................................................................................ 23
6.3.2 Integral definida ........................................................................................................... 24
7. Caixeiro Viajante ....................................................................................................................... 25
7.1 Solução simples para 5 cidades ........................................................................................... 25
1. Introdução
1.1 Vantagens
1. Fácil de Usar
MATLAB é uma linguagem interpretada, assim como muitas versões do Basic. O
programa pode ser utilizado como um rascunho para validar expressões digitadas na linha de
comando. Muitas ferramentas de desenvolvimento são fornecidas para facilitar o uso, como
editor/debugger integrado, documentação on-line, manuais e demonstrações.
2. Independe da Plataforma
MATLAB é utilizado em muitos sistemas operacionais diferentes, provendo uma alta
independência de plataforma, como Windows, Linux, Unix e Macintosh. Programas escritos em
qualquer plataforma irão rodar em todas as outras plataformas.
3. Funções predefinidas
MATLAB vem com uma completa e extensa biblioteca de funções predefinidas que
provê soluções pré-empacotadas e testadas para várias atividades básicas técnicas. Por
exemplo, suponha que você está escrevendo um programa que precisa calcular as estatísticas
associadas com uma série de dados de entrada. Na maioria das linguagens, você precisaria
escrever suas próprias subrotinas e funções, para cálculos como média, desvio padrão,
mediana, entre outros.
É possível adquirir toolboxes(caixas de trabalho), muito úteis para resolver problemas
complexos em áreas específicas. Alguns exemplos de toolboxes disponíveis são: processamento
de sinal, controle de sistemas, comunicações, processamento de imagens, redes neurais, entre
outras.
1
programas sofisticados de análise de dados que possam ser operados por usuários
relativamente inexperientes.
1.2 Desvantagens
2
● Documents Window(Janela de Documentos), incluindo Editor/Debugger e o Array Editor
(Editor de vetores)
● Figure Windows (Janelas de Figuras)
● Workspace Browser (Navegador de Espaço de Trabalho)
● Help Browser (Navegador de Ajuda)
● Path Browser (Navegador de Caminho)
3
>> area = pi * 2.5^2
area =
19.6350
MATLAB calcula a resposta assim que a tecla “Enter” é pressionada e guarda a resposta
na variável (um vetor 1x1) chamada “area”. O conteúdo da variável é exibido na Janela de
Comandos como mostra na Figura 1.2, e a variável pode ser usada em próximos cálculos. (Note
que pi é uma função predefinida no MATLAB, por isso não precisamos declará-lo como
3,141592...)
Se a expressão é muito longa para digitar em uma única linha, ela pode ser continuada
em linhas sucessivas digitando reticências (...) ao final da primeira linha, e depois continuando
na próxima linha. Por exemplo, as próximas duas sentenças são equivalentes:
x1 = 1 + ½ + ⅓ + ¼ + ⅕ + ⅙
e
x1 = 1 + ½ + ⅓ + ¼ …
+ ⅕ + ⅙
4
Ao invés de digitar comandos diretamente na Janela de Comandos, uma sequência de
comands pode ser armazenada em um arquivo, e o arquivo inteiro pode ser executado
digitando seu nome na Janela de Comandos. Esses arquivos são chamados script files (Arquivos
de Roteiro). Script files (e funções, como veremos depois) são também conhecidos como M-
files, pois seus arquivos tem a extensão “.m”.
A Janela de Histórico de Comandos mostra uma lista de comandos que o usuário entrou
na Janela de Comandos. A lista de comandos anteriores pode ser extendida de volta a
execuções anteriores do programa. Comandos permanecem na lista até serem deletados. Para
reexecutar qualquer comando, apenas de um clique-duplo com o botão esquerdo do mouse.
Um menu vai aparecer e permite os usuários a deletar os itens (veja a Figura 1.3).
5
1.3.4 The Start Button (Botão Iniciar)
O Botão Iniciar permite ao usuário acessar ferramentas, arquivos de ajuda, e mais. Ele
funciona como o Botão Iniciar do Windows. Para iniciar uma ferramenta particular, clique no
Botão Iniciar e selecione a ferramenta no submenu apropriado.
Uma Janela de Edição é usada para criar um novo arquivo M ou modificar um existente.
Uma Janela de Edição é criada automaticamente quando você cria um arquivo ou abre um
existente. Você pode criar um arquivo selecionando “File/New/Script” no menu da área de
trabalho, ou clicando no ícone “New script” na barra de ferramentas. Você pode abrir um
arquivo existente selecionando “File/Open” no menu da área de trabalho, ou clicando no ícone
“Open file” na barra de ferramentas.
Uma Janela de Edição exibindo um arquivos simples chamado calc_area.m é mostrado
na Figura 1.4. Este arquivo calcula a área de um círculo dado seu raio e exibe o resultado. A
Janela de Edição é essencialmente um editor de texto, com os recursos da linguagem MATLAB
destacados com cores diferentes. Comentários em um arquivo M aparecem em verde, variáveis
e números aparecem em preto, strings completas em magenta, strings incompletas em
vermelho, e palavras-chave da linguagem em azul.
Depois de salvo o arquivo, ele pode ser executado digitando seu nome na Janela de
Comando. Para o arquivo da figura 1.5, os resultados são o seguinte:
>> calc_area
A área do círculo é 19.635
NOTA: Para o comando calc_area funcionar corretamente, certifique-se que o arquivo esteja
no mesmo caminho que o Workspace em que você esteja trabalhando. No exemplo o caminho
do Workspace e do arquivo é: “C:\Users\Rodrigo\Documents\MATLAB”
6
(a)
(b)
Figura 1.4 (a) O editor, exibindo o arquivo calc_area (b) Execução do programa
7
1.3.6 Figure Windows (Janelas de Figuras)
Uma Janela de Figura é utilizada para exibir gráficos. A figura pode ser uma imagem, um
gráfico com dados plotados em duas ou três dimensões, ou uma Interface Gráfica para o
Usuário. Um arquivo simples que calcula e plota uma função sin x é mostrada a seguir.
Se este arquivo for salvo com o nome sin_x.m, então execute o arquivo na Janela de
Comandos digitando sin_x. O resultado plotado é exibido na Figura 1.5.
8
2. Criando e operando vetores e matrizes
>> array1 = [1 2 3 4]
>> array2 = [1 2 3; 4 5 6; 7 8 9]
array =
1 2 3 4
array2 =
1 2 3
4 5 6
7 8 9
No MATLAB existem funções para criarmos arrays específicos, como por exemplo,
arrays com zero, com um (1), identidade.
9
Segue abaixo uma tabela explicitando essas funções:
Funções Ações
Exemplo:
>> x = 1:2:10
x =
1 3 5 7 9
○ matriz=[primeiro:incremento:ultimo ; primeiro:incremento:ultimo]
Para matriz é necessário que as duas linhas possuam o mesmo tamanho
10
>> y = [1:2:10;2:4:20]
y =
1 3 5 7 9
2 6 10 14 18
● Usando linspace
○ vetor = linspace (primeiro,ultimo,numero de elementos)
>> x = linspace(0,10,5)
x =
0 2.5000 5.0000 7.5000 10.0000
E os dados são retornados na forma de array contendo os valores 0 (para falso) e 1 (para
verdadeiro)
11
Exemplo:
>> x = [4 8 6 5];
>> y = [7 4 1 2];
>> k = x<y
k =
1 0 0 0
| “OU” lógico
~ “NÃO” lógico
Funções Trigonométricas
Funções Exponenciais
exp Exponencial
log Logaritmo natural
log10 Logaritmo na base 10
sqrt Raiz quadrada
12
Funções Complexas
Funções de aproximação
O comando mais básico e , talvez, o mais útil para plotar gráficos em MATLAB é o
>> y = [5 4 6 9]
>> plot (y)
Irá gerar pontos na gráfico nas seguintes coordenadas: (1,5) , (2,4) , (3,6) , (4,9)
13
3.1 Personalizando o gráfico
Para se adicionar título, nome para os eixos e comentários dentro do gráfico, utliza-se os
seguintes comandos:
Após o gráfico ser gerado, é possivel modificar os limites dos eixos com o seguinte
comando:
onde xmin, xmax, ymin, ymax são os valores dos limites dos eixos a serem
colocados no comando.
Outra opções de comando:
No MATLAB, a cada comando plot dado, o novo gráfico substitui o anterior, para que
isso não ocorra têm-se três opções:
14
1. Para gerar um novo gráfico, utiliza-se primeiro o comando figure, que serve para criar
um nova janela e depois usar o novo plot. Ex:
2. Para adicionar novas curvas ao seu gráfico já gerado, utiliza-se o comando hold. Ex:
3. Para adicionar numa mesma tela outros gráficos utiliza-se o comando subplot, que possui
três argumentos: subplot (m,n,p). Onde o comando divide a tela em m x n janela e coloca o
gráfico p-ésima janela, sendo que é contada da esquerda para a direita e de cima para baixo.
Ex:
>> subplot(2,2,3)
>> plot(x,k)
>> subplot(2,2,1)
>> plot(x,y)
>> subplot(2,2,2)
>> plot(y)
15
Exemplos de uso desses comandos especiais:
16
4. Gráficos em 3-D
Entre estas funções plt3 e comet3 são análogos ao plot e ao comet do 2D.
17
5. Estruturas de Controle e Repetição
5.1 If-elseif-else
if i > 5; % Cond 1
k = 1; % ação ocorre caso a Cond 1 seja verdadeira
elseif (I > 1) & (j == 20) % Cond 2
k = 5*i + j; % ação ocorre caso a Cond 2 seja verdadeira
else
k = 1; % condição ocorre caso cond.1 e 2 sejam
falsas
end
5.2 Switch-case-otherwise
Essa construção prove uma ramificação lógica para a computação. Uma variável é
utilizada como uma chave e os valores da variável fazem com que os diferentes casos sejam
executados. A sintaxe geral é:
switch variável
case valor1
1º bloco de comandos
case valor2
2º bloco de comandos
...
otherwise
último bloco de comandos
end
18
Um exemplo de uso da estrutura é o programa abaixo:
switch cor
case ‘vermelho’
c = [1 0 0];
case ‘verde’
c = [0 1 0];
case ‘azul’
c = [0 0 1];
otherwise
error(‘escolha de cor inválida’)
end
5.3 For
Utilizado para repetir um grupo de comandos por um número fixo de vezes. Por
exemplo:
for m = 1:2:100
Num = 1(m+1)
end
5.4 While
19
5.5 Outros operadores
5.5.1 Break
O comando Break dentro de um laço for ou while termina a execução do laço, até
mesmo se a condição do laço for verdadeira. Ex:
while 1
n = input(‘Entre com o nº máximo de interações ‘)
if n <= 0
break
end
for i = 1:n
end
end
Caso haja um laço dentro de outro, o comando break finaliza somente o laço mais
interno.
5.5.2 Continue
20
5.5.3 Error
Para se criar um polinômio e poder trabalhar com ele (encontrando suas raizes,
derivando, integrando) é necessário criá-lo como char em função de x.
Exemplo:
6.1.2 Somatório
21
f = sym(f);
Pois esses calculos não são feitos com o tipo char.
a. simple(p) – simplifica uma expressão simbólica p.
b. expand(p) – expande todos os termos de p.
c. factor(p) – tenta representar p como produto de polinômios.
6.2 Derivada
No MATLAB é possível encontrar a derivada de uma função, visualizar seu gráfico com
comandos simples. Por Exemplo:
22
6.3 Integral
6.3.1 Integral Indefinida
23
6.3.2 Integral definida
24
7. Caixeiro Viajante
Cidades 1 2 3 4 5
25
A partir disso, temos que encontrar as combinações de caminho. Lembrando que ele
tem que começar em uma cidade e terminar na mesma, portanto, tem diferença a cidade que o
caixeiro começa, o que reduz as combinações possíveis de caminho.
A cada caminho determinado, temos que somar as distancias entre as cidades, se essa
distância for menor que a já encontrada, substitui o valor na variável bestdistance. E armazena
na variável bestpath o caminho que gerou essa menor distancia.
Usando o comando plot é possível desenhar o gráfico com essas esses percursos.
Bibliografia
Applegate, D. L., Bixby, R. E., Chvatal, V., & Cook, W. J. (2011). The traveling salesman problem:
a computational study. Princeton university press.
26