Вы находитесь на странице: 1из 29

UNIVERSIDADE FEDERAL DE JUIZ DE FORA

PROGRAMA DE PÓS GRADUAÇÃO EM MODELAGEM COMPUTACIONAL

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

MATLAB (abreviação para MATrix LABoratory) é um software otimizado para realizar


cálculos de engenharia e científicos. Ele foi criado inicialmente com o objetivo de realizar
cálculos de matrizes matemáticas, mas, com o passar do tempo, se tornou um sistema
computacional capaz de resolver praticamente qualquer problema técnico.
O software MATLAB implementa a linguagem MATLAB e possui uma extensa biblioteca
de funções predefinidas visando tornar tarefas de programação técnica mais fácil e mais
eficiente. Essa grande variedade de funções permite resolução destes problemas técnicos
muito mais facilmente do que em outras linguagens como Fortran e C. Essa apostila introduz a
linguagem MATLAB e mostra como usar algum de suas funções na resolução de alguns
problemas.

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.

4. Interface Gráfica para Usuário


MATLAB inclui ferramentas que permite um programa construir uma interface gráfica
para usuário (Graphical User Interface) para ele. Com essa capacidade, o programador pode

1
programas sofisticados de análise de dados que possam ser operados por usuários
relativamente inexperientes.

1.2 Desvantagens

MATLAB possui duas desvantagens principais. A primeira é que é uma linguagem


interpretada, e por isso, pode ser mais lenta que linguagens compiladas em tempo de
execução. Esse programa pode ser mitigado estruturando o programa em MATLAB para
maximizar a performance do código vetorizado, e através do uso do compilador JIT.
A segunda desvantagem é o custo; uma cópia completa do MATLAB é de 5 a 10 vezes
mais cara do que um compilador convencional de C ou Fortran. Este custo alto é mais do que
compensado pela redução do tempo necessário de um engenheiro ou cientista para criar um
programa e implementá-lo, por isso o MATLAB apresenta um custo-benefício atraente para os
negócios.

1.3 O ambiente MATLAB

A unidade fundamental de dado em qualquer programa MATLAB é o vetor (array). Um


vetor é uma coleção de valores organizados em linhas e colunas e conhecido por um nome
único. Valores individuais dentro dos vetores podem ser acessados incluindo o nome do vetor
seguido por índices em parênteses que identificam a linha e coluna do valor particular. Até
mesmo escalares são tratados como vetores pelo MATLAB - eles são vetores com apenas uma
linha e uma coluna. Nós iremos aprender mais sobre como criar e manipular vetores na seção
2.
Quando o MATLAB está em execução, ele pode exibir alguns tipos de janelas que
aceitam comandos ou exibem informações. As três mais importantes janelas são Command
Windows (Janela de comandos), onde há a entrada de comandos; Figure Windows (Janelas de
figuras), que exibem gráficos; e Edit Windows (Janelas de edição), que permite ao usuário criar
e modificar programas MATLAB. Nós iremos ver exemplos desses três tipos de janelas nesta
seção.
Como suplemento, o MATLAB pode exibir outras janelas que provém ajuda e permitem
ao usuário examinar os valores das variáveis definidas na memória. Nós iremos analisar
algumas dessas janelas adicionais também nessa seção.

1.3.1 Desktop (Área de Trabalho)

A configuração padrão da área de trabalho do MATLAB é exibida na Figura 1.1. Ela


integra muitas ferramentas para gerenciamento de arquivos, variáveis, e aplicações dentro do
ambiente MATLAB.
● As maiores ferramentas acessíveis na área de trabalho do MATLAB são as seguintes:
● Command Window (Janela de Comandos)
● Command History Window ( Janela de Histórico de Comandos)
● Start Button (Botão Iniciar)

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)

Iremos discutir a função dessas ferramentas a seguir.

Figura 1.1 A área de trabalho padrão do MATLAB

1.3.2 The Command Window (Janela de Comandos)

O lado esquerdo da área de trabalho padrão do MATLAB contém a Command Window


(Janela de Comandos). O usuário pode entrar comandos interativos no prompt de comando
(>>) na Janela de Comandos, e eles serão executados na tela.
Como um exemplo simples de cálculo interativo, supomos que você queira calcular a
área de um círculo com raio de 2,5 m. Isto pode ser feito na Janela de Comandos digitando

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...)

Figura 1.2 A Janela de Comandos: Usuários entram comandos e recebem respostas

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”.

Figura 1.3 Janela de Histórico de Comandos, mostrando um comando sendo deletado

1.3.3 The Command History Window (Janela de Histórico de Comandos)

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.

1.3.5 Edit/Debug Window (Janela de Edição/Debug)

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.

