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

Novembro de 2012

UFJF
PETROBRAS

APOSTILA DE MATLAB

Fernando Jos Ferreira Pereira


Joo Paulo Ananias Silva
Jonatas Marques Rodrigues
Karina Lino Miranda de Oliveira
Ricardo Viol dos Santos

Curso Introdutrio
de Matlab
PRH PB14

Este documento foi desenvolvido por


bolsistas do programa PRH-PB14,
convnio entre a Universidade Federal
de Juiz de Fora e a PETROBRAS, e
constituiu-se no material didtico
auxiliar do curso de Matlab por estes
ministrado.

SUMRIO:

Curso Introdutrio de Matlab ...................................................................................................... 2


PRH PB14 ............................................................................................................................................ 2
1.

2.

Apresentao do MATLAB ................................................................................................ 6


1.1.

O que o MATLAB? .................................................................................................... 6

1.2.

Utilidades do MATLAB .............................................................................................. 7

1.3.

Viso Geral do MATLAB ............................................................................................ 7

Introduo ...............................................................................................................................11
2.1.

Operaes Aritmticas ...............................................................................................11

2.2.

Formato de Exibio ...................................................................................................12

2.3.

Funes Matemticas Elementares.......................................................................13

2.4.

Help ...................................................................................................................................14

2.5.

Nmeros Complexos ...................................................................................................17

2.6.

Variveis em MATLAB .............................................................................................20

2.6.1.

3.

Manipulao de Variveis.....................................................................................22

2.7.

Outros Comandos .........................................................................................................23

2.8.

Lista de Exerccios .......................................................................................................24

Vetores e Matrizes ................................................................................................................27


3.1.

Entrada .............................................................................................................................27

3.1.1.

Vetores Sequenciais ................................................................................................28

3.2.

Indexao ........................................................................................................................30

3.3.

Operaes........................................................................................................................31

3.3.1.

Transposta..................................................................................................................31

3.3.2.

Adio e Subtrao ..................................................................................................33

3.3.3.

Multiplicao .............................................................................................................34

3.3.4.

Exponenciao ..........................................................................................................37

3.3.4.1.

Potncia...................................................................................................................37

3.3.4.2.

Potncia Escalar ...................................................................................................38

3.3.5.

Diviso .........................................................................................................................39

3.3.5.1.

Determinante e Inversa ....................................................................................39

3.3.5.2.

Diviso Matricial Direita ...............................................................................40


3

3.3.5.3.

Diviso Matricial Esquerda ..........................................................................41

3.3.5.4.

Diviso Escalar .....................................................................................................42

3.4.
4.

Lista de Exerccios .......................................................................................................43

Manipulao de Vetores e Matrizes ...............................................................................47


4.1.

Funes Matemticas .................................................................................................47

4.2.

Gerao de Matrizes ....................................................................................................48

4.2.1.

Utilizando Conceitos de Indexao ...................................................................48

4.2.2.

Concatenao ............................................................................................................51

4.2.3.

Construes Elementares .....................................................................................53

4.3.

Funes Matriciais .......................................................................................................54

4.3.1.

Informaes Bsicas ...............................................................................................54

4.3.2.

Manipulao...............................................................................................................55

4.3.3.

Informaes Diversas.............................................................................................57

4.3.4.

lgebra Linear...........................................................................................................58

4.4.

Resoluo de Sistemas Lineares.............................................................................59

4.4.1.

Mtodo Convencional.............................................................................................59

4.4.2.

Escalonamento .........................................................................................................61

4.4.3.

Funo solve ..............................................................................................................62

4.5.

Lista de Exerccios .......................................................................................................63

5.

Introduo ao Editor (Arquivos .m)...........................................................................67

6.

Programao...........................................................................................................................70
6.1.

Function ...........................................................................................................................70

6.1.1.
6.2.

Sintaxe .....................................................................................................................70

Operadores .....................................................................................................................71

6.2.1.

Operadores Relacionais ....................................................................................71

6.2.2.

Operadores Lgicos ............................................................................................72

6.3.

Controle de Fluxo .........................................................................................................73

6.3.1.
6.3.1.1.
6.3.2.
6.3.2.1.
6.3.3.

FOR............................................................................................................................73
Exerccios resolvidos utilizando o lao FOR .........................................74
IF-ELSE-END .........................................................................................................75
Exerccios resolvidos utilizando o condicional IF-ELSE ..................76
WHILE ......................................................................................................................77
4

6.3.3.1.
6.3.4.
6.3.4.1.

7.

Exerccios resolvidos utilizando o comando WHILE ........................78


SWITCH-CASE .......................................................................................................78
Exerccios resolvidos utilizando o comando SWITCH ......................80

6.4.

Comandos Bsicos .......................................................................................................80

6.5.

Lista de Exerccios .......................................................................................................82

Grficos .....................................................................................................................................84
7.1.

Grficos Bidimensionais ............................................................................................84

7.1.1.

Plot/Subplot/Fplot .............................................................................................85

7.1.2.

Loglog.......................................................................................................................92

7.1.3.

Semilogx ..................................................................................................................93

7.1.4.

Semilogy..................................................................................................................95

7.1.5.

Polar .........................................................................................................................96

7.1.6.

Bar .............................................................................................................................97

7.1.7.

Hist ............................................................................................................................99

7.1.8.

Pie ........................................................................................................................... 100

7.1.9.

Stem/Stairs ......................................................................................................... 102

7.2.

Estilo de Linha e Smbolo ....................................................................................... 103

7.3.

Grficos Tridimensionais ....................................................................................... 109

7.3.1.

Plot3 ...................................................................................................................... 109

7.3.2.

Mesh ...................................................................................................................... 110

7.3.3.

Bar3/Bar3h......................................................................................................... 112

7.3.4.

Pie3 ........................................................................................................................ 113

7.4.

Menu Plot Tools and Dock Figure..................................................................... 113

7.5.

Lista de Exerccios .................................................................................................... 116

Agradecimentos .......................................................................................................................... 120


Bibliografia .................................................................................................................................... 121
ANEXO 1: FORMATOS DE EXIBIO ................................................................................... 122
ANEXO 2: RESPOSTA DOS EXERCCIOS ............................................................................. 123
LISTA DE FIGURAS ..................................................................................................................... 146
LISTA DE GRFICOS .................................................................................................................. 147
LISTA DE TABELAS .................................................................................................................... 148

1. Apresentao do MATLAB
O MATLAB surgiu na dcada de 70 em instituies de ensino e pesquisa
norte-americanas, University of New Mexico e Stanford University, como um
software destinado a cursos de teoria matricial, lgebra linear e anlise numrica.
Com o passar dos anos este software foi evoluindo com a contribuio e sugestes
de inmeros usurios, se tornando uma ferramenta padro em cursos de inmeras
reas do conhecimento.
Hoje mais de um milho de cientistas e engenheiros no mundo utilizam
MATLAB, seja para aplicaes na indstria tecnolgica ou acadmicas. Isso se
deve a grande variedade de aplicaes que a plataforma oferece, como
processamento de sinais e comunicao, processamento de imagem e vdeo,
sistemas de controle, teste e medies nas mais diversas reas, entre outras.
Para estudantes de Engenharia Eltrica o uso do MATLAB muito amplo,
na rea de Sistemas de Potncia pode-se ressaltar a importncia do uso inteligente
de matrizes para simular sistemas e a utilizao de grficos sempre que se deseja
exibir e analisar resultados.

1.1.

O que o MATLAB?

MATLAB (abreviatura de Matrix Laboratory) uma linguagem e ambiente


interativo de alto nvel no estudo de computao numrica, visualizao e
programao, estes aspectos so conhecidos como clculo numrico. Atravs do
MATLAB possvel analisar dados, desenvolver algoritmos e criar modelos.
Seus mecanismos so utilizados pela facilidade de explorar funes j
existentes, criar modelos prprios e rapidez na soluo. O MATLAB interpreta
elementos bsicos de informao como matrizes de dimenso infinita, sendo
assim, sua rapidez de processamento se justifica pela rpida iterao de elementos
matriciais.
O mito sobre a dificuldade de se utilizar o MATLAB desfeito comparando-o
com outros tipos de linguagem de programao como C/C++ ou Java. importante
salientar que, apesar da facilidade de estudo e uso do MATLAB, necessrio
manter um uso contnuo do mesmo a fim de firmar os aprendizados, j que a
prtica to importante quanto teoria.

1.2.

Utilidades do MATLAB

O MATLAB oferece boas opes no estudo de lgebra Aplicada,


Processamento de Sinais, Sistemas de Controle, Estatstica, entre outras. Porm
grande parte das aplicaes no se encontra nos comandos principais, ou seja,
existem conjuntos de funes designadas para reas especficas do conhecimento e
so chamados de Toolboxes (caixas de ferramentas). A cada verso do MATLAB
so incrementados novos Toolboxes e seus usos tpicos incluem alm do clculo
matemtico, algoritmos prprios, grficos apropriados daquela aplicao, e ainda a
anlise, explorao e visualizao de dados.
O MATLAB apresenta verses para diversos sistemas operacionais, tais
como Windows (verses superiores ao Windows 95), Linux e Macintosh.
Existem duas formas de se trabalhar no MATLAB:
1. Execuo direta de comandos na rea de trabalho, sendo esta forma
recomendada para uso de recursos rpidos.
2. Criao de arquivos de comandos, esta recomendada para criao de
rotinas e uso de recursos avanados.

1.3.

Viso Geral do MATLAB

O MATLAB apresenta vrias janelas de visualizao, dentre elas: janela de


comandos (Command Window), janela de variveis (Workspace), janela de exibio
de arquivos (Current Folder) e janela com histrico de comandos (Command
History).
Normalmente, ao iniciar o programa, elas aparecem na janela inicial, mas
podem ser acessadas pelo menu Desktop.Vejamos a janela inicial e seus
componentes.

Figura 1.1 -Janela inicial MATLAB.

Menu Principal:
Comandos de configurao do ambiente MATLAB bem semelhantes a
interfaces grficas j conhecidas.

Figura 1.2 -Menu principal MATLAB.

Alguns comandos importantes so: o primeiro item esquerda para criao


de um Script ou M-File, o menu Debug para compilar e rodar arquivos, o menu
Help para conseguir ajuda de recursos do MATLAB, e o diretrio destinado ao
armazenamento de arquivos, variveis, grficos, entre outros.

Command Window:
rea de trabalho onde so digitados os comandos, realizadas operaes e
exibidos resultados. A janela de comandos est pronta para uso aps a indicao
do prompt ">>".
Com as setas para cima e para baixo possvel o usurio recuperar comandos
j utilizados (no apenas as do prprio projeto, mas inclusive de dias anteriores).
8

Para agilizar a recuperao de um comando especfico, basta comear a escrever o


mesmo comando e utilizar as setas para escolher entre comandos previamente
utilizados que comeam com o texto escrito.
Uma coisa a se destacar que o MATLAB Case Sensitive, ou seja, letras
maisculas so diferentes de letras minsculas. Por exemplo, as variveis NUM e
num so duas variveis distintas.
Para se inserir comentrios, basta usarmos o caracter % seguido do texto
desejado:
>> %PRH-PB14 - Sistemas Eltricos Industriais
Podemos limpar a janela de comandos pelo comando clc.

Workspace:
rea de exibio das variveis criadas. Se voc clicar com o boto direito
sobre a barra de colunas, pode-se escolher quais informaes se quer visualizar a
respeito das variveis. Por exemplo: Nome, Valor, Classe, n de Bytes, entre outros.

Figura 1.3 - Menu Workspace, MATLAB.

Na barra de ferramentas do Workspace, h as seguintes opes (da esquerda


para a direita): Nova Varivel Abrir Varivel Importar Varivel Salvar
Deletar Relacionar Varivel a um Grfico. Algumas destas opes s sero
disponibilizadas no momento que voc selecionar uma das variveis criadas.
Dando um clique duplo em uma das variveis criadas, voc ir visualizar a
varivel no Editor. Alm de poder alter-la, esta uma forma de se visualizar as
matrizes e vetores criados na forma de tabelas:

Figura 1.4 - Exemplo de Visualizao de uma matriz pelo Editor.

Current Folder:
rea de exibio de arquivos contidos no atual diretrio (diretrio
selecionado para que os itens sejam salvos).

Command History:
rea de armazenamento de todos os comandos executados previamente no
MATLAB.

10

2. Introduo
Neste captulo sero abordadas as funcionalidades bsicas do MATLAB,
comeando pelas operaes aritmticas bsicas, constantes e funes matemticas
elementares e introduzindo o conceito de variveis e sua manipulao. Alm disso,
sero apresentados e discutidos alguns comandos teis para quem est iniciando
sua aprendizagem.

2.1.

Operaes Aritmticas

De incio, iremos apenas trabalhar com nmeros escalares (deixaremos


vetores e matrizes para um momento posterior) e suas operaes.

OPERADOR
+
*
/
\
^

FUNES
plus
minus
times
mrdivide
mldivide
power

DESCRIO
Soma
Subtrao
Multiplicao
Diviso Direita
Diviso Esquerda
Potncia

Tabela 2.1 - Operadores Aritmticos.

Funes so programas configurados para realizar uma determinada tarefa.


Para o caso de operaes aritmticas, podemos usar os operadores ou as funes
para realizar os clculos que queremos. Considere os exemplos a seguir:
Soma:

Subtrao:

>> 3+2

>> 3-2

ans =
5

ans =
1

>> plus(3,2)

>>minus(3,2)

ans =
5

ans =
1

11

Multiplicao:

Exponenciao:

>> 3*2

>> 3^2

ans =
6

ans =
9

>> times(3,2)

>> power(3,2)

ans =
6

ans =
9

Diviso Direita:

2.2.

Diviso Esquerda:

>> 3/2

>> 2\3

ans =
1.5000

ans =
1.5000

>> mrdivide(3,2)

>> mldivide(2,3)

ans =
1.5000

ans =
1.5000

Formato de Exibio

O formato de exibio dos nmeros configurado pelo comando format


seguido do identificador especfico. O Anexo 1 apresenta uma tabela com alguns
destes formatos. Iremos ilustrar sua utilizao atravs de algumas constantes
matemticas predefinidas pelo MATLAB.
Dentre estas constantes, temos:
CONSTANTE
pi
eps
i
j

VALORES
3.141592653589793
2.220446049250313e-016
0 + 1.0000i
0 + 1.0000i

Tabela 2.2 - Constantes Matemticas.

Em relao tabela acima, temos que o smbolo e-016 indica que o nmero
2.220446049250313 est multiplicando 10-16 e que para definir nmeros
complexos, podemos usar as constantes i e j.

Vamos ver alguns formatos de exibio para estas constantes:


SHORT:

2.3.

LONG:

>> format short


>> pi

>> format long


>> pi

ans =
3.1416

ans =
3.141592653589793

>> eps

>> eps

ans =
2.2204e-016

ans =
2.220446049250313e-016

>> i

>> i

ans =
0 + 1.0000i

ans =
0 + 1.000000000000000i

Funes Matemticas Elementares

O MATLAB nos fornece uma grande variedade de funes matemticas.


Dentre elas, citamos:
NOME
sin, sind, sinh
asin, asind, asinh
cos, cosd, cosh
acos, acosd, acosh
tan, tand, tanh

RETORNA
seno: radianos, graus e hiperblico
arco-seno: radianos, graus e hiperblico
cosseno: radianos, graus e hiperblico
arco-cosseno: radianos, graus e hiperblico
tangente: radianos, graus e hiperblico
Tabela 2.3 - Funes Trigonomtricas.

NOME
exp(x)
expm1(x)
log(x)
log1p(x)
log2(x)
log10(x)
nextpow2(x)
pow2(x)
realpow(x,y)
sqrt(x)

RETORNA
exponencial ( )
exponencial de x menos (  )
logaritmo natural () base 
logaritmo natural de  1 (   )
logaritmo na base 2
logaritmo na base 10
prxima potncia de 2, tal que  2
potncia de 2
potncia real
raiz quadrada
Tabela 2.4 - Funes Exponenciais.
13

Queremos calcular seno(30). Se usarmos apenas sin(30):


>> sin(30)
ans =
-0.98803
No nos fornecido o valor conhecido de 0,5 pois a funo sin usada para
calcular seno de valores em radianos. Por exemplo, seno(/2) igual a 1:
>> sin(pi/2)
ans =
1
Para calcular seno de valores em graus, usamos a funo sind:
>> sind(30)
ans =
0.5
Todas estas funes e outras podem ser vistas diretamente no MATLAB.
Como? Utilizando o help que ser detalhado a seguir.

2.4.

Help

A melhor referncia bibliogrfica que voc ir conseguir sobre o MATLAB


o prprio help dele. Por exemplo, em relao s funes, ele fornece informaes
em relao utilizao, sintaxe e exemplos.

Figura 2.1 - Help pelo Function Browser.

14

H vrias formas de se obter informaes das funes desejadas. Voc pode


apertar Shift+F1 (ou ir em Help -> Function Browser) e encontrar a funo desejada
navegando pelas pastas. Ao parar o mouse em cima de uma das funes,
mostrada uma caixa com um resumo das informaes ao lado (Figura 2.1). Um
clique duplo escolhe a funo e a coloca no Command Window.
Outra possibilidade ir em Help -> Product Help. Voc entrar na janela do
Help e pela navegao no canto esquerdo, basta ir em MATLAB -> Functions e
procurar a funo desejada:

Figura 2.2 - Help Browser.

H a possibilidade de consultar o Help diretamente da janela de comandos.


Por exemplo, digitando help, ser impresso na tela vrios tpicos de ajuda:

Figura 2.3 - Trecho da Lista de Tpicos de Help.


15

Podemos ver que as funes matemticas elementares esto no tpico


matlab\elfun. Podemos visualizar a lista delas pelo comando help elfun:

Figura 2.4 - Trecho da Lista de Funes da Biblioteca elfun.

Se queremos as informaes sobre a funo acos, por exemplo, basta


digitarmos help acos:

Figura 2.5 - Informaes Disponibilizadas na Janela para aos.

E, por fim, para informaes mais detalhadas, clicamos no ltimo link


apresentado (pgina de referncia do Help Browser) o que nos leva Figura 2.2.

16

2.5.

Nmeros Complexos

Teoria de Nmeros Complexos


Vamos fazer uma breve recordao de nmeros complexos. Para ilustrar os
conceitos, usaremos como exemplo o nmero 3+j4.
Em sua forma retangular, o nmero complexo possui uma parte real e uma
parte imaginria (multiplicado por 1= i ou j). Em sua forma polar, ele apresenta
um mdulo e uma fase, dados por:
  3 4  3 4  5

 !  3 4  tan%&
Comumente, apresentado como:

Matematicamente:

4
 53,13  0,927 , 
3

3 4 553,13

553,13  50,927,   5 /  01,23

Pelo Teorema de Euler:

5 /  01,23  5 / 4cos 0,927 !8 0,927 9  5 / 0,6 0,8  3 4