% sin_x.m: Este arquivo calcula e plota a


% função sin(x) para 0 <= x <= 6.
x = 0:0.1:6
y = sin(x)
plot(x,y)

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.

Figura 1.5 Gráfico da função f(x) no MATLAB

8
2. Criando e operando vetores e matrizes

A unidade fundamental de dados em um programa MATLAB é o array. Um array é uma


coleção de valores organizados em linhas e colunas por uma variável de nome simples.
Array com uma única dimensão é chamada de vetor, quando possui duas ou mais
dimensões recebe o nome de matriz.

2.1 Criando um array

Para se declarar um array em MATLAB basta escrever o nome da variável (com no


máximo 19 caracteres), sinal de igualdade e entrar com os dados entre colchetes.
Quando os dados dentro dos colchetes que estão separados por espaço cria-se uma
nova coluna e quando estão separados por ponto-e-virgula (;) cria-se uma nova linha. Por
exemplo:

>> 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

Para acessarmos um determinado elemento de uma dada matriz A, basta


especificarmos os índices i e j da matriz A(i,j).

>> display = array2(2,2) % selecionando o elemento A(2,2)


display =
5

Para selecionar toda uma linha ou coluna, utilizamos o caracter (:).

>> display = array2(2,1:3) %selecionando a segunda linha

2.2 Funções de inicialização de variáveis

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

zeros(n) Gera uma matriz n x n de zeros.

zeros(m,n) Gera uma matriz m x n de zeros.

zeros(size(array2)) Gera uma matriz de zeros do mesmo


tamanho do array2.

ones(n) Gera uma matriz n x n de um (1).

ones(m,n) Gera uma matriz m x n de um (1).

ones(size(array2)) Gera uma matriz de um (1) do mesmo


tamanho do array2.

eye(n) Gera uma matriz identidade n x n

eye(m,n) Gera uma matriz identidade m x n

length(array2) Retorna o tamanho do vetor, ou a maior


dimensão de um array bidimensional.

size(array2) Retorna dois valores especificando o numero


de linhas e colunas em array2.

input (‘Enter data: ’) Recebe dados de entrada do teclado.

Outras formas de inicializar um array:

● Por expressões curtas


○ vetor = primeiro:incremento:ultimo

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

2.3 Operando escalares e matrizes

No MATLAB é possível operar escalares e matrizes de uma forma bem simples.


Contudo, para se utilizar em matrizes é necessário cumprir algumas condições:
a. A + B ou A - B: apenas se ambas forem do mesmo tamanho;
b. A * B: apenas se número de colunas de A for igual ao número de linhas de B;
c. A / B: é valida ou igual a A*(B^-1) para matrizes quadradas de mesmo
tamanho;
d. A ^ 2: se A for quadrada e é o mesmo que A*A;

2.3.1 Operando elemento-por-elemento

Para se operar elemento-por-elemento, utilizamos a seguinte estrutura:


A .*B - multiplicação de elemento por elemento
A ./B - divisão de elemento por elemento
A .^B - exponenciação de elemento por elemento
A .’B - transposta não conjugada

2.3.2 Operações relacionais

Para se fazer operações relacionais, temos:


< Menor
<= Menor igual
> Maior
>= Maior igual
== Igual
~= Diferente

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

2.3.3 Operadores lógicos

Os operadores lógicos utilizados no MATLAB são:

& “E” lógico

| “OU” lógico

~ “NÃO” lógico

Xor “OU” exclusivo

2.3.4 Operações matemáticas elementares

Funções Trigonométricas

sin seno sinh seno hiperbólico


asin arco seno asinh arco seno hiperbólico
cos cosseno cosh cosseno hiperbólico
aços arcocosseno acosh arco cosseno hiperbólico
tan tangente tanh tangente hiperbólico
atan, atan2 arco tangente atanh arco tangente hiperbólico
sec secante sech secante hiperbólico
asec arco secante asech arco secante hiperbólico
csc cosecante csch cossecante hiperbólico
acsc arco cosecante acsch arco cossecante hiperbólico
cot cotangente coth cotangente hiperbólico
acot arco cotangente acoth arco cotangente hiperbólico

Funções Exponenciais

exp Exponencial
log Logaritmo natural
log10 Logaritmo na base 10
sqrt Raiz quadrada

12
Funções Complexas

abs Valor absoluto


angle Ângulo de fase
conj Complexo conjugado
imag Parte imaginária
real Parte real

Funções de aproximação

fix Aproxima na direção de zero


floor Aproxima na direção de -∞
ceil Aproxima na direção de +∞
round Aproxima para o inteiro mais próximo
rem Resto da divisão