Entrada de Nmeros Complexos
Para inserir nmeros complexos em sua forma retangular, usamos as
constantes i e j. Por exemplo, o nmero (3+j4) pode ser inserido como:
>> num = 3+4*i
num =
3.0000 + 4.0000i
>> num = 3+4*j
num =
3.0000 + 4.0000i

17

Ou ainda podemos inserir o nmero com as funes seno e cosseno


especficas. Por exemplo, sei que o mdulo e a fase do nmero (3+j4) 5 e 53,13
ou 0,927 rad, respectivamente:
>> 5*[cos(0.927)+j*sin(0.927)]
ans =
3.0012 +

3.9991i

>> 5*[cosd(53.13)+j*sind(53.13)]
ans =
3+

4i

Tambm podemos inserir o nmero em sua forma exponencial 5 /  01,23 :


>> 5*exp(j*0.927)
ans =
3.0012 +

3.9991i

Funes Complexas:
Pelo help elfun, podemos encontrar uma lista de funes complexas, dentre
as quais destacamos:

NOME
abs
angle
conj
imag
real

RETORNA
mdulo do nmero complexo
fase do nmero complexo (em radianos)
conjugado complexo
parte imaginria
parte real
Tabela 2.5 - Funes Complexas.

Considere nosso exemplo tpico de (3+j4). Observe o resultado das funes


acima:
>> abs(3+j*4)
ans =
5

18

>> angle(3+j*4)
ans =
0.9273
>> conj(3+j*4)
ans =
3 - 4i
>> imag(3+j*4)
ans =
4
>> real(3+j*4)
ans =
3

Na biblioteca de funes matemticas especializadas (help specfun), ainda


temos funes de transformaes de coordenadas que se aplica a nmeros
complexos:

Figura 2.6 - Funes de Transformao de Coordenadas

Na forma retangular (3+j4), as coordenadas cartesianas so x=3 e y=4. Na


forma polar de (3+j4), as coordenadas polares so R=5 e TH=0.927. Vamos utilizar
a funo cart2pol. V nas informaes da funo:

Figura 2.7 - Instrues de uso da funo cart2pol.

19

Portanto, para obter as coordenadas polares de (3+j4), fazemos:


>> [fase,modulo]=cart2pol(3,4)
fase =
0.9273

modulo =
5
Agora, vamos fazer o inverso. Com as coordenadas polares, obter as
coordenadas cartesianas:
>> [x,y]=pol2cart(0.927,5)
x=
3.0012

y=
3.9991

2.6.

Variveis em MATLAB

Exceto quando fizemos a transformao de cartesiano para polar e viceversa, no criamos nenhuma varivel at o presente momento. Diferente de outras
linguagens de programao, na inicializao de variveis no MATLAB no
precisamos informar o tipo de varivel, apenas o contedo.
Ento se queremos criar uma varivel para armazenar um valor inteiro, basta
criar um nome e atribuir um valor inteiro por meio do operador =:
>> numero = 5
numero =
5
Se queremos uma varivel para armazenar um nmero real:
>> numero2 = 4.356
numero2 =
4.356

20

Se queremos uma varivel para armazenar uma cadeia de caracteres (String):


>> texto='ola a todos'
texto =
ola a todos
Todas as variveis criadas so exibidas no Workspace:

Figura 2.8 -Janela de Variveis.

Existe uma varivel default criada pelo MATLAB que armazena o valor do
ltimo comando. Esta varivel se chama ans, do ingls answer.
>> ans
ans =
11
OBS. 1: Caracter ;
Para inibir a exibio do resultado da operao na tela, coloque o sinal ; no
final da linha de comando. Exemplo:
>> resposta = 45-76*sind(30);
>> resposta
resposta =
7

21

OBS. 2: Unidades Complexas


Caso tenha sido definido variveis com os nomes ie j, no mais possvel
definir nmeros complexos da maneira usual:
>> i=5;
>> complexo=3+i*4
complexo =
23
Se isso ocorrer, voc pode remover (excluir) a varivel i para voltar
normalidade ou criar uma nova unidade complexa:
>> ii = sqrt(-1);
>> 3+ii*4
ans =
3+

4i

2.6.1. Manipulao de Variveis


Existem alguns comandos de consulta manipulao de variveis:
COMANDO

DESCRIO

who

Lista os nomes das variveis

whos

Lista nomes e caractersticas

clear

Limpa toda a memria = Exclui todas as variveis

clear nome_variavel

Exclui a varivel especificada

save nome_arquivo nome_variavel

Salva todas as variveis (ou as especificadas) no


arquivo selecionado

load nome_arquivo.mat

Carrega as variveis salvas

Tabela 2.6 -Comandos de Consulta e Manipulao.

22

Por exemplo, podemos salvar a varivel a no arquivo arq1 (save arq1 a) e


carregarmos posteriormente utilizando load arq1.matou load(arq1.mat):

Figura 2.9 - Comando save.

2.7.

Outros Comandos

H outros comandos no MATLAB em relao ao programa em si:


COMANDO

DESCRIO

pack

Com o objetivo de otimizar o uso da memria, esse


comando rene todas as variveis em um segmento
na memria RAM.

ver

Informa a verso do MATLAB, assim como os


componentes instalados (toolboxes)

version

Informa apenas a verso do MATLAB

demo

Abre uma janela contendo uma srie de programas


demonstrativos criados em ambiente MATLAB.
Dependendo da verso do MATLAB alguns vdeos
introdutrios esto disponveis.

whatsnew

Apresenta as atualizaes do software

23

bench

Executa um conjunto de funes do MATLAB


visando avaliar o desempenho do processador
utilizado.

quit/exit

Encerra o MATLAB

Tabela 2.7 - Outros Comandos.

2.8.

Lista de Exerccios

1) Crie as variveis A, B e C com contedos quaisquer, mas no deixe que os


valores sejam exibidos. Mostre na tela o nome das variveis. Apague a
varivel B atravs de um comando. Apague a tela inteira. Mostre na tela as
caractersticas das variveis restantes. Mostre o contedo destas.
2) Calcule a soma, subtrao, multiplicao e diviso dos nmeros resultantes
da raiz quadrada de 25 e de 23. Nomeie os resultados obtidos por a, b, c e
d, respectivamente.
3) Mostre os valores das variveis da questo anterior nos formatos short,
long, short e e long e.
4) Fazer as seguintes operaes com apenas um comando
a. 2
b. 7 /

c.

3<2


=> % 2
&&

? / &1@


 4

5) Atribua a X o valor 1,253. Obtenha os valores de u, y e z, dados por:

24

6) Dado o nmero complexo Z = 3+ 4i, determinar a parte real (R), parte


imaginria (I), mdulo (M) e ngulo (ang).

7) Considere um triangulo de lados, a, b e c. Com ngulos ab, bc e ac:


a. Use a lei dos cossenos para calcular c, sendo:
a = 3,7 b = 5,7 ab = 79
b. Visualize c com a maior preciso possvel.
c. Use a lei dos senos para calcular o ngulo ac. Exibi-lo em notao
cientfica.
Equaes necessrias:

8) Vamos treinar um pouco de comandos bsicos. Abaixo h uma lista de


comandos que devem ser executados (cada linha um comando). Digite-os
e analise o que acontece:
a = 2500/20
a = 2500/20;
who
whos
clear
who
b=1+2+3+4+5-7
x=30;
y = sind(x)
x=0.524;
y = sin(x)
help sin
help sind
save arquivo x
dir
a = 2^3

format long
a = 4/3
format short
a = 4/3
clear
a=10
b = a^-1
c=a+b
c=a-b
help sqrt
% Complexos:
a = 4+ i*5
real(a)
imag(a)
abs(a)
angle(a)

25

9) Calcule os valores a seguir:

26

3. Vetores e Matrizes
Neste captulo, comearemos a trabalhar com vetores e matrizes. Cabe dizer
que no captulo anterior as variveis com que trabalhamos j eram matrizes de
dimenso 1x1, pois o MATLAB trabalha essencialmente com um tipo de objeto,
uma matriz numrica retangular. Ou seja, at mesmo os vetores so considerados
pelo MATLAB como matrizes onde uma das dimenses 1.

3.1.

Entrada

Entrada de matrizes e vetores


O modo mais simplificado de entrar com vetores e matrizes no MATLAB
digitando-os na Janela de Comandos. Em relao criao de matrizes, devemos
lembrar que:

[ e ] delimitam uma matriz


ou , separa elementos da mesma linha, delimitando as colunas
; delimita linhas

Vejamos as diferentes maneiras de entrar com a matriz 3x3 abaixo:


1 2 3
A4 5 6B
7 8 9

Digitando linha por linha:


>> M=[1 2 3
456
7 8 9]

Digitando toda a linha de uma vez:


>> M=[1 2 3;4 5 6;7 8 9]
>> M=[1,2,3;4,5,6;7,8,9]

27

Elementos gerados por expresses


Elementos de matrizes podem ser gerados por expresses. Por exemplo:
>> A= [3+pi, 4*log(65); 2*(3+5), sqrt(9)]
A=
6.1416 16.6975
16.0000 3.0000

Matrizes Complexas
Para se inserir matrizes complexas, basta definir cada elemento complexo
utilizando os conceitos vistos anteriormente:
>> A= [1+5*i 2+6*i; 3+7*i 4+8*i]
A=
1.0000 + 5.0000i 2.0000 + 6.0000i
3.0000 + 7.0000i 4.0000 + 8.0000i

3.1.1. Vetores Sequenciais


Alm das formas de definio anteriores, os vetores podem ser criados de
forma sequencial. A sintaxe para isso
V = [valor inicial : incremento : valor final]
Por exemplo:
>> V=[1:1:10]
V=
1

9 10

Neste caso podemos omitir [ ] e, caso o incremento seja omitido, assume-se


incremento 1.
>> V=1:10
V=
1

9 10
28

Espaamento Linear
Vetores sequenciais ainda podem ser criados pela funo linspace. Sua
sintaxe :
V = linspace(valor inicial, valor final, quantidade)
A funo linspace cria a quantidade de nmeros fornecida entre o valor
inicial e final, com uma diferena uniforme entre eles. Supunha que eu quero um
vetor sequencial com 10 elementos de 1 a 10:
>> V=linspace(1,10,10)
V=
1

9 10

Agora eu quero um vetor sequencial de 1 a 10, com 8 nmeros igualmente


espaados:
>> V=linspace(1,10,8)
V=
1.0000 2.2857 3.5714 4.8571 6.1429 7.4286 8.7143 10.0000

Espaamento Logartmica

Vetores sequenciais criados pela funo linspace possuem espaamentos


lineares entre seus elementos. Podemos definir vetores sequenciais com
espaamentos logartmicos pela funo logspace. Sua sintaxe :
V = logspace(valor inicial, valor final, quantidade)
Se a quantidade for omitida, a funo gera 50 divises entre 10valor
10valor final automaticamente.

inicial

>> V=logspace(1,2,5)
V=
10.0000 17.7828 31.6228 56.2341 100.0000

29

3.2.

Indexao

O padro de identificao de elementos de matrizes segue a lgica da


matemtica:Nome_da_Matriz ( posio_da_linha, posio_da_coluna );
Por exemplo, queremos o elemento A23 da matriz abaixo:
>> A=[1 2 3; 4 5 6; 7 8 9]
A=
1 2
4 5
7 8

3
6
9

>> A(2,3)
ans =
6

Podemos identificar os elementos de forma sequencial, de cima para baixo,


da esquerda para direita. Ou seja, para a matriz A anterior, os elementos podem ser
identificados como:
D 1 D 4 D 7
CD 2 D 5 D 8 E
D 3 D 6 D 9

Ento se queremos o elemento A23, chamamos por A(8):


>> A(8)
ans =
6
Agora que sabemos nos referir a um elemento especfico de uma matriz,
considere o vetor abaixo:
>> B=[1 2 3];
O qu acontece se inserirmos um valor na posio B(6)?
>> B(6)=5
B=
1

30

Repare que a dimenso do vetor aumentou automaticamente para acomodar


o novo elemento. Os elementos nas posies 4 e 5 no foram definidos, ento o
MATLAB os define como zero.

3.3.

Operaes

Os operadores aritmticos trabalham com nmeros, vetores e matrizes.


Neste momento, iremos abordar as seguintes operaes entre matrizes utilizando
operadores aritmticos:

Transposta
Adio e Subtrao
Multiplicao
Diviso
Exponenciao

3.3.1. Transposta
Transposta de uma matriz a troca entre coluna e linhas, de maneira que a
coluna 1 se torne a linha 1, a coluna 2 se torne a linha 2, e assim sucessivamente. Se
a matriz A possui dimenses nxm, sua transposta ter dimenses mxn.
O operador utilizado para calcular a transposta de uma matriz o
apstrofo . Observe os exemplos abaixo:
Vetor Linha
>> A=[1 2 3 4 5];
>> A'
ans =
1
2
3
4
5
Vetor Coluna
>> B=[1;2;3;4;5];
>> B'
ans =
1 2

5
31

Matriz 2x3
>> C=[1 2 3;4 5 6];
>> C'
ans =
1 4
2 5
3 6

Matriz 3x2
>> D=[1 2;3 4;5 6];
>> D'
ans =
1 3
2 4

5
6

.
Devemos tomar cuidado com transpostas de matrizes complexas. Considere o
exemplo abaixo:
>> E=[1+j*1 1-j*6; 5 -4+j*0.1; j*10 0]
E=
1.0000 + 1.0000i 1.0000 - 6.0000i
5.0000
-4.0000 + 0.1000i
0 +10.0000i
0
Se fizermos apenas E, no estaremos obtendo a transposta de E, mas sim o
conjugado complexo transposto. Observe:
>> E'
ans =
1.0000 - 1.0000i 5.0000
0 -10.0000i
1.0000 + 6.0000i -4.0000 - 0.1000i
0
Perceba que na resposta acima, alm de ter feito a transposta, a parte
imaginria trocou o sinal (os elementos de E so conjugados dos elementos de E).
Para se obter a matriz transposta de uma matriz complexa, deve-se usar o
operador ponto antes de apstrofo (.):

>> E.'
ans =
1.0000 + 1.0000i 5.0000
0 +10.0000i
1.0000 - 6.0000i -4.0000 + 0.1000i
0

3.3.2. Adio e Subtrao

Adio e Subtrao Matricial:


As operaes de adio e subtrao so realizadas pelos operadores + e -.
Devemos lembrar que para somar e subtrair matrizes e vetores, estes precisam ter
as mesmas dimenses. Para exemplificar, considere as seguintes matrizes:
1
D  F4
7

Criando as matrizes:

2 3
10
5 6G  H  F10
8 9
10

10
10
10

10
10G
10

>> A=[1 2 3; 4 5 6; 7 8 9];


>> B=[10 10 10; 10 10 10; 10 10 10];
Vamos somar as matrizes A e B:
>> A+B
ans =
11 12 13
14 15 16
17 18 1
Do mesmo modo, vamos subtrair B de A:
>> A-B
ans =
-9 -8 -7
-6 -5 -4
-3 -2 -1
Ambas as operaes foram possveis pois A e B so matrizes de mesma
dimenso (3x3). O qu acontece ao tentar fazer estas operaes com matrizes de
dimenses diferentes? Nos fornecido uma mensagem de erro:
>> A=[1 2 3; 4 5 6; 7 8 9];
33

>> B=[10 10 10];


>> A+B
??? Error using ==> plus
Matrix dimensions must agree.
>> A-B
??? Error using ==> minus
Matrix dimensions must agree.
Estas operaes tambm servem para matrizes complexas:
>> C=[1-1*j 3-3*j; 2-2*j 4-4*j];
>> D=[1+1*i 3+3*i; 2+2*i 4+4*i];
>> C-D
ans =
0 - 2.0000i
0 - 4.0000i

0 - 6.0000i
0 - 8.0000i

Adio e Subtrao Escalar:


Ao fazer tais operaes entre uma matriz e um escalar, estamos na verdade
somando (ou subtraindo) cada elemento da matriz pelo escalar. Exemplo:
>> A=[1 2 3; 4 5 6];
>> A+1
ans =
2 3
5 6

4
7

>> A-2
ans =
-1 0
2 3

1
4

3.3.3. Multiplicao

Multiplicao Matricial:
A multiplicao realizada pelo operador *. A condio matemtica
necessria ao multiplicar duas matrizes, que o nmero de colunas da primeira
deve ser igual ao nmero de linhas da segunda.
IJK  LJM OMJK

34

A matriz resultante da operao ter o mesmo nmero de linhas da 1 matriz


e o mesmo nmero de colunas da 2 matriz. Observe o exemplo a seguir:
1
D  F3
5

2
1 2
4G  H  P
4 5
6

3
Q
6

>> A = [1 2; 3 4; 5 6];
>> B = [1 2 3;4 5 6];
A multiplicao A3x2*B2x3 resulta em uma matriz 3x3:
>> A*B
ans =
9 12 15
19 26 33
29 40 51
A multiplicao B2x3* A3x2 resulta em uma matriz 2x2:
>> B*A
ans =
22 28
49 64
Se tentarmos multiplicar duas matrizes em que o critrio matemtico no
respeitado, nos mostrado uma mensagem de erro:
>> C = [1 2 3; 4 5 6];
>> D = [2;3;4;5];
>> C*D
??? Error using ==> mtimes
Inner matrix dimensions must agree.
Lembramos que o mesmo aplicvel no caso de vetores.

Multiplicao por Escalar:


Qualquer matriz pode ser multiplicada por um escalar, o que significa que
todos os elementos dela so multiplicados pelo escalar. Por exemplo:
>> C = [1 2 3; 4 5 6];
>> D = pi*C

35

D=
3.1416 6.2832 9.4248
12.5664 15.7080 18.8496

Multiplicao Escalar:
Preste ateno no nome dado multiplicao acima. Uma multiplicao
POR ESCALAR e a outra multiplicao ESCALAR, tambm chamada de ponto a
ponto ou em conjunto. Seu operador representado por .* e significa que
estamos multiplicando elemento por elemento de duas matrizes.
Considere os exemplos abaixo:

A3X2.*B3X2:

>> A=[1 1; 1 1; 1 1];


>> B=[2 3; 4 5; 6 7];
>> A.*B

ans =
2 3
4 5
6 7

A2x2.*B2x1:

>> A=[3 4;5 6];


>> B=[1 2];
>> A.*B
??? Error using ==> times
Matrix dimensions must agree.
Perceba que a condio para que a multiplicao ponto a ponto seja possvel
que ambas as matrizes tenhas as mesmas dimenses.

36

3.3.4. Exponenciao
3.3.4.1. Potncia
O operador de potncia ^. Vejamos alguns exemplos:

Matriz elevada a escalar:


>> A=[2 3;4 6];
>> A^3
ans =
128 192
256 384
>> B=[2 3 4 6];
>> B^2
??? Error using ==> mpower
Matrix must be square.
Percebemos que a condio necessria para esta operao que a
matriz seja quadrada, pois B^2 = B*B, o que implica que o nmero de
colunas de B deve ser igual ao nmero de linhas de B.

Escalar elevado matriz: utilizado em lgebra Linear, onde os


clculos consideram autovalores e autovetores. Envolve conceitos
tericos que no sero estudados neste material.
>> A=[2 3;4 6];
>> 2^A
ans =
64.7500 95.6250
127.5000 192.2500

Matriz elevada matriz: no funciona, sendo indicado um erro.


>> A=[2 3;4 6];
>> B=[2 2;1 1];
>> A^B
??? Error using ==> mpower
At least one operand must be scalar.

37

3.3.4.2. Potncia Escalar


O operador de potncia escalar .^. Vejamos alguns exemplos:

Elemento de matriz a escalar:


>> A=[2 3 4 6];
>> A.^2
ans =
4 9 16 36
No h necessidade da matriz ser quadrada neste caso.

Escalar a elemento de Matriz:


>> A=[2 3 4 6];
>> 2.^A
ans =
4 8 16 64

Elemento de matriz a elemento de matriz:


>> A=[2 3 4 6];
>> B=[2 2 2 2];
>> A.^B
ans =
4 9 16 36
>> A=[2 3 4 6];
>> B=[2 2;2 2];
>> A.^B
??? Error using ==> power
Matrix dimensions must agree.
O critrio neste ltimo caso que as matrizes tenham as mesmas
dimenses.

38

3.3.5. Diviso
Podemos fazer quatro operaes de diviso: diviso matricial direita,
diviso matricial esquerda, diviso escalar direita e diviso escalar esquerda.
Veremos cada uma delas e suas caractersticas neste tpico, mas antes
introduziremos dois conceitos importantes que sero necessrios: determinante e
inversa de uma matriz.

3.3.5.1. Determinante e Inversa


Considere uma matriz A quadrada de dimenso n (nxn). Ela ser invertvel
quando existir uma matriz B de dimenso n tal que A*B = B*A = I, onde I uma
matriz identidade de dimenso n (matriz de dimenso n onde todos os elementos
da diagonal principal so 1s enquanto os demais so nulos). Neste caso, B=A-1 a
matriz inversa de A.
Por exemplo:
DP

2 1
0.2 0.2
1
Q H  D%&  P
Q D D%&  P
3 1
0.6 0.4
0

0
Q
1

Qual o critrio para que uma matriz seja invertvel alm dela ser quadrada?
Ela deve ser no-singular, ou seja, possuir determinante 0.
Para encontrar a determinante de uma matriz, utilizamos a funo det. Por
exemplo:
>> A=[-2 1;3 1];
>> det(A)
ans =
-5
>> B=[-2 -1 1;5 3 -1;3 1 -3];
>> det(B)

ans =
0

H vrias formas de se obter a inversa de uma matriz. Podemos fazer por


uma operao de exponenciao ou pela funo inv:
>> A=[-2 1;3 1];
>> A^-1

39

ans =
-0.2000 0.2000
0.6000 0.4000
>> inv(A)
ans =
-0.2000 0.2000
0.6000 0.4000

No caso da matriz B anterior, observe o que exibido ao calcular a inversa de B:

>> B=[-2 -1 1;5 3 -1;3 1 -3];


>> inv(B)
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 3.700743e-018.
ans =
1.0e+016 *
-0.9007 -0.2252 -0.2252
1.3511 0.3378 0.3378
-0.4504 -0.1126 -0.1126
Como determinante zero, a matriz no aceita inversa. Mas mesmo assim, o
MATLAB fornece uma resposta para o comando inv(B), porm avisando que a
matriz B tende a ser singular. Repare que a resposta exibida est com uma preciso
muito pequena

3.3.5.2. Diviso Matricial Direita


Para esta operao, utilizamos o operador /. A diviso matricial direita
entre B e A (B/A) equivale matematicamente a multiplicar a matriz B pela inversa
de A:
HD  H T8U D 1

Portanto, temos como condies para esta operao:

A deve ser invertvel


O n de colunas de B deve ser igual dimenso de A

Observe o exemplo a seguir:

2
DP
3

1
Q H  410
1

39
40

>> A=[-2 1;3 1];


>> B=[10 3];
>> B/A
ans =
-0.2000 3.2000
>> B*inv(A)
ans =
-0.2000 3.2000
possvel fazermos A/B? Vamos tentar com a funo inv:
>> A*inv(B)
??? Error using ==> inv
Matrix must be square.
Sabemos que somente matrizes quadradas podem ser invertveis. Mas vamos
tentar com o operador /:
>> A/B
ans =
-0.1560
0.3028
Se no possvel inverter a matriz B, como feito a diviso acima? A questo
para essa dvida que a equivalncia mostrada na expresso (1) matemtica,
mas no significa que o mtodo de clculo empregado pelo MATLAB para resolver
ambas o mesmo.

3.3.5.3. Diviso Matricial Esquerda


Para esta operao, utilizamos o operador \. A diviso matricial esquerda
entre B e A (A\B) equivale matematicamente a multiplicar a inversa de A pela
matriz B:
D\H  T8U D H 2

Portanto, temos como condies para esta operao:

A deve ser invertvel


41

A dimenso de A deve ser igual ao nmero de linhas de B

Observe o exemplo a seguir:


DP
>> A=[-2 1;3 1];
>> B=[2;-5];

2 1
2
Q H  P Q
3 1
5

>> A\B
ans =
-1.4000
-0.8000
>> inv(A)*B
ans =
-1.4000
-0.8000
possvel fazermos B\A? Vamos tentar tal como anteriormente:
>> inv(B)*A
??? Error using ==> inv
Matrix must be square.
>> B\A
ans =
-0.6552 -0.1034
Como no caso anterior, a equivalncia da expresso (2) matemtica, mas o
algoritmo de clculo para cada comando diferente.

3.3.5.4. Diviso Escalar


Tal como multiplicao escalar, esta operao entre A e B uma operao
ponto a ponto, ou seja, elemento por elemento e necessita que A e B sejam
matrizes de mesma dimenso.
Temos duas divises escalares: direita e esquerda.

42

Observe os exemplos:
DP
>> A=[10 20;30 40];
>> B=[2 4;6 8];
>> A./B

10 20
2 4
Q H  P
Q
30 40
6 8

ans =
5 5
5 5
>> B.\A
ans =
5 5
5 5

3.4.

Lista de Exerccios

1) Aprendemos diversas maneiras de criar matrizes e vetores. Crie as


seguintes matrizes:
1 2 3
54
D  F4 5 6 G H  W
1  8
7 8 9

8
2
XY  P
5
1T

[T
ZC 4
!\,] 9

[!
3 2
1

^  44

10 12

  4200

6 8

180

160

140

3 4
Q
3 0

T
!8 30 E
0
14

169

120

100

809

2) Crie dois vetores x e y, sendo que o primeiro contm 6 elementos de 0 a 5


e o segundo formado pelos elementos abaixo (em ordem):
i.
ii.
iii.
iv.
v.

Elemento 1: Raiz quadrada de 4;


Elemento 2: Soma dos nmeros 3 e -2
Elemento 3: -1 elevado ao quadrado
Elemento 4: Multiplicao dos primeiros 2 nmero primos
Elemento 5: Subtrao de i. por ii.
43

vi.
vii.

Elemento 6: Diviso de iv. por i.


Elemento 9: vale 1.

3) Gerar os seguintes vetores:


a. Y comea em -3.4, vai at 8, passo 0.32
b. Z comea em 10, vai at 1, passo -1.23
c. X comea em 0, vai at 15, passo 10*pi
4) Modifique a dimenso das matrizes abaixo de tal forma que as seguintes
operaes possam ser realizadas:
a. X = B*A
b. Y = X*(C^2)
Sendo A, B e C as matrizes:
A = [3 2; 1 0; 5 -5]
B = [-10 4; 0 -1; 1 6]
C = [1 2 0; 0 2 1; 3 3 3]
5) Utilizando as matrizes A e B declaradas abaixo, faa com que uma matriz Z
surja da multiplicao elemento por elemento delas.
A = [1 2 3; 1 2 3; 1 2 3]
B = [1 -1 3; 4 0 0; -4 -2 1]
6) Considere as seguintes tabelas com dados de uma montadora de
automveis:
Tabela A - Quantidade de Carros Produzidos por Ms:

CARRO 1
CARRO 2

PRODUO EM
JANEIRO
100
200

PRODUO EM
FEVEREIRO
120
180

Tabela B Custo de Produo (em milhares) por Carro:

CARRO 1
CARRO 2

CUSTO EM
JANEIRO
$10.0
$6.0

CUSTO EM
FEVEREIRO
$9.8
$6.1

Tabela C Quantidade de Peas Utilizadas na Produo de um Carro:


44

PEA 1
PEA 2

CARRO 1
25
42

CARRO 2
28
55

Crie trs matrizes para representar as tabelas. Faa o que se pede utilizando a
operao elementar necessria:
a. Armazene na matriz M1 o custo de produo total (quantidade de
carros * custo individual) em cada ms.
CUSTO TOTAL
EM JANEIRO

CUSTO TOTAL
EM FEVEREIRO

CARRO 1
CARRO 2

b. Armazene na matriz M2 a quantidade total de peas gastas de cada


tipo em cada ms.
QTDE TOTAL
EM JANEIRO

QTDE TOTAL EM
FEVEREIRO

PEA 1
PEA 2

7) Utilizando as operaes de diviso pela direita e pela esquerda, obtenha as


matrizes X e Y, resultantes de A/B e B\A, sendo A e B as matrizes do
exerccio de nmero 4. Compare com os resultados obtidos por suas
expresses matemticas equivalentes (A*inv(B) e inv(B)*A).
8) Quando se tem uma matriz A complexa, as seguintes operaes
proporcionam os mesmos resultados? Porque ?
X = A e Y = A.
9) Obtenha a transposta da matriz complexa X abaixo:
X = [(1+j) (1-5j); (6+2j) (1-2j); (3+3j) (1)]
10)Crie uma matriz quadrada de dimenso 3 onde os elementos (em ordem
sequencial de ndices) so mltiplos de 2 atravs da operao de potncia
escalar (escalar elevado a matriz).
11)Crie uma matriz quadrada de dimenso 4 de tal forma que o elemento de
ndice (a,b) na diagonal principal seja igual a (2*b+a*i), onde i unidade
complexa. Com essa matriz, calcule os valores de:
i.
ii.

B: transposta de A
C: soma das matrizes A e B
45

iii.
iv.
v.
vi.
vii.

D: inversa de A
E: conjugado da transposta de A
F: multiplicao escalar de B e E
G: A elevado a um nmero fracionrio qualquer
H: elementos de D elevado ao cubo

46

4. Manipulao de Vetores e Matrizes

4.1.

Funes Matemticas

Todas as funes matemticas vistas no captulo 2 se aplicam a matrizes e


vetores de quaisquer dimenses. Dependendo da funo escolhida, ela pode atuar
sobre toda a matriz ou apenas em seus elementos. Veremos a seguir algumas
funes matemticas aplicadas a matrizes (em caso de dvida, j sabemos que
basta consultar o help do MATLAB).

FUNES
plus
minus
mtimes
times
mpower
power
mrdivide
rdivide
mldivide
ldivide

OPERADOR

EXEMPLO

A+B
A-B
A*B

plus(A,B)
minus(A,B)
mtimes(A,B)

A.*B
A^esc
A.^esc

times(A,B)
mpower(A,esc)
power(A,esc)

A/B

mrdivide(A,B)

A./B

rdivide(A,B)

A\B
A.\B

mldivide(A,B)
ldivide(A,B)

Tabela 4.1 - Funes de Operao Aritmtica.

NOME
sin, sind, sinh
cos, cosd, cosh
sqrt(x)
abs
angle

RETORNA
seno: radianos, graus e hiperblico
cosseno: radianos, graus e hiperblico
raiz quadrada
mdulo do nmero complexo
fase do nmero complexo (em radianos)
Tabela 4.2 - Outras Funes Matemticas.

Considere o exemplo abaixo:


>> A=[30 45;90 180; 270 260];
>> sind(A)
ans =
0.5000 0.7071
1.0000
0
-1.0000 -0.9848
47

>> B=[1 4 9 16 25 36 49];


>> sqrt(B)
ans =
1 2

4.2.

Gerao de Matrizes

Existem mtodos de gerao de matrizes e vetores a partir de outras, como


tambm funes matriciais especficas para a gerao de matrizes usuais. Por
exemplo, uma matriz identidade de dimenso 50. Dificilmente, voc ir inserir
2500 elementos, onde a diagonal 1 e o resto 0 utilizando as formas de insero
de matriz estudadas no captulo 3. Neste tpico, iremos abordar este assunto.

4.2.1. Utilizando Conceitos de Indexao


Posio de Linha e Coluna:
Lembre-se que posso me referir a um elemento de matriz pela sua posio de
n de linha e n de coluna:
>> A=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16]
A=
1
5
9
13

2
6
10
14

3 4
7 8
11 12
15 16

>> A(2,2)
ans =
6
Podemos extrair matrizes menores de matrizes maiores utilizando esse tipo
de indexao. Observe:

Quero criar um vetor igual a [7 8], a partir de A. Perceba que [7 8] a


2 linha, colunas 3 e 4. Ento:
>> v1=A(2,[3 4])
v1 =
7 8
48

Quero criar uma matriz [2 3 4;6 7 8;10 11 12] a partir de A. Perceba


que se trata das linhas 1, 2 e 3, coluna 2, 3 e 4. Logo:
>> m1 = A([1 2 3],[2 3 4])
m1 =
2 3 4
6 7 8
10 11 12

Podemos fazer o mesmo item acima utilizando dois-pontos (:).


Lembre-se que, em vetores sequenciais, usamos dois pontos sem o
valor de acrscimo para representar uma sequncia de 1 em 1:
>> m1 = A(1:3,2:4)
m1 =
2 3 4
6 7 8
10 11 12

No caso acima, ainda temos mais uma alternativa. Se voc utilizar a


palavra end, ele seleciona at a ltima linha ou coluna. Como eu
solicitei da coluna 2 at a ltima coluna (4), eu posso us-lo:
>> m1 = A(1:3,2:end)
m1 =
2 3 4
6 7 8
10 11 12

Usar : sozinho onde deveria estar linha ou coluna significa todos os


elementos da linha ou da coluna. Por exemplo, quero pegar a 1
linha e depois a 3 coluna:
>> linha1 = A(1,:)
linha1 =
1 2 3

>> coluna3 = A(:,3)


coluna3 =
3
7
11
15
49

A utilizao de : permite tambm apagar uma linha ou coluna.


Quero apagar a linha 1 e a coluna 2:
>> A(1,:)=[]
A=
5 6 7 8
9 10 11 12
13 14 15 16
>> A(:,2)=[ ]
A=
5 7 8
9 11 12
13 15 16

Posio Sequencial:
Tambm podemos referir a um elemento pela ordem sequencial, de cima
para baixo, da esquerda para a direita:
>> A=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16]
A=
1
5
9
13

2
6
10
14

3 4
7 8
11 12
15 16

>> A(15)
ans =
12
Utilizando essa indexao, o end refere-se ao ltimo ndice, no caso, 16:
>> A(end)
ans =
16

50

As possibilidades aqui so:

Um vetor do elemento de ndice x a ndice y. Ex.: ndice 3 a 9:


>> A(3:9)
ans =
9 13

6 10 14

Um vetor do elemento de ndice x ao ltimo. Ex.: x=5:

>> A(5:end)
ans =
2 6 10 14

7 11 15

8 12 16

4.2.2. Concatenao
Concatenao por Coluna
Observe os exemplos abaixo:
>> V1=[1 2 3];
>> V2=[4 5 6];
>> [V1;V2]
ans =
1 2
4 5

3
6

>> V1=[1 2 3];


>> V2=[1 2 3;4 5 6];
>> [V1;V2]
ans =
1 2
1 2
4 5

3
3
6

A concatenao por coluna significa unir matrizes de mesmo n de colunas


utilizando a notao [matriz_1;matriz_2]resultando em uma nova matriz cujo n de
linhas a soma das matrizes que a compem e o n de colunas se mantm.

51

Concatenao por Linha


Observe os exemplos abaixo:
>> a=[1 2;3 4]
a=
1
3

2
4

>> b=[10 20 30;40 50 60]


b=
10 20 30
40 50 60
>> [a b]
ans =
1 2 10 20 30
3 4 40 50 60
A concatenao por linha significa unir matrizes de mesmo n de linhas
utilizando a notao [matriz_1matriz_2]resultando em uma nova matriz cujo n de
colunas a soma das matrizes que a compem e o n de linhas se mantm.
Repare que concatenar uma forma de modificar uma matriz:
>> A=[1 2 3;4 5 6]
A=
1
4

2
5

3
6

>> B=[1 1 1;2 2 2]


B=
1
2

1
2

1
2

>> A = [A B]
A=
1
4

2
5

3
6

1
2

1
2

1
2

52

4.2.3. Construes Elementares


Existem funes que constroem matrizes elementares, ou seja, matrizes com
configuraes tpicas, como por exemplo uma matriz nula, uma matriz unitria ou
ainda uma matriz identidade. Algumas dessas funes so mostradas a seguir:

FUNO

SINTAXE

DESCRIO

blkdiag

blkdiag (m1, m2, ...)

Dadas n matrizes, cria uma matriz


Diagonal em Blocos coma
matrizes informadas

eye

eye (n)

Cria uma Matriz Identidade de


dimenso nxn

ones

ones (n)
ones (n,m)

Cria uma matriz unitria de


dimenso nxn ou
de dimenso nxm

zeros

zeros (n)
zeros (n,m)

Cria uma matriz nula de


dimenso nxn ou
de dimenso nxm

magic

magic (n)

Cria uma matriz de dimenso nxn


onde a soma das linhas, das
colunas e das diagonais so iguais

rand

rand (n)
rand (n,m)

Cria uma matriz aleatria com


distribuio uniforme entre 0 e 1

randn

randn (n)
randn (n,m)

Cria uma matriz aleatria com


distribuio normal entre -1 e 1

Tabela 4.3 - Funes Geradoras de Matrizes.

53

Observe os exemplos a seguir:

blkdiag e ones:

>> m1=[1 2; 3 4];


>> m2=ones(3);
>> blkdiag(m1,m2)
ans =
1
3
0
0
0

4.3.

2
4
0
0
0

0
0
1
1
1

0
0
1
1
1

eye e zeros:
>> eye(2)
ans =
1 0
0 1

0
0
1
1
1

>> zeros(2,3)
ans =
0 0
0 0

0
0

Funes Matriciais

H diversas funes para clculos, consulta e manipulao de matrizes no


MATLAB. Neste tpico, iremos apresentar algumas delas.

4.3.1. Informaes Bsicas


FUNO

DESCRIO

[x,y] = size(A)

Retorna o nmero de linhas e colunas da


matriz A

length (A)

Retorna o valor mximo de elementos por