3. Plotando gráficos 2-D

O comando mais básico e , talvez, o mais útil para plotar gráficos em MATLAB é o

>> plot(x,y,’Opções de Estilo’)

onde x e y são vetores contendo as coordenadas de pontos do gráfico e opções de estilo


é um argumento para personalização da cor, do estilo de linha, e estilo de marcação, todas
podem ser especificadas juntas na sequencia: cor, estilo de linha, estilo de marcador.
Os dois vetores (x e y) DEVEM ter o mesmo tamanho. Se por um acaso utilizarmos
“plot(y)”, o eixo X receberá valores da posição da coordenada de y. Por exemplo:

>> y = [5 4 6 9]
>> plot (y)

Irá gerar pontos na gráfico nas seguintes coordenadas: (1,5) , (2,4) , (3,6) , (4,9)

Segue abaixo uma tabela com as opções de estilo:

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:

3.2 Controle dos eixos e de zoom

Após o gráfico ser gerado, é possivel modificar os limites dos eixos com o seguinte
comando:

>> axis([ xmin xmax ymin ymax ])

onde xmin, xmax, ymin, ymax são os valores dos limites dos eixos a serem
colocados no comando.
Outra opções de comando:

3.3 Gráficos sobrepostos

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:

>> plot (x,y)


>> figure
>> plot (y,x)

2. Para adicionar novas curvas ao seu gráfico já gerado, utiliza-se o comando hold. Ex:

>> plot (x,y)


>> hold on
>> plot (y,x)
>> plot (y,k)
>> hold off

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)

3.4 Gráficos especias em 2-D

15
Exemplos de uso desses comandos especiais:

16
4. Gráficos em 3-D

O MATLAB dispõe de diversas funções que facilitam a visualização do gráfico 3D. As


facilidades dispostas incluem funções para plotar curvas especiais, objetos em forma de grade,
superfícies com textura, gerando contornos automaticamente, especificando os pontos de luz,
interpolando cores e textura e mesmo digitando help graph3d no comando você obtém uma
lista de funções viáveis para gráficos 3D gerais. Aqui está uma lista dos mais comuns:

plot3 plot curvas no espaço


stem3 cria dados discretos na plotagem fatiados
bar3 desenha gráficos 3D em barras
bar3h idem para gráficos horizontais
pie3 desenha o gráfico de pizza 3D
comet3 faz animações gráficas
fill3 desenha figuras 3D preenchidas
contour3 faz os contornos de um gráfico 3D
guiver3 desenha vetores de campo em 3D
scatter3 faz gráficos 3D espalhados
mesh desenha superfície
meshc desenha superfície ao longo de contornos
meshz desenha superfície com cortinas
surf desenha superfície em 3D (igual ao mesh, porém preenchido)
surfc idem meshc, porém preenchido
surfl cria superfície com as fontes de luz especificadas
trimesh mesh com triângulos
trisurf surf com triângulos
slice desenha uma superfície volumétrica em pedaços
waterfall cria um gráfico em forma de cachoeira
cylinder cria um cilíndro
sphere cria uma esfera

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

Esta construção representa uma comparação necessária para a execução de um bloco


de comandos como resultado de uma comparação lógica. Por exemplo:

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

Um laço while é utilizado para executar um grupo de comandos para um número


indefinido de vezes até que determinada condição especificada seja satisfeita. Por exemplo:

% Vamos encontrar todas as potências de 2 abaixo de 10000


v = 1; i = 1;
while num < 10000
num = 2^i;
v = [ v; num];
i = i + 1;
end

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

O commando return retorna o controle da função chamada. Ex:

Function animatebar(t0, tf, x0);


% animatebar anima um pêndulo
disp(‘Você deseja ver o retrato da fase?’)
ans = input (‘Digite 1 para SIM, e 0 para NÃO’)
if ans == 0
return
else
plot(x,...)
end

20
5.5.3 Error

O comando error(‘mensagem’) dentro de uma função ou um script aborta a execução,


mostra uma mensagem de error e retorna o controle para o teclado. Exemplo:
function c = crossprod (a,b);
% crossprod (a,b) calcula o produto vetorial axb
If nargin ~= 2
error(‘Desculpe, precisa da entrada de 2 vetores’)
end

6. Polinômios, Derivada e Integral


6.1 Polinômios
6.1.1 Criando Polinômios

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:

>> f = '3*x^2 - 15*x + 18';


>> f1=’x^3’;

6.1.2 Somatório

Para se ter o somátorio utiliza-se o comando:

>> symsum(f,x,a,b) a e b são os limites inferior e superior


respectivamente.

6.1.3 Funções de Calculo

a. limit(f,x,a) – retorna o limite de f(x) quando x → a


b. limit(f,x,a,´right`) - retorna o limite de f(x) quando x → a+
c. limit(f,x,a,´left`) - retorna o limite de f(x) quando x →a-
d. diff(f,x,n) – retorna a n-ésima derivada de f(x)
* A função “diff” também opera em matrizes.
Para os comandos a seguir, é necessário usar a conversão

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.1.4 Encontrando as raízes

Para se encontrar as raízes de um polinômio, utiliza-se o comando solve.


Exemplo:
>> f
f = 3*x^2 - 15*x + 18
>> raiz = solve (f)
raiz= 3
2

6.2 Derivada

No MATLAB é possível encontrar a derivada de uma função, visualizar seu gráfico com
comandos simples. Por Exemplo:

>> f = '3*x^2 - 15*x + 18' % Cria a função como char


f = 3*x^2 - 15*x + 18
>> derivada = diff(f) % faz a derivada da função
derivada =
6*x-15
>> derivada = char (derivada) % Transforma a derivada
novamente em char
derivada =
6*x-15
>> subplot(2,1,1)
>> fplot (f, [-30 30]) % Plota o gráfico da função
>> subplot(2,1,2)
>> fplot (derivada, [-30 30]) % Plota o gráfico da derivada

22
6.3 Integral
6.3.1 Integral Indefinida

Também é possível encontrarmos a integral indefinida de uma função com os seguintes


passos:

>> f = '3*x^2 - 15*x + 18' % Cria a função como char


f =
3*x^2 - 15*x + 18
>> integral = int(f) % faz a integral da função
integral =
x^3-15/2*x^2+18*x
>> integral = char (integral) % Transforma a integral
novamente em char
integral =
x^3-15/2*x^2+18
>> subplot(2,1,1)
>> fplot (f, [-30 30]) % Plota o gráfico da função
>> subplot(2,1,2)
>> fplot (integral, [-30 30]) % Plota o gráfico da integral

23
6.3.2 Integral definida

Para se fazer a integral definida da função, basta adicionar os limites de integração ao


comando int().
Exemplo:

>> f = '3*x^2 - 15*x + 18' % Cria a função como char


f =
3*x^2 - 15*x + 18
>> integral = int(f, -30,30) % Faz a integral definida da
função
integral=
55080

24
7. Caixeiro Viajante

O problema do caixeiro-viajante (PCV), travelling


salesman problem (TSP) (em inglês) , é um problema de
otimização que, apesar de parecer modesto é, na realidade,
muito investigado por cientistas, matemáticos e
investigadores de diversas áreas, tais como: logística, genética
e produção, entre outros (Applegate et al., 2011).
O problema pertence à categoria NP-Completo que o
remete para um campo de complexidade exponencial, isto é,
o esforço computacional necessário para a sua resolução
cresce exponencialmente com o tamanho do problema.
Assim, dado que é difícil, se não impossível, determinar a
solução ótima desta classe de problemas, os métodos de
resolução passam pelas heurísticas e afins que, do ponto de vista matemático, não asseguram a
obtenção de uma solução ótima (Da Cunha et al., 2002).
Ele consiste na procura de um circuito que possua a menor distância, começando numa
qualquer cidade, entre várias, visitando cada cidade precisamente uma vez e regressando à
cidade inicial.

7.1 Solução simples para 5 cidades

Como visto acima, a complexidade da solução do problema cresce de acordo com o


número de cidades, portanto, adotaremos 5 cidades para o percurso do caixeiro viajante.
O primeiro passo é definir as coordenadas (X,Y) das cidades.
Depois, criar uma matriz que armazene as distancias entre cada uma das cidades.
Exemplo:

Cidades 1 2 3 4 5

1 0 (1,2) (1,3) (1,4) (1,5)

2 (2,1) 0 (2,3) (2,4) (2,5)

3 (3,1) (3,2) 0 (3,4) (3,5)

4 (4,1) (4,2) (4,3) 0 (4,5)

5 (5,1) (5,2) (5,3) (5,4) 0

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.

Chapman, S. (2008). Essentials of MATLAB programming. Nelson Education.

Da Cunha, C. B., de Oliveira Bonasser, U., & Abrahão, F. T. M. (2002). Experimentos


computacionais com heurísticas de melhorias para o problema do caixeiro viajante. In XVI
Congresso da Anpet.

MATLAB Documentation, Mathworks. Recuperado em 29, março, 2016 de


http://www.mathworks.com/help/matlab/

Travelling Salesman Problem, Mathworks. recuperado em 29, março, 2016 de


http://www.mathworks.com/help/optim/ug/travelling-salesman-problem.html

26

Вам также может понравиться