dimenso. Equivale a fazer max(size(A))

ndims (A)

Retorna nmero de dimenses da varivel


(Ex.: uma matriz 2D tem dimenso n x m, uma
matriz 3D tem dimenso n x m x k)

numel (A)

Retorna nmero total de elementos

Tabela 4.4 - Funes de Consulta.

54

Observe o exemplo abaixo:


>> A=[1 2 3 4;1 2 3 4;5 6 7 8];
>> [LINHAS COLUNAS] = size(A)
LINHAS =
3
COLUNAS =
4
>> max(size(A))
ans =
4
>> length(A)
ans =
4
>> ndims(A)
ans =
2
>> numel(A)
ans =
12

4.3.2. Manipulao
Neste tpico, mostraremos funes que alteram a estrutura de uma matriz:
FUNO

DESCRIO

fliplr (A)

Desloca elementos da matriz da esquerda para a


direita

flipup (A)

Desloca elementos da matriz de cima para baixo

55

repmat (A,x,y)

Replica a matriz A em x linhas e y colunas

reshape (A,x,y)

Redimensiona a matriz A em x linhas e y colunas

sort(A, metodo)

Ordena o vetor A ou as colunas da matriz A de acordo


com o mtodo desejado (que pode ser ascend ou
descendpara crescente e decrescente)
Tabela 4.5 - Funes de Manipulao.

Observe os exemplos a seguir:

repmat:
>> m1 = [1 2;3 4]
m1 =
1 2
3 4
>> repmat(m1,2,3)
ans =
1
3
1
3

2
4
2
4

1
3
1
3

2
4
2
4

1
3
1
3

2
4
2
4

reshape:
>> m1 = [1 2 3 4 5 6;7 8 9 10 11 12]
m1 =
1 2
7 8

3 4 5 6
9 10 11 12

>> reshape(m1,3,4)
ans =
56

1
7
2

8 4 11
3 10 6
9 5 12

No caso do reshape, os elementos so reordenados obedecendo


sua indexao sequencial, no caso, de m1(1) a m1(12).

4.3.3. Informaes Diversas


Funes Diversas:
FUNO

DESCRIO

max (A) / min (A)

Retorna o valor mximo/mnimo (por coluna, no


caso de A ser matriz)

prod (A)

Retorna o produto dos elementos (por coluna, no


caso de A ser matriz)

cumprod (A)

Retorna um vetor com produtos acumulados (por


coluna, no caso de A ser matriz)

sum (A)

Retorna a soma dos elementos (por coluna, no caso


de A ser matriz)

cumsum(A)

Retorna um vetor com soma acumulada (por coluna,


no caso de A ser matriz)

trace(A)

Retorna a soma dos elementos da diagonal principal


de uma matriz quadrada

diag (A)

Se A uma matriz: retorna os elementos da


diagonal de A;
Se A um vetor: retorna uma matriz com os
elementos de A na diagonal.

tril(A) / triu (A)

Retorna uma matriz triangular inferior/superior


obtida a partir de A

indice = find (criterio)

Retorna o ndice dos elementos que atendem


condio estipulada
Tabela 4.6 - Funes Diversas.
57

find:
>> m = [-1 0 3;0 -5 6;7 8 0]
m=
-1 0
0 -5
7 8

3
6
0

>> find(m) %indice dos elementos diferentes de zero


ans =
1
3
5
6
7
8
>> find(m==0) %indice dos elementos iguais a zero
ans =
2
4
9
>> find(m<0) %indice dos elementos menores que zero
ans =
1
5

4.3.4. lgebra Linear


Algumas funes utilizadas para lgebra Linear:
FUNO

DESCRIO

det (A)

Retorna o valor da determinante de A

cond (A)

Retorna a condio de inverso da matriz (um valor


pequeno indica que a matriz tem boas condies de
ser invertvel)

inv (A)

Retorna a inversa de A

norm (A)

Retorna a norma do vetor (comprimento do vetor)


ou da matriz (maior valor singular da matriz)
58

rank(A)

Retorna o posto da matriz A (n de linhas ou colunas


linearmente independentes).

[V,D] = eig(A)

V: Matriz de autovetores de A
D: matriz diagonal de autovalores de A

compan (p)

Cria a matriz companheira do polinmio dado


(matriz cujo autovalores so razes do polinmio)

poly (A)

Retorna um vetor com os coeficientes do polinmio


caracterstico de A

polyeig (A)

Retorna um vetor contendo as razes do polinmio


caracterstico de A
Tabela 4.7 - Funes de lgebra.

norm:
>> m = [0 1 2]
>> norm(m)
ans =
2.2361

4.4.

Resoluo de Sistemas Lineares

4.4.1. Mtodo Convencional


Considere o exemplo abaixo:

Podemos escrever este sistema na forma matricial A*X=B:


1
2
1
8
F 2 1 1 G I  F 3 G
1 1 2
5

59

A soluo da equao matricial acima dada por X = A-1*B. Esta operao


pode ser feita de vrias formas pelo MATLAB:
i.
ii.
iii.

X = inv(A)*B
X = A\B
X = linsolve(A,B)

Vamos entrar com as matrizes A e B:


>> A = [1 2 1;2 -1 1;-1 1 -2];
>> B = [8;3;-5];
Calculando pelas trs opes acima, chegamos ao mesmo resultado:
>> X = inv(A)*B
X=
1
2
3
>> X = A\B
X=
1.0000
2.0000
3.0000

>> X = linsolve(A,B)
X=
1.0000
2.0000
3.0000
Qual a diferena entre eles? Velocidade de Processamento. O clculo
realizado pela 2 opo geralmente de duas a trs vezes mais rpido quando se
trata de matrizes com dimenses elevadas. Podemos fazer o teste de velocidade
utilizando o comando tic, ..., toc. Considere uma matriz quadrada de dimenso 5000
criada aleatoriamente. Iremos medir o tempo levado em um determinado
computador:

60

>> MATRIZ = rand(5000);


>> B = rand(5000,1);
>> tic, inv(MATRIZ)*B, toc
..
Elapsed time is 24.386924 seconds.
>> tic, MATRIZ\B, toc
......
Elapsed time is 7.666046 seconds.
>> tic, linsolve(MATRIZ,B), toc
..
Elapsed time is 7.682518 seconds.

4.4.2. Escalonamento
Considere o mesmo exemplo anterior:

Podemos concatenar por linha as matrizes A e B e proceder com o


escalonamento, de maneira que obtenhamos o resultado na ltima coluna:
1
2
1 8
1 0 01
F 2 1 1 3 G _ F0 1 02G
1 1 25
0 0 13

No MATLAB, basta usarmos a funo rref:


>> A = [1 2 1;2 -1 1;-1 1 -2];
>> B = [8;3;-5];
>> C = [A B]
C=
1 2 1 8
2 -1 1 3
-1 1 -2 -5
>> rref(C)

61

ans =
1 0
0 1
0 0

0
0
1

1
2
3

>> X = ans(:,4)
X=
1
2
3

4.4.3. Funo solve


Considere o mesmo exemplo anterior:

A funo solve dispensa a necessidade de se criar as matrizes. Ele resolve


diretamente com as equaes:
>> [x1 x2 x3] = solve('x1+2*x2+x3=8','2*x1-x2+x3=3','-x1+x2-2*x3=-5')
x1 =
1
x2 =
2
x3 =
3

62

4.5.

Lista de Exerccios

1) Considere a matriz abaixo:

Qual a sada esperada de cada comando abaixo?


a.
b.
c.
d.
e.
f.

A(1:5,3)
A(1:5,7:10)
A(1:2:5,:)
A(1:4:3,2:1:4)
A(:,:)
A(4:-1:2,:)

2) Construir uma matriz 3x5, em que a lei de formao da primeira linha


seno, a segunda cosseno e a terceira raiz quadrada do vetor 0:0.25:1.
3) Considere a matriz A=[1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15]; Pede-se:
a.
b.
c.
d.
e.

Criar B com todos os elementos da 3 coluna de A;


Criar C com todos os elementos da 3 linha de A;
Criar a matriz D com os elementos da 2 a 4 coluna da 1 linha de A;
Criar E com todos os elementos da 1 linha a partir da 2 coluna de A;
Criar F = [11 4; 7 14] a partir dos elementos de A.

4) Crie o vetor a de 4 elementos espaados linearmente em ordem


decrescente de 10 a 4. Utilizando os conceitos de indexao, monte a matriz
A de acordo com as instrues abaixo:
i.
ii.
iii.
iv.

1 coluna: transposta de a
2 coluna: inversa dos elementos da 1 coluna
3 coluna: soma da transposta de a com o escalar (3*i)
4 coluna: conjugado complexo da 3 coluna.

5) Crie um vetor de 4 elementos espaados linearmente em ordem


decrescente de 10 a 4. Monte a matriz A de acordo com as instrues abaixo
utilizando concatenao:
i. 1 coluna: transposta do vetor
ii. 2 coluna: conjugado da transposta da soma do vetor com 3*i
63

iii. 3 coluna: transposta da subtrao do vetor por pi*i


iv. 4 coluna: transposta de um vetor cujos elementos so obtidos pela raiz
quadrada da inversa de cada elemento do vetor.
Imprima a matriz A.

6) Sejam as matrizes abaixo:


1
DC5
9
13

2
6
10
12

3
7
11
13

4
7.4 [T 0
8 E H  F
4.01 2 3G
12
0.1 10 0
16

a. Crie a matriz A utilizando : para definir as linhas e B da forma


tradicional
b. Atribua os elementos a11, a12 e a13 a um vetor c
c. Atribua a 3 coluna da matriz B a um vetor-linha d
d. Extraia as reas hachuradas (elementos zero nas demais posies)
e. Atribua a 2 linha de B primeira linha de A (o 4 elemento fica nulo)
f. Na nova matriz A, troque as linhas 2 e 3 pelas transpostas das colunas 1
e 3.
7) Considere a matriz abaixo:

Utilizando as submatrizes destacadas, construir matrizes com as seguintes


dimenses:
a. 2x4
b. 4x2
c. 1x8
8) Gere um vetor com 10 elementos aleatrios entre 0 e 20. Imprima o maior e
o menor nmero sorteado.
9) Gere um vetor com 6 elementos aleatrios entre 0 e 10. Encontre o ndice e
o valor do menor e do maior elemento desse vetor e imprima na tela ambos.
64

10)Utilizando a funo randn, crie uma matriz de dimenso 5x5, e obtenha:


a.
b.
c.
d.
e.
f.
g.
h.
i.
j.
k.
l.
m.

Soma dos elementos da coluna


Soma dos elementos da linha
Soma dos elementos da diagonal
Maior valor da letra a
Menor valor da letra b
Organize-a em ordem crescente por linha
Encontre a posio dos elementos maiores que 0.5
Encontre a transposta
Encontre o posto e a determinante
Avalie a condio de inversa
Ache a inversa
Altere com uma concatenao por linha com uma matriz 5x5 de 1s
Exclua as 2 primeiras e 3 ltimas colunas

11)Sabendo que a distncia entre os pontos A(x1,y1) e B(x2,y2) dado por:


` 1  2  a1  a2
Calcule a distncia entre os pontos P1(1,5) e P2(4,9):
a. Utilizando a funo sqrt e os operadores aritmticos
b. Utilizando a funo sqrt e a funo sum
c. Utilizando uma nica funo
12)Numa pequena ilha, h 100 pessoas que trabalham na nica empresa ali
existente. Seus salrios (em moeda local) tm a seguinte distribuio de
frequncias:
SALRIO
$50.00
$100.00
$150.00

FREQUENCIA
30
60
10

Deseja-se saber:
a. Qual a mdia dos salrios das pessoas?
b. Qual a varincia dos salrios?
c. Qual o desvio padro dos salrios?
Dicas:
a mdia dos salrios uma mdia ponderada entre os valores de salrio
e frequncia, ou seja, igual soma de cada valor do salrio
multiplicado por sua frequncia, dividida pela soma das frequncias.

65

a varincia dos salrios a soma do quadrado da diferena entre cada


valor de salrio e a mdia, multiplicada pela sua frequncia, dividida
pela soma das frequncias.
Desvio padro a raiz quadrada da varincia.
Faa os clculos usando dois vetores para guardar os valores de salario
e frequncia. As soma podem ser feitas pela funo sum.

13) Resolver o sistema abaixo:

Resolva tanto por inv quanto por \ medindo a velocidade de


processamento (tic, ..., toc).
Dica: mude o formato de exibio para rat (formatao de nmeros
racionais)
14) Resolver o sistema do exerccio 12 por escalonamento (rref).
15) Resolver o sistema do exerccio 12 pela funo solve.
Dica: podemos utilizar Strings para armazenas as expresses matemticas
(Strings o nome que se d quando vetores armazenam textos, escritos entre
aspas simples). Em seguida, utilizamos solve(str_1 , str_2 , ...).

66

5. Introduo ao Editor (Arquivos .m)


Os arquivos do programa MATLAB tm a extenso .m e , por esse motivo,
so casualmente chamados de m-files, ou arquivos .m. Tambm so chamados de
script-files porque o MATLAB apenas segue o script encontrado no arquivo.
So arquivos de texto que contm uma sequncia de comandos, e neste tipo
de arquivo que so criados os algoritmos ou rotinas.
Basicamente qualquer rotina pode ser criada no prprio Command Window
na tela inicial do MATLAB, porm nesta janela a edio do algoritmo fica bastante
complicada, pois as linhas j escritas no podem ser editadas e o MATLAB
processa cada linha imediatamente depois que foi escrita. Isso se d porque na
verdade esta janela no foi feita para programao, e sim para rodar rotinas mais
simples.
Para criar um algoritmo devemos abrir um novo m-file. Para abrir existem
duas maneiras, a primeira ir ao menu File e depois New>M-file (ou Script); no
outro mtodo basta clicar no cone
na parte superior esquerda do MATLAB.
Ao se clicar aparecer um editor todo em branco, e ser nele que iremos incluir a
rotina.
Neste editor a seguinte barra aparecer na parte superior:

Figura 5.1 - Menu superior janela Edit.

nesta barra que temos os comandos bsicos, tais como abrir, salvar,
recortar, copiar, desfazer, repetir, imprimir, etc.
O arquivo carrega com um nome padro provisrio chamado Untitled. Aps
digitar seu algoritmo (veremos os principais comandos no prximo captulo), voc
dever salv-lo clicando no cone
. importante salientar que no nome do
arquivo no poder conter espaos, acentos e alguns dgitos, tais como hifens e
barras. Uma sugesto para separar as palavras usar o underline (_).Lembrando
que o nome ser case-sensitive.
Obs.: Algumas vezes podem aparecer tambm um arquivo .asv. Estes so
arquivos comuns gerados pelo autosave do MATLAB.

67

Se um arquivo .m no for salvo em uma pasta padro do MATLAB


aparecer a mensagem abaixo perguntando se deseja mudar a pasta padro ou
adicionar a nova pasta ao grupo padro. A escolha de um ou outro no far muita
diferena, ento fica a sua escolha.

Figura 5.2 -Mensagem de pasta padro do MATLAB.

Para executar o algoritmo basta clicar no cone


(ou usar o atalho F5).
Caso voc clique nele antes de salvar o arquivo pela primeira vez, o MATLAB
pedir que voc salve o arquivo primeiro. Se j tiver salvado pela primeira vez,
basta clicar neste cone para salvar e executar o programa editado.
Obs.: Enquanto um algoritmo/rotina estiver sendo executado aparecer na
parte inferior da tela inicial do MATLAB o cone

Segue na prxima folha uma tabela com as principais teclas de atalho:

Tecla

Ao

Alt+S

Abre menu Start

Ctrl+0

Configura Command Window como janela corrente

Ctrl+1

Configura Command History como janela corrente

Ctrl+2

Configura Command Directory como janela corrente

Ctrl+3

Configura Wokspace como janela corrente

Ctrl+4

Configura Help como janela corrente (se estiver aberta)

Ctrl+A (select all)

Seleciona tudo

Ctrl+C (copy)

Copia
68

Ctrl+D (duplicate)

Duplica

Ctrl+F (find)

Procura

Ctrl+I (smart indent)

Organiza pargrafos de m-files (editor de textos)

Ctrl+N (new)

Cria novo arquivo

Ctrl+O (open)

Abre arquivo

Ctrl+P (print)

Imprime

Ctrl+Q (quit)

Fechar sesso e sai do MATLAB

Ctrl+S (save)

Salva arquivo

Ctrl+Shift+0

Configura Edit como janela corrente (se estiver aberto)

Ctrl+V (paste)

Cola

Ctrl+W

Fecha janela (Command History)

Ctrl+X (cut)

Refaz

Ctrl+Y (redo)

Desfaz

Ctrl+Z (undo)

Cancela comando de execuo

ESC (escape)

Cancela formato de execuo

F10 (next step)

Executa prxima instruo (debug mode)

F11 (step in)

Entra na execuo da prxima funo (debug mode)

F11+Shift (step out)

Sai da execuo da funo corrente (debug mode)

F5 (run)

Executa a funo at o final

Tab

Avana para o prximo campo

Tab+Ctrl

Avana para a prxima janela


Tabela 5.1 Principais atalhos.

69

6. Programao
6.1.

Function

No MATLAB existe o comando function que permite criar funes que so


compostos por sequncia de expresses e comandos, mas que aceitam parmetros
de entrada e retorna alguns parmetros de sada.
Quando criada uma funo dessa maneira qualquer varivel definida
internamente por predefinio se torna uma varivel local, ou seja, quando a
funo chega ao fim essa varivel deixa de existir.

6.1.1. Sintaxe

No arquivo .m onde se define a funo utiliza-se a seguinte sintaxe, este


arquivo deve ser salvo com o mesmo nome da funo definida em seu interior.
function [parametros_de_saida] = nome_da_funcao(parametros_de_entrada)
<SEQUENCIA DE COMANDOS>

Para se chamar a funo criada, isso pode ser feito atravs de outro arquivo
.m ou pelo Command Window, e a sintaxe a ser utilizada mostrada a seguir:
[parametros_de_saida] = nome_da_funcao(parametros_de_entrada)

EXEMPLO 1
Criar uma funo que receba como parmetros de entrada 3 valores e
retorne a mdia.
function [media] = calcula_media(x,y,z)
media = (x,y,z)/3;
Para chamar a funo, escreva no Command Window, a seguinte sintaxe:
[media] = calcula_media(10,9,8)

70

6.2.

Operadores

Os dois subtpicos abaixo abordaro os operadores relacionais e


lgicos.Estes podem ser utilizados para comparar duas matrizes de mesma ordem,
uma matriz e um escalar ou ainda dois escalares, como ser mostrado a seguir:
6.2.1. Operadores Relacionais

Operador
<
<=
>
>=
==
~=

Descrio
Menor que
Menor ou igual a
Maior que
Maior ou igual a
Igual a
Diferente de

Tabela 6.1 - Operadores Relacionais.

A seguir ilustraremos os operadores descritos na Erro! Fonte de referncia


no encontrada. com alguns exemplos.
>> A = 1:9
A=
1

>> B = 9-A
B=
8

>> vf = A>4
vf =
0

>> Vf1 = (A==B)


Vf1 =
0 0

>> Vf2 = (A>=B)


Vf2 =
0 0

71

A comparao feita entre os pares de elementos correspondentes e o


resultado uma matriz composta dos nmeros 1 ou 0, sendo que o primeiro
representa VERDADEIRO e o segundo FALSO. Como pode ser observado a
seguir:
>> 4+4~=8
ans =
0

6.2.2. Operadores Lgicos


Operador
&
||
~

Descrio
E
Ou
No

Tabela 6.2 - Operadores Lgicos.

A seguir ilustraremos os operadores descritos na Erro! Fonte de referncia


no encontrada. com alguns exemplos.
>> 5==5 & 4==3
ans =
0
>> 5==5 || 4==3
ans =
1
>> ~(5==5 & 4==3)
ans =
1

72

6.3.

Controle de Fluxo

No MATLAB os comandos de controle de fluxo se assemelham ao utilizados


na Linguagem C tendo, porm, uma estrutura diferente.

6.3.1. FOR
A estrutura geral do comando FOR ser apresenta a seguir. Como poder ser
observado este comando possibilita que uma srie de operaes seja repetida
por nmero fixo de vezes e pr-definido. O comando end funciona como limite
inferior do corpo do lao.
for variavel = valor inicial : incremento : valor final
comandos
end

Da forma como descrito anteriormente, o valor inicial declarado adicionado


do incremento at que se atinja o valor final desejado. Porm, uma outra estrutura
utilizando o FOR pode ser realizada, onde o incremente no declarado. Neste
caso o MATLAB entende que o valor a ser adicionado igual a 1.
for variavel = valor inicial : valor final
comandos
end

A seguir sero apresentados trs exemplos da construo de um vetor e uma


matriz, respectivamente, utilizando o comando FOR.

EXEMPLO 1
A=1;
for ii=1:2:9
X(A) = 2*ii;
A = A+1;
end
X=
2

6 10 14 18

73

EXEMPLO 2
for ii=1:9
X(ii) = 2*ii;
end
X=
2

8 10 12 14 16 18

EXEMPLO 3
for ii=1:3
for jj=1:3
Y(ii,jj) = ii+2*jj;
end
end
Y=
3
4
5

6.3.1.1.

5
6
7

7
8
9

Exerccios resolvidos utilizando o lao FOR

1) Calcular a tabuada do nmero 19.


for num=1:19
tabuada(num) = 19*num;
end

2) Contar quantos nmeros pares h entre 0 e 50.


soma = 0;
for n=0:2:50
soma = soma +n;
end

3) Calcular o fatorial do nmero 10.


fatorial = 1;
for a=1:10
fatorial = fatorial*a;
end
74

6.3.2. IF-ELSE-END
Em algumas situaes uma sequncia de comandos tem que ser realizada
condicionalmente, utilizando para isso um teste relacional. Tal operao
realizada por meio da estrutura IF-ELSE-END, como ser descrito abaixo.
if expressao1
comandos realizados se expressao1 for VERDADEIRA
elseif expressao2
comandos realizados se expressao2 for VERDADEIRA
else
comandos realizados se ambas as expresses forem FALSAS
end

A seguir ser ilustrado um exemplo dos comandos anteriormente descritos.

EXEMPLO 1
for ii=1:3
for jj=1:3
if jj == ii
A(ii,jj) = 2;
elseif abs(ii-jj) == 1
A(ii,jj) = -1;
else
A(ii,jj) = 0;
end
end
end

Duas outras formas mais simples de se utilizar os comandos IF-ELSE so


mostradas a seguir:
if condicao
comandos realizados se a condio for VERDADEIRA
else
comandos realizados se for FALSA
end

OU
if condicao
comandos realizados se a condio for VERDADEIRA
end

75

EXEMPLO 2
Calcular o desconto de 30% quando a venda de mesas exceder 5 unidades,
sendo que o custo de cada uma de R$ 89,99.
num_mesas = input('Informe o nmero de mesas desejadas:
preco = 89.99;
custo_total = preco*num_mesas;
if(num_mesas >5)
custo_total = 0.7*custo_total;
end
disp(custo_total);

');

Observao: Os comandos input e disp utilizados no exemplo acima sero


discutidos no tpico Comandos Bsicos.

6.3.2.1.

Exerccios resolvidos utilizando o condicional IF-ELSE

1) Dado qualquer distncia que um veculo percorrer (valor real em km), a


capacidade do tanque de combustvel (valor real em litros) e a mdia de
consumo de combustvel do veculo (valor real em km/l). Supondo que o
tanque estar cheio na partida, mostrar uma das mensagens:
PRECISA REABASTERCER ou NO PRECISA REABASTECER
distancia = input('Informe a distncia percorrida pelo veculo:
mc = 10.8; %Mdia de consumo
ct = 55;
%Capacidade do tanque do veculo
if mc*ct >=distancia
disp('NO PRECISA REABASTERCER ');
else
disp('PRECISA REABASTERCER ');
end

');

2) Os funcionrios contratados pela prefeitura de uma cidade so classificados


em 3 nveis conforme a pontuao obtida em 2 provas aplicadas de acordo
com o seguinte critrio:
Nvel
A
B
C

Pontuao
Superior a 8 em pelo menos uma das provas ou a soma
dos pontos for superior a 14.
Superior a 6 em pelo menos uma das provas ou soma dos
pontos superior a 9.
Nenhum dos casos acima.
76

Em cada prova a pontuao um valor real de 0 a 10. Desenvolva um


programa que receba as duas notas de um funcionrio e mostre como
resposta o nvel em que est classificado.
% CLASSIFICAO DOS FUNCIONRIOS:
nota1 = input('Informe a primeira nota: ');
nota2 = input('Informe a segunda nota: ');
if nota1>8|| nota2>8||(nota1+nota2)>14
disp('Nvel A');
elseif nota1>6|| nota2>6||(nota1+nota2)>9
disp('Nvel B');
else
disp('Nvel C');
end

6.3.3. WHILE

O comando WHILE se assemelha ao FOR, porm, ao contrrio deste, o


nmero de execues do Loop no pr-definido.
Sua estrutura geral definida abaixo:
while condicao
comandos
end

Os comandos no escopo da funo WHILE (entre while e end) so executados


enquanto todas as condies forem verdadeiras.

EXEMPLO 1
Calcular o fatorial de um nmero qualquer.
x = input('Informe um valor para o qual se deseja calcular o fatorial:
fatorial = 1;
while x>0
fatorial = fatorial*x;
x = x-1;
end
disp(fatorial);

');

77

6.3.3.1.

Exerccios resolvidos utilizando o comando WHILE

1) Calcule a seguinte srie com 50 termos:

1 3 5 7
 
2 2 2 2

%CALCULO DA SRIE
n = 0;
x = 1;
serie = 0;
while n<50
serie = serie + x/2;
x=x+2;
n=n+1;
end
disp(serie);

6.3.4. SWITCH-CASE
Essa estrutura funciona como uma chave seletora, escolhendo a expresso
correta dentro de uma lista e, por fim, executa os comandos.
switch expressao
case teste_expressao1
comandos_1
case teste_expressao2
comandos_2
.
.
.
otherwise
comandos_n
end

Observao: A expresso no necessariamente precisa ser um valor


numrico, pode-se utilizar string de caracteres. Quando a expresso um valor
numrico o comando case testa se:
expressao== teste_expressao

e quando uma string o teste efetuado pelo comando strcmpque compara duas
strings e retorna 1 se so iguais e 0 caso contrrio.

78

EXEMPLO 1
Converso de centmetros para polegadas, ps ou metros.
% CONVERSO DE UNIDADES
x = input('Informe em centmetros o valor a ser convertido: ');
tipo_unidade = input('Informe para qual unidade voc deseja converter o valor informado: ');
switch tipo_unidade
case {'polegadas','pol'}
y = x/2.54;
disp([num2str(y) 'pol']);
case {'pes','p'}
y = x/(2.54*12);
disp([num2str(y) 'p']);
case {'metros',m}
y = x/100;
disp([num2str(y) 'm']);
otherwise
disp('Unidade no encontrada');
end

Observao: Quando uma varivel receber um valor atravs do comando


input e for do tipo string, obrigatoriamente os dados informados devem estar
contidos entre aspas simples, como pode ser notado no caso abaixo:

Informe em centmetros o valor a ser convertido:

50

Informe para qual unidade voc deseja converter o valor informado:

'pes'

1.6404p

79

6.3.4.1.

Exerccios resolvidos utilizando o comando SWITCH

1) Faa um programa que o usurio possa digitar qualquer ms do ano e como


resultado seja mostrado o nmero de dias do ms correspondente.
mes = input('Digite o ms desejado(1-Janeiro, 2-Fevereiro, 3-Maro ... 12 - Dezembro):

');

switch mes
case 1
disp('31 dias');
case 2
disp('28 ou 29 dias');
case 3
disp('31 dias');
case 4
disp('30 dias');
case 5
disp('31 dias');
case 6
disp('30 dias');
case 7
disp('31 dias');
case 8
disp('31 dias');
case 9
disp('30 dias');
case 10
disp('31 dias');
case 11
disp('30 dias');
case 12
disp('31 dias');
otherwise
disp('Ms no existente.')
end

6.4.

Comandos Bsicos

A seguir sero apresentados alguns comandos bsicos presentes no


MATLAB que podem ser teis durante a programao.

COMANDO

DESCRIO

SINTAXE

disp

Exibe o contedo ocultando o nome da mesma ou imprime


uma string que foi passada para a funo.

disp(nome_da_variavel);
OU
disp('Imprime este texto');

input

um comando para entrada de dados pelo usurio atravs


do Command Window.

nome_da_variavel = input('Informe o
dado de entrada');

80

save

Salva qualquer varivel no disco.

save nome_do arquivo


nome_da_variavel

load

Carrega qualquer varivel presente no disco.

load nome_do arquivo.mat

delete

Deleta qualquer varivel presente no disco

delete nome_do arquivo.mat

break

Interrompe a execuo do loop do WHILE ou do FOR.

break

format

Formata o modo pelo qual os valores sero impressos na


tela.

Ver ANEXO 1

abs

Retorna o mdulo da varivel.

abs(nome_da_variavel)

angle

Retorna o ngulo do nmero complexo em radiano.

angle(nome_da_variavel)

conj

Retorna o conjugado do nmero complexo.

conj(nome_da_variavel)

imag

Retorna a parte imaginria do nmero complexo.

imag(nome_da_variavel)

real

Retorna a parte real do nmero complexo.

real(nome_da_variavel)

find

Localiza elementos dentro de uma matriz, dando a sua


posio.

nome_da_variavel = find(Critrio)

max/min

Retorna o valor mximo/mnimo de um vetor ou matriz.

max(nome_da_variavel)
min(nome_da_variavel)

sqrt

Calcula a raiz quadrada.

sqrt(nome_da_variavel)

ceil

Arredonda o valor para o inteiro mais prximo de zero.

fix(nome_da_variavel)

fix

Arredonda o valor para o inteiro mais prximo de infinito.

ceil(nome_da_variavel)

round

Arredonda o valor para o inteiro mais prximo.

round(nome_da_variavel)

rem

Retorna o resto da diviso entre duas variveis.

rem(nome_da_variavel_1,nome_da_var
iavel_2)

Tabela 6.3 - Comandos Bsicos.

81

6.5.

Lista de Exerccios

1) Faa a srie dos 25 primeiros nmeros da Sequncia de Fibonacci utilizando


os comandos FOR, WHILE e IF. Armazene os valores em um vetor linha de
tamanho pr-definido.
0
! 8  0
1
 8  d
! 8  1
 8  1  8  2 ! 8 _ 1
2) Faa um algoritmo que leia duas notas obtidas por N alunos na disciplina de
Clculo I e o nmero de aulas assistidas por cada aluno. Calcule e mostre a
mdia final deste aluno e diga se ele foi aprovado ou reprovado de acordo
com o nmero de matricula do aluno.
Observao: Considere que para um aluno ser aprovado ele deve obter mdia
final igual ou maior a 6 e ter no mnimo 75% de frequncia. Nmero de aulas
do curso igual a 20.
3) Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um
programa que calcule seu peso ideal, utilizando as frmulas abaixo. Com o
peso ideal calculado apresente o resultado no Command Window.
[ , ef8!: 72.7 h  58

[ , fe,!: 62.1 h  44.7

Observao: Faa o uso dos comandos switch e while.


4) Faa um programa no qual o usurio informar 6 nmeros inteiros entre 1
e 60 (valores no repetidos). A varivel (vetor com os valores) que contiver
os nmeros deve ser armazenada no disco.
5) Faa um algoritmo para o sorteio da Loteria, ou seja, de maneira
randmica ser gerado um resultado de 6 nmeros que no podem ser
repetidos e devem estar entre 1 e 60. A varivel que contiver os nmeros
sorteados deve ser armazena no disco.
6) Faa um programa que carregue as variveis salvas nos exerccios 5 e 6.
Carregando essas variveis, faa um processo de comparao para obter o
nmero de acertos que o apostador obteve na Loteria.

82

7) Aproveitando o conhecimento obtido nos exerccios anteriores, faa agora


um algoritmo no qual ser recebido o nmero N apostadores. Com essas
apostas definidas dever ser feito um sorteio e assim determinar as
porcentagens de apostadores que fizeram 0, 1, 2, 3, 4, 5 e 6 pontos,
apresentando esses valores na tela.
8) Escreva uma rotina que, dada uma sequncia com n nmeros determine
quantos e quais os elementos que so maiores do que a soma dos seus
vizinhos.Teste com a sequncia de nmeros abaixo.

sequencia = [1 2 3 10 3 4 0 2 9 8 10]

9) Escreva um programa que calcule sucessivamente a raiz quadrada de


nmeros introduzidos pelo utilizador at que este indique um nmero
menor ou igual a 0. Utilize a funo sqrt(x) para calcular a raiz quadrada e
input(Valor de x: ) para ler os valores de entrada.

83

7. Grficos
A construo de grficos talvez seja uma das principais funes realizadas
com o MATLAB, j que em qualquer aplicao de praticamente todas as reas os
grficos so a forma mais direta do entendimento dos dados obtidos ou a forma
mais visvel para a anlise dos mesmos.
Criar grficos com o MATLAB muito simples e na maioria das vezes bem
intuitivo, porm quanto maior a prtica melhores eles sero. Neste captulo iremos
abordar:
 Grficos Bidimensionais;
 Estilos de Linha e Smbolos;
 Grficos Tridimensionais.
Escreveremos os comandos que seguem no Editor, no no Command Window.

7.1.

Grficos Bidimensionais

Comearemos com os grficos Bidimensionais. Seguem abaixo os principais


comandos de plotagem 2D:

COMANDO

FUNO

plot

Plotar linear

subplot

Plota grficos em janelas separadas

loglog

Plota em escala loglog

semilogx

Plota em monolog (eixo X)

semilogy

Plota em monolog (eixo Y)

polar

Plota grfico em coordenadas polares

compass

Plota diagramas fasoriais em coordenadas polares

bar

Plota grfico de barras na vertical

barh

Plota grficos de barras na horizontal

stem

Plota grfico de hastes


84

stairs

Plota grfico de degraus

pie

Plota grfico de pizza

hist

Plota histogramas
Tabela 7.1 - Comandos de grficos 2D.

7.1.1. Plot/Subplot/Fplot

O comando plot serve para plotar grficos bidimensionais lineares.


Pode ser utilizado para plotar desde vetores e matrizes at obviamente
curvas paramtricas e funes, definindo ou no intervalos.
Suponha que desejamos plotar uma linha reta entre dois pontos (x,y)=(-1,-1)
e (x,y)=(2,1):
Devemos usar o comando plot como segue:
plot ( [-1 2], [-1 1] )

Onde na primeira parte esto os valores de X e na segunda os de Y. Assim o


MATLAB ir plotar uma reta ligando os dois pontos.
Veja:

Grfico 7.1- Comando plot (1).

85

Agora suponha que Y um vetor, tal como mostrado abaixo:


Y = [0.0, 0.48, 0.84, 1.0, 0.91, 0.6, 0,14];

Se utilizarmos o comando plot(Y), o MATLAB ir plotar um grfico com os


valores do vetor versus a posio de cada um deles, como mostrado abaixo:

Grfico 7.2 - Comando plot (2).

Observe que o MATLAB simplesmente liga os pontos com os valores do


vetor, formando um grfico com uma aparncia meio rstica.
Importante: Sempre que for executar novamente uma rotina que contenha
qualquer comando de plotagem feche primeiro a janela de grfico atual, seno o
MATLAB no plotar corretamente o grfico desta ltima rotina.
Vamos supor agora que desejamos plotar uma determinada funo em um
determinado intervalo de valores. Neste devemos primeiramente definir um vetor
com o intervalo no qual se deseja plotar.
Por exemplo:
t=[0:0.01:4*pi];

Ou seja, t um vetor que comea com 0 e vai at 4*pi em intervalos de 0.01.


Para cada um destes valores o MATLAB ir plotar um ponto no nosso grfico.
O prximo passo escolher a funo que se deseja plotar, que no nosso caso
ser o conhecido seno, especificando entre parnteses o intervalo no qual a funo
ser plotada, assim:
f=sin(t);
86

Logo, digitando os comandos anteriores, mais o comando plot, como segue:


t=[0:0.01:4*pi];
f=sin(t);
plot(t,f)

Ser plotado o seguinte grfico:

Grfico 7.3 - Comando plot (3).

O primeiro termo dentro dos parnteses do comando plot sempre ser o vetor
cujos comandos estaro no eixo das abcissas (eixo horizontal) e o segundo a
varivel que representa a funo.
O mesmo resultado seria alcanado se a funo fosse digitada diretamente
dentro do comando plot, ou seja, sem a necessidade de definir uma varivel para
ela.
Veja:
t=[0:0.01:4*pi];
plot(t,sin(t))

Caso se deseje plotar mais de um grfico em uma mesma janela, existem duas
maneiras principais:
87

A primeira consiste em digitar todas as funes dentro do mesmo comando


plot, como exemplo plotaremos trs funes seno defasadas de pi, como segue:
plot(t, sin(t), t, cos(t), t, sin(t + pi), t, cos(t + pi))

O resultado ser este:

Grfico 7.4 - Comando plot (4).

Sendo que o MATLAB muda a cor de cada curva para facilitar a visualizao,
porm algumas verses do programa no fazem isto.
A outra maneira usar um comando chamado hold on. Neste caso cada
funo dever ser definida separadamente, e aps o comando de plotagem da
primeira funo, adicionamos o comando hold on. Aps este comando, qualquer
outra funo ser plotada na mesma janela. Observe que todas as funes foram
plotadas no mesmo intervalo de tempo t.
Veja o exemplo:
t=[0:0.01:4*pi];
f1=sin(t);
f2=cos(t);
f3=sin(t+pi);
f4=cos(t+pi);
plot(t,f1);
88

hold on
plot(t,f2)
plot(t,f3)
plot(t,f4)

O resultado ser o mesmo:

Grfico 7.5 - Comandosplotehold on.

Este segundo mtodo mais vantajoso quando se aplicam intervalos de


plotagem t diferentes para cada uma das funes.
Obs.: Caso exista mais de um comando de plotagem na mesma rotina sem a
presena do comando hold on, o MATLAB tentar plotar os dois na mesma janela,
sendo assim, ao plotar o segundo grfico, o primeiro desaparecer.
Caso se deseje plotar grficos em janelas diferentes em uma mesma rotina,
basta adicionar o comando figure aps o comando de plotagem do primeiro grfico.
Veja o exemplo:
t=[0:0.01:4*pi];
f1=sin(t);
f2=cos(t);
89

f3=sin(t+pi);
f4=cos(t+pi);
plot(t,f1);
figure
plot(t,f2)
figure
plot(t,f3)
figure
plot(t,f4)

Aparecero quarto grficos em janelas diferentes:

Grfico 7.6 - Comando figure.

Observe que, para cada nova janela de grfico preciso inserir o comando
figure.

O comando subplot(m,n,p), ou subplot(mnp)divide a mesma janela de plotagem em


uma matriz mxn. Ondemdenota o nmero linhas e n o nmero de colunas que
se deseja dividir a janela grfica; p indica qual das subdivises vai receber o
grfico desejado. Veja o exemplo:

90

t=[0:0.1:4*pi];
f1=sin(t);
f2=sin(t+pi);
subplot(1,2,1)
plot(t,f1)
subplot(1,2,2)
plot(t,f2)

Grfico 7.7 - Comando subplot.

Outra opo o comando fplot, que plota de forma bem simples grficos
lineares. Basicamente, voc deve fornecer como primeiro argumento a funo que
pretende usar entre apstrofes e como segundo, o intervalo sobre o qual a funo
ser plotada.
Veja:
fplot('sin(x)',[-pi,pi])

91

Grfico 7.8 Comando fplot.

Voc pode salvar seu grfico em qualquer pasta do computador, bastando


clicar no cone
. Esto disponveis diversos formatos de imagem, desde os mais
comuns at os mais especficos.

7.1.2. Loglog
Podemos tambm plotar grficos em escala loglog (dilog), utilizando o
comando loglog. Este tipo de grfico se torna til quando se deseja analisar o
comportamento da funo em um grande intervalo
Observe o exemplo abaixo, de uma funo exponencial:
t=[0:0.01:4*pi];
f=exp(t);
loglog(t,f)

92

Grfico 7.9 - Comando loglog.

7.1.3. Semilogx
Grficos monolog tambm podem ser plotados. O comando semilogx plota um
grfico onde somente o eixo X est em escala logartmica.
Observe o exemplo abaixo, utilizando a funo log(t):
Se usarmos o comando plot, teremos:
t=[0:0.01:4*pi];
f=log(t);
plot(t,f)

93

Grfico 7.10 - Comando plot curva logartmica.

Porm usando o comando semilogx, teremos:


t=[0:0.01:4*pi];
f=log(t);
semilogx(t,f)

Grfico 7.11 - Comando semilogx.

94

7.1.4. Semilogy
Este comando segue a mesma linha do anterior, porm desta vez ser o eixo Y
que estar em escala logartmica, enquanto X permanecer em escala linear.
Primeiramente veja como fica a funo exponencial, usando o comando plot:
t=[0:0.01:4*pi];
f=exp(t);
plot(t,f)

Grfico 7.12 -Comando plot curva exponencial.

Utilizando agora o comando semilogy, teremos:


t=[0:0.01:4*pi];
f=exp(t);
semilogy(t,f)

95

Grfico 7.13 -Comando semilogy.

7.1.5. Polar
Este comando utilizado para plotar grficos em coordenadas polares.
Veja o exemplo:
t=[0:0.01:4*pi];
f=sin(t);
polar(t,f)

Grfico 7.14 -Comando polar.

96

Outro comando interessante que vale a pena mencionar neste material o


comando compass.
Ele permite a plotagem de diagramas fasoriais em grficos polares, veja o
exemplo:
var=10+20*i;
compass(var)

Grfico 7.15 -Comando compass.

7.1.6. Bar
Este comando permite criar grficos de barras. Veja o exemplo a seguir.
Suponha que uma empresa quer analisar o nmero de produtos vendidos
durante os doze meses do ano passado. Um dos vetores conter os meses e o outro
o nmero de vendas em cada ms. Assim:
m=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
v=[120,230,400,415,350,360,400,300,350,410,480,560];
bar(m,v)

97

O grfico plotado ser:

Grfico 7.16 Comando bar.

Obs.: O comando barh apenas inverte os eixos (neste caso os meses ficariam
no eixo Y e as vendas no eixo X).
Veja:
m=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
v=[120,230,400,415,350,360,400,300,350,410,480,560];
barh(m,v)

Grfico 7.17 Comando barh.

98

7.1.7. Hist
Um histograma um diagrama que mostra a distribuio de valores em um
conjunto de dados. Para criar um histograma, a faixa de valores em um conjunto
dedados dividida em grupos regularmente espaados, e o nmero de valores
dedados que caem em cada grupo determinado. A contagem resultante pode ser
representada em um diagrama como funo do nmero do grupo.
Algumas das snteses para gerar histogramas so:
hist(y) - cria um histograma com 10 grupos igualmente espaados.
hist(y,n) - cria um histograma com n grupos igualmente espaados.

Exemplo:
O comando abaixo cria 100 valores aleatrios gaussianos, e cria um
histograma com 9 conjuntos de valores. Assim os 100 valores aleatrios so
separados em 9 conjuntos de acordo com seus valores.
y=randn(100,1)
hist(y,9)

Grfico 7.18 -Comando hist.

99

7.1.8. Pie
O comando pie gera um grfico de pizza, veja o exemplo:
Supondo um grfico que mostra o numero de produtos vendidos a cada ms
do ltimo ano.
v=[120,230,400,415,350,360,400,300,350,410,480,560];
pie(v)

Grfico 7.19 - Comando pie.

Observe que o MATLAB adiciona automaticamente uma legenda em


porcentagem.
Caso queiramos adicionar uma legenda prxima s fatias do grfico, basta
adicionar um vetor de strings e inclu-lo ao comando pie:

v=[120,230,400,415,350,360,400,300,350,410,480,560];
meses={'Jan''Fev''Mar''Abr''Mai''Jun''Jul''Ago''Set''Out''Nov''Dez'};
pie(v,meses)

100

Logo, teremos:

Grfico 7.20 Comando pie com legendas.

Podemos tambm destacar uma das fatias da pizza, basta adicionar o


comando explode. Este um vetor de zeros e uns, onde na posio onde houver um
1 ela ser destacada do restante do grfico. Destacaremos o ms de maiores
vendas, ou seja, dezembro.
Veja:
v=[120,230,400,415,350,360,400,300,350,410,480,560];
meses={'Jan''Fev''Mar''Abr''Mai''Jun''Jul''Ago''Set''Out''Nov''Dez'};
explode=[0 0 0 0 0 0 0 0 0 0 0 1];
pie(v,explode,meses)

Grfico 7.21 Comando pie expandido.


101

7.1.9. Stem/Stairs

O comando stem cria grficos de hastes.


t=-pi:0.2:pi;
f=sin(t);
stem(t,f)

Grfico 7.22 Comando stem.

J o comando stairs cria um grfico de degraus.


t=-pi:0.2:pi;
f=sin(t);
stairs(t,f)

Grfico 7.23 Comando stairs.


102

7.2.

Estilo de Linha e Smbolo

Neste tpico veremos os principais comandos para a customizao e


melhoramento dos grficos, que vo desde a cor da linha at a insero de
legendas e textos.
Abaixo esto apresentados os principais comandos com seus respectivos
exemplos:
Title Acrescenta um ttulo ao grfico.
Xlabel Acrescenta uma legenda ao eixo X.
Ylabel Acrescenta uma legenda ao eixo Y.
Zlabel Acrescenta uma legenda ao eixo Z.
Text Acrescenta um texto na coordenada informada.

Utilizando o mesmo grfico de barras anterior:


m=[1,2,3,4,5,6,7,8,9,10,11,12];
v=[120,230,400,415,350,360,400,300,350,410,480,560];
bar(m,v)
title('Vendas anuais da empresa do ltimo ano fiscal')
xlabel('Meses')
ylabel('Nmero de vendas')
text(11,580,'Maior venda')

103

Vendas anuais da empresa do ltimo ano fiscal


600

Maior venda

Nmero de vendas

500

400

300

200

100

7
8
Meses

10

11

12

Grfico 7.24 -Vendas anuais.

Obs.: O comando gtext escreve um texto na posio indicada na tela do grfico


pelo ponteiro do mouse.
Grid Acrescenta grades ao grfico plotado.
Axis Este comando define os limites dos eixos X e Y no grfico.
Axis square Torna quadrado o quadro dos eixos.

104

possvel tambm modificar a cor, tipos de linha e marcadores:

Tabela 7.2 -Cor, linhas e marcadores.

Veja o exemplo, usando senides:


t=[0:0.1:4*pi];
f1=sin(t)
f2=sin(t+pi)
plot(t,f1,'*r')
hold on
plot(t,f2,'+b')
grid
axis([0 8 -2 2])
title('Senides')

105

Grfico 7.25 -Senides com marcadores e cores diferenciadas.

Tambm possvel adicionar legendas ao grfico.


Veja que no exemplo acima temos duas senides, assim para facilitar a leitura
do grfico adicionaremos uma legenda.
Basta incluir ao cdigo o seguinte comando:
legend('seno(t)','seno(t+pi)',0)

Logo:

106

Grfico 7.26 - Senides com legendas na posio 0.

A posio da legenda definida pelo ltimo termo do comando legend, neste


caso foi utilizado o 0.

Valor
0
1
2
3
4
-1

Significado
Escolha automtica da melhor posio (mnimo conflito com os dados)
Canto superior direito
Canto superior Esquerdo
Canto inferior esquerdo
Canto inferior direito
direita do grfico
Tabela 7.3 - Valores comando legend.

Tambm possvel modificar a espessura da linha, o tamanho do marcador,


entre outros, veja:
LineWidth: Especifica em pontos a espessura de cada linha.
MarkerSize: Especifica em pontos o tamanho do marcador.
MarkerEdgeColor: Especifica a cor do marcador ou da borda de marcadores
preenchidos.

107

MarkerFaceColor: Especifica a cor interna dos marcadores preenchidos.

OBS.: Observe que os comandos devem ser digitados com as letras


maisculas, exatamente conforme listado acima.
Exemplo:
t=[0:0.1:4*pi];
f1=sin(t);
f2=sin(t+pi);
plot(t,f1,'*r','MarkerSize',2)
hold on
plot(t,f2,'+b','MarkerSize',10)
grid
axis([0 8 -2 2])
title('Senides')
legend('seno(t)','seno(t+pi)',0)

Grfico 7.27 - Senides de diferentes tamanhos de marcadores.

108

7.3.

Grficos Tridimensionais

Estes so alguns comandos para plotar grficos tridimensionais e contornos.

COMANDO
plot3
comet3
pie3
bar3
barh3
contour
fill3
contour3
clabel
quiver
mesh
meshc
surf
surfc
surfil
slice
cylinder
sphere

FUNO
Plotar em espao 3D
Plotar em 3D com trajetria de cometa
Plota grfico de pizza 3D
Plota grfico de barras 3D na vertical
Plota grfico de barras 3D na horizontal
Plotar contorno 2D
Desenhar polgono 3D
Plotar contorno 3D
Plotar contorno com valores
Plotar gradiente
Plotar malha 3D
Combinao mesh/contour
Plotar superfcie 3D
Combinao surf/contour
Plotar superfcie 3D com iluminao
Plot visualizao volumtrica
Gerar cilindro
Gerar esfera

Tabela 7.4 - Comandos grficos tridimensionais.

7.3.1. Plot3
O comando plot3 permite a plotagem de curvas em trs dimenses.
t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t,'r','LineWidth',2)
grid
axis square
xlabel('seno(t)')
ylabel('cosseno(t)')
zlabel('tempo')

109

Grfico 7.28 - Comando plot3.

7.3.2. Mesh
Este comando permite plotar planos ou superfcies tridimensionais.
Primeiro se deve definir os limites do plano XY informando os valores em
dois vetores. Como este comando plota superfcies e apenas vetores no so
suficientes para defini-la, preciso criar uma grade de pontos, ou um conjunto de
nX x nY pares (onde nX e nY so a quantidade de valores dentro dos vetores X e
Y, respectivamente), sendo o comando meshgrid que se encarrega de criar este
conjunto.

Sero estes pares que, juntamente com a varivel Z sero plotadas


formando uma superfcie. Observe o exemplo:
x = [-3 : 0.1 : 3];
y = [-3 : 0.1 : 3];
[mx my] = meshgrid (x,y)
z = mx.^2 + my.^2;
mesh (mx,my,z)

110

20

15

10

0
4
4

-2

-2
-4

-4

Grfico 7.29 -Comando mesh.

Veja outro exemplo:


Desta vez os vetores X e Y foram definidos dentro do prprio comando
meshgrid.
[X Y]=meshgrid(-8:0.5:8,-8:0.5:8);
r= sqrt(X.^2+Y.^2);
Z=sin(r)./r;
mesh(X,Y,Z)

0.5

-0.5
10
5

10
5

-5

-5
-10

-10

Grfico 7.30 - Comando mesh com seno.

111

possvel especificar o ponto de vista no qual se enxerga a figura usando o


comando view. Este comando recebe dois argumentos: o primeiro a rotao em
graus no plano XY, e o segundo a elevao em graus do ponto de vista. O padro
view(-37.5,30).

7.3.3. Bar3/Bar3h
Os comandos abaixo criam grficos tridimensionais em barras.
m=[1,2,3,4,5,6,7,8,9,10,11,12];
v=[120,230,400,415,350,360,400,300,350,410,480,560];
grid
subplot(1,2,1)
bar3(m,v,r)
title(Bar3)
subplot(1,2,2)
bar3h(m,v,b)
title(Bar3h)

Bar3h
Bar3
600

12
11
10
9
8
7
6
5
4
3
2
1

400

200

0
1

9
10
11
12

0
200
400
600

Grfico 7.31 Comandobar3 e bar3hrespectivamente.

112

7.3.4. Pie3
Este comando cria um grfico de pizza tridimensional.
v=[120,230,400,415,350,360,400,300,350,410,480,560];
explode=[1 1 1 1 1 1 1 1 1 1 1 1];
nomes={JanFevMarAbrMaiJunJulAgoSetOutNovDez};
pie3(v,explode,nomes)

Grfico 7.32 -Comandopie3.

7.4.

Menu Plot Tools and Dock Figure

Aps o grfico ser plotado ele pode ser editado sem que seja necessrio
reformular as linhas de comando. Por isso existe o menu Plot Tools and Dock
Figure, que pode ser acessado clicando no cone da janela do grfico mostrado
abaixo:

Figura 7.1 - cone Plot Tools.

A seguinte barra de ferramentas aparecer:

Figura 7.2 - Barra menus.

113

Onde, os principais so:

cone

Nome

Ao

New figure

Cria nova figura

Open file

Abre o arquivo

Save

Armazena o arquivo

Print

Imprime

Edit plot

Habilita/desabilita modo de edio de objeto

Zoom in/Zoom out

Aproxima/ Afasta a visualizao

Pan

Desloca a visualizao

Rotate 3D

Rotaciona a imagem em trs dimenses

Data cursor

Insere informao dos pontos da curva

Insert colorbar

Habilita/desabilita exibio de barra de cores

Insert legend

Insere legenda

Hide/Show plot tools

Habilita/desabilita exibio do Plot Tools

Tabela 7.5 Principais cones.

Clicando em

, uma barra chamada Property Editor - Figureaparecer.

Figura 7.3 - Property EditorFigure.

Ao se clicar sobre o grfico a barra mudar para Property Editor - Axes, e


nesta ser possvel remodelar os eixos, modificando limites de plotagem, escalas,
definir como ser a grade do grfico e quais valores sero exibidos nos eixos X e Y,
dentre outras opes.
114

Figura 7.4 - Property Editor Axes.

Usando o menu Inserttambm possvel inserir vetores, vetores com texto,


caixas de texto e algumas formas, como retngulos e elipses.

Figura 7.5 - Comando Insert.

115

7.5.

Lista de Exerccios

1) Plote o grfico das seguintes funes no intervalo especificado:


a. a   i  5 2,  420; 209;

b. a  !8  cos  ,  42 l; l9;

c. a  cosm J o ,  40; 209;


n.>

2) Plote em escala monolog ou dilog as funes do exerccio anterior,


acrescentando elementos tais como: ttulo, nome dos eixos, grades,
legendas, etc.

3) Gere o grfico usando comando stem para 50 pontos de x (entre 5 e 5) na


seguinte funo:
f(x)=4*x3-4x2+15
Dica: Use a funo linspace(a,b,n) para definir o intervalo. Ela cria uma
sequncia de n valores para a varivel x entre a e b (use o comando help
linspace na Command Window pra lhe ajudar caso precise).

4) Plote em um mesmo grfico as curvas de uma corrente senoidal trifsica


entre 0 e 2l, com intervalos de plotagem de 0.01, sendo que:
i.

As equaes so as que seguem:

p ]  2!8 l]

pq ]  2!8 l]  120
ii.

ps ]  2!8 l] 120

O grfico dever ter uma grade e o ttulo: Corrente Trifsica Seq.


Direta;

iii.

Os

eixos

devero

ter

legendas:

Eixo

X=tempo

Eixo

Y=amplitude;
iv.

Uma legenda no canto superior esquerdo do grfico, identificando


as curvas em: Fase A, Fase B e Fase C;

116

v.

A curva da fase A deve ser vermelha, a da fase B azul e a de fase C


amarela, e todas as fases devero ter espessura da linha 2.

vi.

Os eixos do grfico tambm devero ter os seguintes limites: Eixo


X=de 0 at 6. Eixo Y= de -3 at +3.

5) Usando o comando subplot, plote dois grficos na mesma janela. Sendo que:
i.

ii.
iii.

As equaes so:

L1  !8  ;
L2  cos  ;

O intervalo de plotagem : de - at , com intervalos de 1

Os dois grficos devem ter uma grade, e ttulos (Diagrama 1 e


Diagrama 2).

a. Os dois grficos devem estar lado a lado;


b. Os dois grficos devem aparecer um abaixo do outro.

6) Agora voc j um Engenheiro Jnior da Petrobras, esse o seu primeiro


ms. Numa bela sexta-feira de sol seu chefe, um Engenheiro Snior de mais
de 30 anos de empresa, te passa um pequeno servio PRA ONTEM. Ele
entrega na sua mesa um relatrio de exatas 320 pginas feito pelo
departamento de manuteno e diz para voc resumi-lo para que ele possa
saber o nmero de peas sobressalentes que devero ser compradas para
todas as subestaes da regio. Depois de um final de semana inteiro de
anlise, Redbulls a perder de vista, e j se sentindo um zumbi (mas ao
mesmo tempo feliz pensando no seu primeiro contracheque de
aproximadamente 12 salrios mnimos que sai na semana que vem), voc
finalmente consegue resumir tudo em uma tabela como mostrada a seguir:

117

ndice

Componente

Unidades

vlvula SF6

16

fusvel 300

47

fusvel 500

34

isolador 33kV

30

isolador 415V

35

disjuntor 25kV

disjuntor 220V

14

lmpada mercrio

30

Total de Componentes

211

A voc, depois do ltimo Redbull, se lembra do curso ministrado no PRHPB14, e decide criar um grfico para facilitar a visualizao dos dados por
seu chefe. Plote um grfico tridimensional de pizza, onde em um dos eixos
estejam os ndices dos componentes e no outro o nmero de unidades.
Coloque uma legenda (na parte do grfico que achar melhor), com os nomes
dos componentes. Faa seu melhor, use o que voc aprendeu at aqui.

7) Plote as seguintes funes (superfcies) nos intervalos especificados.


a. u , a    a   J , , a 45; 59;

b. u , a  1     a  , , a 40.5; 0.59;

c. u , a   a, , a 40,19;

d. u , a  ,s] 8v   a  , , a 48,89;

e. u , a  !8  cos a , , a 4l, l9;

8) Desafio:Plote a Circunferncia Trigonomtrica a seguir, usando o comando


plot.

118

circunferncia trigonomtrica
1
0.8
0.6

eixo dos senos

0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1

-0.8

-0.6

-0.4

-0.2
0
0.2
eixo dos cossenos

0.4

0.6

0.8

119

Agradecimentos

Por fim, deixamos o nosso muito obrigado a todos aqueles que nos
incentivaram na realizao deste curso introdutrio de MATLAB, bem como
confeco do presente material didtico tutorial que, certamente, auxiliar outras
pessoas que ambicionam iniciar o aprendizado deste to importante software e
tambm nos fez aprender um pouco mais sobre o MATLAB.
Em especial, nosso agradecimento Universidade Federal de Juiz de Fora
(UFJF) e PETROBRAS que, atravs do Programa de Recursos Humanos PRH-PB
14, investem na nossa formao profissional e nos impulsionam a crescermos cada
dia mais.
Aos professores Dbora Rosana Ribeiro Penido Arajo e Leandro Ramos de
Arajo tambm o nosso reconhecimento pelo apoio e ateno dados em todos os
momentos e pela dedicao para com a nossa formao.

120

Bibliografia
[1] HANSELMAN, D.; LITTLEFIELD, B.MATLAB 6 Curso Completo.Editora
Pearson Prentice Hall. So Paulo, 2007.
[2]MATSUMOTO, E. Y.; MATLAB 7 - Fundamentos 2 Edio. Editora rica. So
Paulo, 2006.
[3] CHAPMAN, S.J.; Programao em MATLAB para engenheiros. Traduo
tcnica: Flvio Soares Correa da Silva, So Paulo, Thomson Learning, 2006.
[4] DONIZETTI, J.L.; Elementos Bsicos de Programao em MATLAB. Paran.
[5] Curso de MATLAB. PET Eltrica UFMS.
[6] MATLAB: Curso Introdutrio. Centro Brasileiro de Pesquisas Fsicas, 2002.

121

ANEXO 1: FORMATOS DE EXIBIO


Comando FORMAT:
Comando

Descrio

Exemploexp()

format short

Apresenta o valor com 4


algarismos significativos.

23.1407

format long

Apresenta o valor com 15


algarismos significativos.

23.140692632779267

format short e

format long e

Apresenta o valor com 4


algarismos significativos
2.3141e+001
em formato exponencial.
Apresenta o valor com 15
algarismos significativos
2.314069263277927e+001
em formato exponencial.

format short g

Apresenta o valor com 5


algarismos.

23.141

format long g

Apresenta o valor com 15


algarismos.

23.1406926327793

format short eng

format long eng

format hex

format bank

format rat

format +

Formato de engenharia,
com 4 algarismos

significativos e potencia
mltipla de 3.
Formato de engenharia,
com 15 algarismos

significativos e potencia
mltipla de 3.
Apresenta o valor em
hexadecimal.
Valores bancrios (2
algarismos
significativos).
Apresenta o valor atravs
de uma aproximao por
racionais.
Exibe apenas o sinal, ou
seja, + para valor positivo
e para valor negativo.

23.1407e+000

23.1406926327793e+000

403724046eb09339

23.14

6086/263

Figura 0.1 - Format


122

ANEXO 2: RESPOSTA DOS EXERCCIOS


===========================================================

Captulo 2
===========================================================
Exerccio 1:
>> A=1;
>> B=2;
>> C=3;
>> who
Your variables are:
A

>> clear B
>>clc
>> whos
Name

Size

Bytes

Class

Attributes

1x1

double

1x1

double

>> A
A =
1
>> C
C =
3

Exerccio 2:
>> a = sqrt(25) - 2^3;
>> b = sqrt(25) + 2^3;
>> c = sqrt(25) * 2^3;
>> d = sqrt(25) / 2^3;

123

Exerccio 3:

>> format short


>> a
a =
-3
>> b
b =
13
>> c
c =
40
>> d
d =
0.6250
>> format long
>> a
a =
-3
>> b
b =
13
>> c
c =
40
>> d
d =
0.625000000000000
>> format short e
>> a
a =
-3
124

>> b
b =
13
>> c
c =
40
>> d
d =
6.2500e-01
>> format long e
>> a
a =
-3
>> b
b =
13
>> c
c =
40
>> d
d =
6.250000000000000e-01

Exerccio 4:

a)
>> 2+(7+9)/2
ans =
10

b)
>> 7*((5^2)-sqrt(9))/11-4
125

ans =
10

c)
>> ((8*10^3)^(1/3))/2
ans =
10.0000

Exerccio 5:
>> x=1.253;
>> u=(1/sqrt(2*pi))*exp((-1/2)*x^2)
u =
0.1820
>> y=(sin(pi*x))^2
y =
0.5094
>> z=(exp(sin(x)))/(sqrt((x^2)+1))
z =
1.6128

Exerccio 6:

>> Z=3+4*i;
>> R=real(Z)
R =
3
>> I=imag(Z)
I =
4
>> M=abs(Z)
M =
5
>> ang = angle(Z)
126

ang =
0.9273
% Por mudana de coordenadas:
>> [fase,M]=cart2pol(3,4)
fase =
0.9273
M =
5
>> [fase,M]=cart2pol(R,I)
fase =
0.9273
M =
5

Exerccio 7:

a)
>> a=3.7;
>> b=5.7;
>> ab=79; %graus
>> c= sqrt(a^2 + b^2 - 2*a*b*cosd(ab))
c =
6.1751

b)
>> format long
>> c
c =
9.163626713023771

c)
>> ac= asind((b/c)*sind(ab))
ac =
127

37.632619046438521
>> format short e
>> ac
ac =
3.7633e+01
>> format long e
>> ac
ac =
3.763261904643852e+01

Exerccio 8:
Exerccio de fixao.

Exerccio 9:
a)
>> a= 1000*cosd(25.5) - log10(4^(2.9+8.21))
a =
895.8964
>> a= a/sqrt(7+ exp(4.56))
a =
88.4543

b)
>> z= ((1+ cosd(65))^2)/((1-cosd(65))^2)
z =
6.0709
>> z = z*log(2.825^9)/3.4
z =
16.6888

128

c)
>> x= (16.5 +exp(2))/sqrt(10*log(6^4));
>> x = x + 10*tand(75)/((cosd(20))^2 + (sind(88))^2);
>> x = x - 9.12^(2.5)/((5.3 - 3.1^(0.9))/2)
x =
-175.7809

===========================================================

Captulo 3
===========================================================
Exerccio 1:
>>
>>
>>
>>
>>
>>

A=[1:3;4:6;7:9];
B=[54 -8;1-8*i 5*i];
C=[2:4;i -3 0];
D=[pi eps i; 4 3+2 sind(30); sqrt(9) 1 0];
E=4:2:16;
F=linspace(200,80,7);

Exerccio 2:
>>
>>
>>
>>
>>
>>
>>
>>

x=0:5;
y(1)=sqrt(4);
y(2)=3-2;
y(3)=(-1)^2;
y(4)=3*5;
y(5)=y(1)-y(2);
y(6)=y(4)/y(1);
y(9)=1;

Exerccio 3:
>> Y=-3.4:0.32:8;
>> Z=10:-1.23:1;
>> X=0:10*pi:15^2;

Exerccio 4:
>> A=[3 2;1 0;5 -5];
>> B=[-10 4;0 -1;1 6];
>> C=[1 2 0;0 2 1;3 3 3];
>>%A3X2 B3X2 C3X3
>>%Preciso que X tenha 3 colunas
>>%Ento tenho que transpor A
129

>> A=A';
>> X=B*A;
>> Y=X*(C^2);

Exerccio 5:
>>A = [1 2 3; 1 2 3; 1 2 3];
>>B = [1 -1 3; 4 0 0; -4 -2 1];
>> Z = A.*B;

Exerccio 6:
>>
>>
>>
>>
>>

A = [100 120;200 180];


B = [10 9.8;6 6.1];
C = [25 28;42 55];
M1 = A.*B;
M2 = A.*C;

Exerccio 7:
>>A = [1 2 3; 1 2 3; 1 2 3];
>>B = [1 -1 3; 4 0 0; -4 -2 1];
>> X = A/B
X =
1.6000
1.6000
1.6000

-1.9500
-1.9500
-1.9500

-1.8000
-1.8000
-1.8000

>> X = A*inv(B)
X =
1.6000
1.6000
1.6000

-1.9500
-1.9500
-1.9500

-1.8000
-1.8000
-1.8000

0.5000
-2.1000
-0.2000

0.7500
-3.1500
-0.3000

>> Y = B\A
Y =
0.2500
-1.0500
-0.1000

>> Y = inv(B)*A
Y =
0.2500
-1.0500
-0.1000

0.5000
-2.1000
-0.2000

0.7500
-3.1500
-0.3000

130

Exerccio 8:
No. Para uma matriz A complexa, a operao A retorna o conjugado
complexo da transposta de A, enquanto que a operao A. retorna a
transposta de A.

Exerccio 9:
>> X = [(1+j) (1-5j); (6+2j) (1-2j); (3+3j) (1)]
X =
1.0000 + 1.0000i
6.0000 + 2.0000i
3.0000 + 3.0000i

1.0000 - 5.0000i
1.0000 - 2.0000i
1.0000

>> X.'
ans =
1.0000 + 1.0000i
1.0000 - 5.0000i

6.0000 + 2.0000i
1.0000 - 2.0000i

3.0000 + 3.0000i
1.0000

Exerccio 10:
>> aux = [1 2 3;4 5 6;7 8 9]
aux =
1
4
7

2
5
8

3
6
9

>> MATRIZ = 2.^aux


MATRIZ =
2
16
128

4
32
256

8
64
512

Exerccio 11:
>>%CRIAO DA MATRIZ
>> A(1,1) = 2*1+1*i;
>> A(2,2) = 2*2+2*i;
>> A(3,3) = 2*3+3*i;
>> A(4,4) = 2*4+4*i;
>> A

131

A =
2.0000 + 1.0000i
0
0
0

0
4.0000 + 2.0000i
0
0

0
0
6.0000 + 3.0000i
0

0
0
0
8.0000 + 4.0000i

>>%MATRIZES B a H:
>> B = A.';
>> C = A+B;
>> D = inv(A);
>> E = A';
>> F = B.*E;
>> G = A^(3/2);
>> H = D.^3;

===========================================================

Captulo 4
===========================================================
Exerccio 1:
a.
b.
c.
d.
e.
f.

Linhas 1 a 5, Coluna 3
Linhas 1 a 5, Colunas 7 a 10
Linhas 1, 3 e 5
Linha 1, Colunas 2, 3 e 4
Matriz A
Linhas 4, 3 e 2

Exerccio 2:
>> v = 0:0.25:1;
>> MATRIZ = [sin(v);cos(v);sqrt(v)];

Exerccio 3:
a.
b.
c.
d.
e.

B
C
D
E
F

=
=
=
=
=

A(:,3)
A(3,:)
A(1,2:4)
A(1,2:end)
[A(3) A(10); A(5) A(12)]

Exerccio 4:
>> a = linspace(10,4,4)
a =
10

>> A(:,1) = a';


132

>> A(:,2) = A(:,1).^-1;


>> A(:,3) = a' + 3*i;
>> A(:,4) = conj(A(:,3));
>> A
A =
10.0000
8.0000
6.0000
4.0000

0.1000
0.1250
0.1667
0.2500

10.0000
8.0000
6.0000
4.0000

+
+
+
+

3.0000i
3.0000i
3.0000i
3.0000i

10.0000
8.0000
6.0000
4.0000

3.0000i
3.0000i
3.0000i
3.0000i

Exerccio 5:
>> vetor = linspace(10,4,4);
>>
>>
>>
>>

COL1
COL2
COL3
COL4

=
=
=
=

vetor';
(vetor+3*i)';
(vetor-pi*i).';
(sqrt(vetor.^-1))';

>> A = [COL1 COL2 COL3 COL4]


A =
10.0000
8.0000
6.0000
4.0000

10.0000
8.0000
6.0000
4.0000

3.0000i
3.0000i
3.0000i
3.0000i

10.0000
8.0000
6.0000
4.0000

3.1416i
3.1416i
3.1416i
3.1416i

0.3162
0.3536
0.4082
0.5000

Exerccio 6:
a. A=[1:4;5:8;9:12;13:16];
B=[7.4 pi 0; -4.01 2 3; 0.1 10 0];
b. c=[A(1,1:3)];
c. d=(B(:,3))';
d. Na matriz A, primeiro vamos extrair a submatriz [2 3;6 7]:
AREA_A1 = A(1:2,2:3);
Extraindo a submatriz [4;8;12;16]:
AREA_A2 = A(:,4);
Devemos fazer uma concatenao por linha entre estas reas, mas
o nmero de linhas entre elas diferente.
Primeiro vamos fazer uma concatenao por coluna entre a rea A1
e uma matriz quadrada de dimenso 2 com zeros:
NEW_AREA_A1 = [AREA_A1;zeros(2)];
Agora podemos fazer a concatenao por linha:
AREA_A = [NEW_AREA_A1 AREA_A2]
Na matriz B, vamos extrair a primeira linha:
AREA_B = B(1,:)
e. A(1,:) = [B(2,:) 0]

133

f. TRANSPOSTA = [A(:,1)';A(:,3)'];
A(2:3,:) = TRANSPOSTA;

Exerccio 7:
>> m = [4 10 1 6 2; 8 12 4 5 7; 0 87 0 5 9; 1 32 1 0 1; 0 11 0 1 0];
a. M1 = [m(4:5,2:3) m(2:3,4:5)]
M1 =
32
11

1
0

5
5

7
9

b. M2 = [m(2:3,4:5);m(4:5,2:3)]
M2 =
5
5
32
11

7
9
1
0

c. M3 = [M1(1,:) M1(2,:)]
M3 =
32

11

Exerccio 8:
>> numeros = 20*rand(1,10);
>> numeros = sort(numeros,'ascend');
>> maior = numeros(10)
maior =
18.6802
>> menor = numeros(1)
menor =
0.2380

Exerccio 9:
>> numeros = 10*rand(1,6);
>>%VALOR MXIMO: max(numeros)
>> maximo = max(numeros);
>>%INDICE DO MAX:
>> pos_max = find(numeros==maximo);
>>%VALOR MINIMO: min(numeros)
>> minimo = min(numeros);
134

>>%INDICE DO MIN:
>> pos_min = find(numeros==minimo);
>>%IMPRESSO:
>> numeros
numeros =
4.3141

9.1065

1.8185

2.6380

1.4554

1.3607

>> [maximo;pos_max]
ans =
9.1065
2.0000
>> [minimo;pos_min]
ans =
1.3607
6.0000

Exerccio 10:
>> matriz = randn(5);
a.
b.
c.
d.
e.
f.
g.
h.
i.
j.
k.
l.
m.

sum(matriz)
sum(matriz')'
trace(matriz)
max(sum(matriz))
min(sum(matriz')')
sort(matriz')'
indice = find(matriz>0.5)
matriz'
rank(matriz)
det(matriz)
cond(matriz)
inv(matriz)
matriz = [matriz ones(5)]
matriz(:,8:10)=[]
matriz(:,1:2)=[]

Exerccio 11:
>>P1=[1 5];
>>P2=[4 9];
a. sqrt((1-4)^2+(5-9)^2);
b. sqrt(sum((P1-P2).^2));
c. norm(P1-P2);

135

Exerccio 12:
>>salario = [50 100 150];
>>freq = [30 60 10];
a. media = sum(salario.*freq)/sum(freq);
b. variancia = sum((salario-media).^2.*freq)/sum(freq);
c. desvio = sqrt(variancia);

Exerccio 13:
>> format rat
>> A = [17 24 1 8 15;33 5 7 14 16;4 6 13 20 22;10 12 19 21 3;11 18 25 2 9];

>> B = [175;190;245;190;175];
>> %A*X=B -> X=A\B ou X=inv(A)*B
>> tic, X=A\B, toc
>> tic, X=inv(A)*B, toc
>> X
X =
260/393
528/235
1171/393
841/208
1952/393

Exerccio 14:
>> format rat
>> A = [17 24 1 8 15;33 5 7 14 16;4 6 13 20 22;10 12 19 21 3;11 18 25 2 9];

>> B = [175;190;245;190;175];
>> CHEIA = [A B];
>> ESCALONADO = rref(CHEIA);
>> X = ESCALONADO(:,6)
X =
260/393
528/235
1171/393
841/208
1952/393

Exerccio 15:
>> format rat
>> [x1 x2 x3 x4 x5] =
solve('17*x1+24*x2+x3+8*x4+15*x5=175','33*x1+5*x2+7*x3+14*x4+16*x5=190

136

','4*x1+6*x2+13*x3+20*x4+22*x5=245','10*x1+12*x2+19*x3+21*x4+3*x5=190'
,'11*x1+18*x2+25*x3+2*x4+9*x5=175')
UMA OUTRA MANEIRA DE SE FAZER O EXERCCIO 15 UTILIZANDO STRINGS.
STRINGS O NOME QUE SE D QUANDO VETORES ARMAZENAM TEXTOS (ENTRE
ASPAS SIMPLES), ONDE CADA CARACTER DO TEXTO UM ELEMENTO DO VETOR.
OBSERVE:
>>
>>
>>
>>
>>
>>

exp1 =
exp2 =
exp3 =
exp4 =
exp5 =
[x1 x2

'17*x1+24*x2+x3+8*x4+15*x5=175';
'33*x1+5*x2+7*x3+14*x4+16*x5=190';
'4*x1+6*x2+13*x3+20*x4+22*x5=245';
'10*x1+12*x2+19*x3+21*x4+3*x5=190';
'11*x1+18*x2+25*x3+2*x4+9*x5=175';
x3 x4 x5] = solve(exp1,exp2,exp3,exp4,exp5)

===========================================================

Captulo 6
===========================================================
Exerccio 1:
n=input('Quantos elementos da
encontrados:
');
seq_fibonacci = zeros(n,1);
for ii=0:n-1
if(ii==0)
seq_fibonacci(ii+1,1)
elseif(ii==1)
seq_fibonacci(ii+1,1)
else
seq_fibonacci(ii+1,1)
1,1)+seq_fibonacci(ii,1);
end
end
disp(seq_fibonacci);

sequncia de Fibonacci que devem ser

= 0;
= 1;
= seq_fibonacci(ii-

Exerccio 2:
% DEFINE O NMERO DE ALUNOS NO CURSO DE CLCULO
nalunos = input('Qual o nmero de alunos existentes no curso de
Clculo I:
');
naulas = 20; % NMERO DE AULAS TOTAIS DO CURSO
% DEFININDO AS VARIVEIS NECESSRIAS E ALOCANDO ESPAO PARA ELAS
matricula = zeros(nalunos,1);
nota1 = zeros(nalunos,1);
nota2= zeros(nalunos,1);
media= zeros(nalunos,1);
naulas_freq = zeros(nalunos,1);
freq = zeros(nalunos,1);
Situacao = zeros(nalunos,1);
% UTILIZADO PARA FORNECER OS DADOS DOS ALUNOS DO CURSO
137

for ii=1:nalunos
disp(sprintf('\n'));
matricula(ii,1) = input('Informe o nmero de matrcula do aluno:
') ;
nota1(ii,1) = input('Informe a primeira nota do aluno:
') ;
nota2(ii,1) = input('Informe a segunda nota do aluno:
') ;
% CALCULO DA MDIA
media(ii,1) = (nota1(ii,1)+nota2(ii,1))/2;
naulas_freq(ii,1) = input('Informe o nmero de aulas que o aluno
frequentou:
') ;
% CALCULO DA FREQUNCIA
freq(ii,1) = naulas_freq(ii,1)/naulas;
% VERIFICA A SITUAO DO ALUNO (1 PARA ALUNO APROVADO E 0 PARA ALUNO
REPROVADO)
if(media(ii,1)>=6 && freq(ii,1)>=0.75)
Situacao(ii,1) = 1;
end
end
% IMPRESSO DA SITUAO DE CADA ALUNO
for ii=1:nalunos
disp(sprintf('\n-------------------------------'));
disp(sprintf('Nmero de matricula:
%d', matricula(ii,1)));
disp(sprintf('Mdia:
%f', media(ii,1)));
disp(sprintf('Frequencia:
%f ', freq(ii,1)*100));
if(Situacao(ii,1)==1)
disp(sprintf('Situao: Aprovado '));
else
disp(sprintf('Situao:
Reprovado'));
end
disp(sprintf('-------------------------------'));
end

Exerccio 3:
H = input('Informe a altura(m):
');
Sexo = input('Informe o sexo da pessoa(1 para o sexo masculino e 2
para o sexo feminino): ');
peso = 0;
while peso==0
switch Sexo
case 1
peso = (72.7*H)-58;
case 2
peso = (62.1*H)-44.7;
otherwise
% CONDIO PARA CASO O USUARIO INFORME DE MANEIRA INCORRETA O
% SEXO DA PESSOA
fprintf('\n');
Sexo = input('Informe novamente o sexo da pessoa(1 para o
sexo masculino e 2 para o sexo feminino): ');
end
end
fprintf('\n-----------------------------------------------\n');
fprintf('O peso ideal para essa pessoa : %f Kg\n', peso);
fprintf('-----------------------------------------------\n');

Exerccio 4:
138

JOGO0 = zeros(1,6); % ARMAZENA OS NMEROS INFORMADOS.


JOGO1 = zeros(1,6); % AUXILIA PARA NO REPETIO DOS NMEROS.
disp('INFORME 6 NUMEROS INTEIROS ENTRE 1 e 60');
ii=1;
for ii=1:6
JOGO1(1,ii) = input('Nmero: ');
% PARA CASO O NMERO INFORMADO ESTEJA FORA DO INTERVALO VLIDO
while (JOGO1(1,ii)<=0 || JOGO1(1,ii)>60)
JOGO1(1,ii) = input('Nmero incorreto,valor deve ser sentre 1
e 60, informe outro: ');
end
% UTILIZADO PARA VERIFICAR SE O NMERO INFORMADO EST REPETINDO
teste = JOGO0==JOGO1(1,ii);
% ENTRA NESSE WHILE SE O NMERO ESTIVER REPETINDO FAZENDO TODO O
% PROCESSO NOVAMENTE (INFORMA UM NOVO NMERO E VERIFICA SE EST DENTRO
% DO INTERVALO VLIDO E SE NO REPETE)
while (find(teste==1))
JOGO1(1,ii) = input('Nmero existente, informe outro: ');
while (JOGO1(1,ii)<=0 || JOGO1(1,ii)>60)
JOGO1(1,ii) = input('Nmero incorreto,valor deve ser entre
1 e 60, informe outro: ');
end
teste = JOGO0==JOGO1(1,ii);
end
JOGO0(1,ii)=JOGO1(1,ii);
end
save JOGOJOGO0

Exerccio 5:
% REALIZAO DO SORTEIO
n = 60;
sorteio0 = zeros(1,6);
sorteio1 = zeros(1,6);
% FOR UTILIZADO PARA FAZER O SORTEIO DE 6 NMEROS SEM QUE HAJA
REPETIO
for ii=1:6
sorteio1(1,ii) = ceil(n*rand(1,1));
teste = (sorteio0==sorteio1(1,ii));
while (find(teste==1))
%
sorteio1
sorteio1(1,ii) = ceil(n*rand(1,1));
%
sorteio1
teste = (sorteio0==sorteio1(1,ii));
end
sorteio0(1,ii) = sorteio1(1,ii);
%
sorteio0
end
save resultadosorteio0

Exerccio 6:
% CARREGA O JOGO FEITO PELO USURIO E O RESULTADO DA LOTERIA
139

load JOGO.mat
load resultado.mat
% PROCESSO DE COMPARAO PARA DESCOBRIR QUANTOS ACERTOS FOI OBTIDO
jj=1;
acertos=[];
for ii=1:6
comparar = JOGO0(1,ii)==sorteio0;
if (find(comparar==1))
acertos(1,jj) = find(comparar==1);
jj=jj+1;
end
end
ganhador = length(acertos);
disp(sprintf('\n-----------------------------\n'))
disp(sprintf('O jogador acertou %d nmeros',ganhador))
disp(sprintf('\n-----------------------------\n'))

Exerccio 7:
%% DEFININDO OS JOGOS DOS N APOSTADORES
napostadores = input('Quantos apostas foram feitas:
JOGOS1 = zeros(napostadores,6);
grafico = zeros(1,napostadores);
JOGO = zeros(1,6);
n=60;
for jj=1:napostadores
JOGO = zeros(1,6);
for ii=1:6
JOGO(1,ii) = ceil(n*rand(1,1));
teste = (JOGOS1(jj,:)==JOGO(1,ii));
while (find(teste==1))
JOGO(1,ii) = ceil(n*rand(1,1));
teste = (JOGOS1(jj,:)==JOGO(1,ii));
end
JOGOS1(jj,ii) = JOGO(1,ii);
end
end
%% SORTEIO
sorteio0 = zeros(1,6);
sorteio1 = zeros(1,6);
for ii=1:6
sorteio1(1,ii) = ceil(n*rand(1,1));
teste = (sorteio0==sorteio1(1,ii));
while (find(teste==1))
sorteio1(1,ii) = ceil(n*rand(1,1));
teste = (sorteio0==sorteio1(1,ii));
end
sorteio0(1,ii) = sorteio1(1,ii);
end
%% CONFERENCIA
for jj=1:napostadores
kk=1;
acertos=[];
for ii=1:6
comparar = JOGOS1(jj,ii)==sorteio0;

\n');

140

if (find(comparar==1))
acertos = find(comparar==1);
kk=kk+1;
end
end
ganhador = length(acertos);
grafico(1,jj) = ganhador;
end
cont = zeros(7,1); % UTILIZADO PARA CONTAR O NMERO DE ACERTADORES EM
CADA FAIXA
for jj=1:napostadores
cont(grafico(1,jj)+1,1) = cont(grafico(1,jj)+1,1)+1;
end
format short
% PORCENTAGEM DE ACERTADORES EM CADA FAIXA
cont1 = cont/napostadores*100

Exerccio 8:
sequencia = [1 2 3 10 3 4 0 2 9 8 10];
[aux,num_ele] = size(sequencia);
desloc = 1;
for i = 1:num_ele
if i == 1
if sequencia(i) > sequencia(i+1)
Ele_des(desloc) = i;
desloc
= desloc + 1;
end
elseif i == num_ele
if sequencia(i) > sequencia(i-1)
Ele_des(desloc) = i;
desloc
= desloc + 1;
end
else
if sequencia(i) > (sequencia(i-1) + sequencia(i+1))
Ele_des(desloc) = i;
desloc
= desloc + 1;
end
end
end
[aux,num] = size(Ele_des);
disp(sprintf('O numero de elementos que atendem restriao sao:
%d',num))
disp('A posiao dos elementos sao:')
disp(Ele_des)

141

Exerccio 9:
x=inf;
while x >00
x = input('Fornea o valor: ');
format long
x = sqrt(x)
end

===========================================================

Captulo 7
===========================================================
Exerccio 1:
Letra A
x=[-20:0.01:20];
y=x.^3-5*x+2;
plot(x,y)
Letra B
x=[-2*pi:0.01:pi];
y=sin(x).*cos(x);
plot(x,y)
Letra C
x=[0:0.01:20];
y=cos(exp(x.^0.2));
plot(x,y)

Exerccio 2:
Letra A
x=[-20:0.01:20];
y=x.^3-5*x+2;
semilogx(x,y)
title('Grfico 1')
grid
xlabel('Varivel X')
ylabel('Varivel Y')

Letra B
x=[-2*pi:0.01:pi];
y=sin(x).*cos(x);
142

loglog(x,y)
title('Grfico 2')
grid
xlabel('Varivel X')
ylabel('Varivel Y')

Letra C
x=[0:0.01:20];
y=cos(exp(x.^0.2));
semilogy(x,y)
title('Grfico 3')
grid
xlabel('Varivel X')
ylabel('Varivel Y')

Exerccio 3:
x=linspace(-5,5,50);
y=4*x.^3-4*x.^2+15;
stem(x,y)

Exerccio 4:
t=0:0.01:2*pi;
Ia=2*sin(pi*t);
Ib=2*sin(pi*t-(2*pi)/3);
Ic=2*sin(pi*t+(2*pi)/3);
plot(t,Ia,'r','LineWidth',2)
hold on
plot(t,Ib,'b')
plot(t,Ic,'y')
grid

Exerccio 5:
Letra A
x=-pi:pi/20:pi
subplot(1,2,1)
y1=sin(x)
plot(x,y1)
grid
title('Diagrama 1');
subplot(1,2,2)
y2=cos(x)
plot(x,y2)
grid
title('Dagrama 2');

143

Letra B
x=-pi:pi/20:pi
subplot(2,1,1)
y1=sin(x)
plot(x,y1)
grid
title('Diagrama 1');
subplot(2,1,2)
y2=cos(x)
plot(x,y2)
grid
title('Dagrama 2');

Exerccio 6:
u=[16 47 34 30 35 5 14 30];
numero={'16''47''34''30''35''5''14''30'};
explode=[1 1 1 1 1 1 1 1];
pie3(u,explode,numero)
legend('Valvula SF6','Fusvel 300A','Fusvel 500A','Isolador
33kV','Isolador 415V','Disjuntor 25kV','Disjuntor 220V','Lmpada
mercrio',-1)

Exerccio 7:
Letra A
x = [-5:0.01:5];
y = [-5:0.01:5];
[X Y]=meshgrid(x,y);
Z=X.^2+Y.^2+exp(X);
mesh(X,Y,Z)

Letra B
x = [-0.5:0.01:0.5];
y = [-0.5:0.01:0.5];
[X Y]=meshgrid(x,y);
Z=sqrt(1-X.^2-Y.^2);
mesh(X,Y,Z)

Letra C
x = [0:0.01:1];
y = [0:0.01:1];
[X Y]=meshgrid(x,y);
Z=X*Y;
mesh(X,Y,Z)

Letra D
[X Y]=meshgrid(-8:0.1:8,-8:0.1:8);
Z=atan(X.^2+Y.^2);
144

mesh(X,Y,Z)

Letra E
[X Y]=meshgrid(-pi:0.1:pi,-pi:0.1:pi);
Z=sin(X)+cos(Y);
mesh(X,Y,Z)

Exerccio 8 (Desafio):
t=0:0.01:2*pi;
x=cos(t);
y=sin(t);
plot(x,y,'r')
title('circunferncia trigonomtrica')
xlabel('eixo dos cossenos')
ylabel('eixo dos senos')
hold on
plot([-1 1],[0 0])
plot([0 0],[-1 1])

145

LISTA DE FIGURAS
Figura 1.1 -Janela inicial MATLAB. ............................................................................................. 8
Figura 1.2 -Menu principal MATLAB. ........................................................................................ 8
Figura 1.3 - Menu Workspace, MATLAB. .................................................................................. 9
Figura 1.4 - Exemplo de Visualizao de uma matriz pelo Editor. ................................... 9
Figura 2.1 - Help pelo Function Browser. .................................................................................14
Figura 2.2 - Help Browser...............................................................................................................15
Figura 2.3 - Trecho da Lista de Tpicos de Help....................................................................15
Figura 2.4 - Trecho da Lista de Funes da Biblioteca elfun.............................................16
Figura 2.5 - Informaes Disponibilizadas na Janela para aos.......................................16
Figura 2.6 - Funes de Transformao de Coordenadas ..................................................19
Figura 2.7 - Instrues de uso da funo cart2pol. ...............................................................19
Figura 2.8 -Janela de Variveis. ....................................................................................................21
Figura 2.9 - Comando save. ............................................................................................................23
Figura 5.1 - Menu superior janela Edit. .....................................................................................67
Figura 5.2 -Mensagem de pasta padro do MATLAB. .......................................................68
Figura 7.1 - cone Plot Tools. ....................................................................................................... 113
Figura 7.2 - Barra menus.............................................................................................................. 113
Figura 7.3 - Property EditorFigure. ........................................................................................... 114
Figura 7.4 - Property Editor Axes............................................................................................... 115
Figura 7.5 - Comando Insert........................................................................................................ 115
Figura 0.1 - Format ......................................................................................................................... 122

146

LISTA DE GRFICOS
Grfico 7.1- Comando plot (1).......................................................................................................85
Grfico 7.2 - Comando plot (2). ....................................................................................................86
Grfico 7.3 - Comando plot (3). ....................................................................................................87
Grfico 7.4 - Comando plot (4). ...................................................................................................88
Grfico 7.5 - Comandosplotehold on. ..........................................................................................89
Grfico 7.6 - Comando figure. ........................................................................................................90
Grfico 7.7 - Comando subplot. .....................................................................................................91
Grfico 7.8 Comando fplot. ...........................................................................................................92
Grfico 7.9 - Comando loglog.........................................................................................................93
Grfico 7.10 - Comando plot curva logartmica. .....................................................................94
Grfico 7.11 - Comando semilogx. ................................................................................................94
Grfico 7.12 -Comando plot curva exponencial. .....................................................................95
Grfico 7.13 -Comando semilogy. .................................................................................................96
Grfico 7.14 -Comando polar.........................................................................................................96
Grfico 7.15 -Comando compass. .................................................................................................97
Grfico 7.16 Comando bar...........................................................................................................98
Grfico 7.17 Comando barh. .......................................................................................................98
Grfico 7.18 -Comando hist. ...........................................................................................................99
Grfico 7.19 - Comando pie. ........................................................................................................ 100
Grfico 7.20 Comando pie com legendas. ........................................................................... 101
Grfico 7.21 Comando pie expandido. .................................................................................. 101
Grfico 7.22 Comando stem. .................................................................................................... 102
Grfico 7.23 Comando stairs. .................................................................................................. 102
Grfico 7.24 -Vendas anuais. ...................................................................................................... 104
Grfico 7.25 -Senides com marcadores e cores diferenciadas. ................................... 106
Grfico 7.26 - Senides com legendas na posio 0. ...................................................... 107
Grfico 7.27 - Senides de diferentes tamanhos de marcadores. ................................ 108
Grfico 7.28 - Comando plot3. .................................................................................................... 110
Grfico 7.29 -Comando mesh. ..................................................................................................... 111
Grfico 7.30 - Comando mesh com seno. ............................................................................... 111
Grfico 7.31 Comandobar3 e bar3hrespectivamente. .................................................... 112
Grfico 7.32 -Comandopie3. ........................................................................................................ 113

147

LISTA DE TABELAS
Tabela 2.1 - Operadores Aritmticos. ........................................................................................11
Tabela 2.2 - Constantes Matemticas. ........................................................................................12
Tabela 2.3 - Funes Trigonomtricas. .....................................................................................13
Tabela 2.4 - Funes Exponenciais. ............................................................................................13
Tabela 2.5 - Funes Complexas. .................................................................................................18
Tabela 2.6 -Comandos de Consulta e Manipulao...............................................................22
Tabela 2.7 - Outros Comandos. .....................................................................................................24
Tabela 4.1 - Funes de Operao Aritmtica. .......................................................................47
Tabela 4.2 - Outras Funes Matemticas................................................................................47
Tabela 4.3 - Funes Geradoras de Matrizes. .........................................................................53
Tabela 4.4 - Funes de Consulta. ...............................................................................................54
Tabela 4.5 - Funes de Manipulao. .......................................................................................56
Tabela 4.6 - Funes Diversas.......................................................................................................57
Tabela 4.7 - Funes de lgebra. .................................................................................................59
Tabela 5.1 Principais atalhos. .....................................................................................................69
Tabela 6.1 - Operadores Relacionais. .........................................................................................71
Tabela 6.2 - Operadores Lgicos. .................................................................................................72
Tabela 6.3 - Comandos Bsicos. ...................................................................................................81
Tabela 7.1 - Comandos de grficos 2D. ......................................................................................85
Tabela 7.2 -Cor, linhas e marcadores. ..................................................................................... 105
Tabela 7.3 - Valores comando legend. ..................................................................................... 107
Tabela 7.4 - Comandos grficos tridimensionais................................................................ 109
Tabela 7.5 Principais cones. .................................................................................................... 114

148

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