Você está na página 1de 76

Universidade Estadual de Montes Claros

Departamento de Cin ias da Computao


Ba harelado em Engenharia de Sistemas

Mini urso

Uma Introduo ao

MatLab

Mini urso ofere ido na I Es ola de Vero em Computao


UNIMONTES/IFNMG a ser realizada no perodo 28 de janeiro 01 de fevereiro de 2013 nas instalaes da UNIMONTES.

por

Camila Katheryne Santos Cangussu


Guilherme Augusto Duque e Silva Costa
Lu as Almeida Aguiar
Orientador: Prof. Rosivaldo Antnio Gonalves

Janeiro  2013

Universidade Estadual de Montes Claros


Departamento de Cin ias da Computao
Ba harelado em Engenharia de Sistemas
Uma Introduo ao

MatLab

Camila Katheryne Santos Cangussu


Guilherme Augusto Duque e Silva Costa
Lu as Almeida Aguiar
Orientador: Prof. Rosivaldo Antnio Gonalves

Mini urso ofere ido na I Es ola de Vero em Computa-

o UNIMONTES/IFNMG a ser realizada no perodo 28 de


janeiro 01 de fevereiro de 2013 nas instalaes da UNIMONTES.

Janeiro/2013

Sumrio
Lista de Figuras

1 Introduo

1.1 O que MatLab ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


1.2 Sintaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Toolboxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 Ajuda no MatLab
2.1

Comandos . . . . . . . . . . . . .
2.1.1 Comando help . . . . . .
2.1.2 Comando demo . . . . . .
2.2 Editor/Depurador de Programas .
2.3 Limitao de Memria . . . . . .
2.4 Arquivos .m . . . . . . . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

3 Manipulao de Matrizes, Vetores e Es alares


3.1

Atribuio . . . . . . . . . . . . . . . . . . .
3.1.1 Comando who . . . . . . . . . . . . .
3.1.2 Comando whos . . . . . . . . . . . .
3.1.3 Comando lear . . . . . . . . . . . .
3.1.4 Comando l . . . . . . . . . . . . .
3.2 Operaes Bsi as: +, -, *, / . . . . . . . . .
3.3 Operador dois pontos ':' . . . . . . . . . . .
3.3.1 Outros Usos do Operador dois pontos
3.4 Cl ulos Fundamentais e Matrizes Espe iais
3.4.1 Constantes Predenidas . . . . . . .

4 Funes Elementares
4.1

Funes Bsi as . . . . . . . . . . . .
4.1.1 Exemplos simples . . . . . . .
4.1.2 Nmeros Complexos . . . . .
4.1.3 Comandos de Converso . . .
4.2 Funes Trigonomtri as . . . . . . .
4.3 Funes Hiperbli as : Nomen latura

.
.
.
.
.
.
ii

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

1
1
2

4
4
4
4
5
5

7
8
8
8
8
9
12
12
13
14

16

16
17
19
21
21
22

iii

SUMRIO

5 Controle de Fluxo

5.1 Regras para es rever uma fun tion


5.2 Operadores Rela ionais . . . . . . .
5.3 Operadores Lgi os . . . . . . . . .
5.4 Estruturas de Controle . . . . . . .
5.4.1 Estruturas Condi ionais . .
5.4.2 Estruturas de Repetio . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

23

25
25
27
28
28
31

6 Operaes Sobre Matrizes

33

7 Medidas Estatsti as

35

8 Gr os

37

6.1

8.1
8.2
8.3
8.4
8.5
8.6
8.7
8.8
8.9
8.10

Outras Funes teis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Exemplo 1 - Comando hold on . . . . . . . . . . . . . . . . . . . . . . . .


Exemplo 2 - Gr os superpostos om opes distintas de pontos e traado
Exemplo 3 - Opes de representao gr a simultneas . . . . . . . . . .
Exemplo 4 - Comando subplot . . . . . . . . . . . . . . . . . . . . . . . .
Exemplo 5 - Comando pie . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exemplo 6 - Comando pie3 . . . . . . . . . . . . . . . . . . . . . . . . . .
Exemplo 7 - Comando bar . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exemplo 8 - Comando plot3 . . . . . . . . . . . . . . . . . . . . . . . . .
Exemplo 9 - Gr o de Superf ie . . . . . . . . . . . . . . . . . . . . . . .
Exemplo 10 - Animao Gr a . . . . . . . . . . . . . . . . . . . . . . . .
8.10.1 Animao bidimensional . . . . . . . . . . . . . . . . . . . . . . . .
8.10.2 Animao tridimensional . . . . . . . . . . . . . . . . . . . . . . . .

9 Soluo de Sistemas de Equaes Lineares


9.1

Mtodos Diretos . . . . . . .
9.1.1 Eliminao de Gauss
9.1.2 De omposio LU . .
9.2 Mtodos Iterativos . . . . .
9.2.1 Mtodo PCG . . . .
9.2.2 Mtodo Minres . . .
9.2.3 Comando spy . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

10 Ajuste de Curvas e Interpolao


10.1
10.2
10.3
10.4

Interpolao Linear por Partes


Interpolao Super ial . . . .
Comando spline . . . . . . .
Comando polyfit . . . . . .

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

37
37
38
39
40
40
41
42
42
43
43
44

45

46
46
46
47
48
48
49

50

50
51
52
53

11 Leitura e Es rita de Arquivos de Dados

55

12 Anlise Polinomial

57

iv

SUMRIO

13 Integrao e Diferen iao

59

14 Equaes Diferen iais Ordinrias

64

15 De omposio e Fatorao de Matrizes

66

13.1 Integrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
13.2 Diferen iao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

15.1
15.2
15.3
15.4

Fatorao Triangular - LU . . . . . . . . . .
De omposio - QR . . . . . . . . . . . . . .
De omposio em Valores Singulares - SVD
Autovalores e Autovetores . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

66
66
67
67

16 Consideraes Finais

69

Refern ias bibliogr as

70

Lista de Figuras
5.1 Estruturas Condi ionais: If-else-end . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.2 Controle de Fluxo: If-else-end . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.3 Estruturas Condi ionais: Swit h- ase-otherwise-end . . . . . . . . . . . . . . . . 30
7.1

Gr o de barras: Histograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

8.1
8.2
8.3
8.4
8.5
8.6
8.7
8.8
8.9

Comando hold on : Permite plotar vrias guras numa mesma janela


Gr os superpostos om opes distintas de pontos e traado . . . .
Opes de representao gr a simultneas . . . . . . . . . . . . . .
Comando subplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comando pie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comando pie3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comando bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comando plot3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gr o de Superf ie . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.1

Gr o mostrando os valores no nulos de uma matriz . . . . . . . . . . . . . . 49

10.1
10.2
10.3
10.4

Interpolao linear por partes . . . . . . . . .


Superf ie interpolante da matriz temperatura
Interpolao utilizando spline . . . . . . . . .
Ajuste polinomial de grau 1 . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.

38
38
39
40
41
41
41
42
43

51
52
53
54

12.1 Curvas ontnuas de um polinmio e a sua derivada . . . . . . . . . . . . . . . . 58


13.1 Derivada numri a: 30 divises do intervalo [-1,1 . . . . . . . . . . . . . . . . . 63
13.2 Derivada numri a: 100 divises do intervalo [-1,1 . . . . . . . . . . . . . . . . . 63
14.1 Gr o das solues exata e numri a da equao y = 3x2 . . . . . . . . . . . . 65

Captulo 1
Introduo
1.1 O que MatLab ?
Matlab(MATrix LABoratory) uma ferramenta omputa ional(software) que possui diversas fun ionalidades numri as, algbri as e gr as. O Matlab permite a resoluo de vrios
problemas matemti os, sem requerer muito onhe imento de programao, omo seria ne essrio para resolver os mesmos problemas em linguagens de programao de baixo nvel, omo
por exemplo C.
Os usos tpi os para o Matlab in luem:
Cl ulos matemti os;
Desenvolvimento de algoritmos;
Modelagem, simulao e onfe o de prottipos;
Anlise, explorao e visualizao de dados;
Gr os ient os e da engenharia;
Desenvolvimento de apli aes, in luindo a elaborao de interfa es gr as om o usurio.

1.2 Sintaxe
A sintaxe do Matlab diferente da sintaxe usada por ns no dia-a-dia, por motivos bvios,
omo podemos ver nos exemplos abaixo.
Lu as Thunder ats mudou sua foto do fa ebook.

CAPTULO 1.

INTRODU O

Essa frase pode ter dois entendimentos:


A foto perten ente a Lu as Thunder ats foi mudada.
A foto de outra pessoa foi mudada por Lu as Thunder ats.

Essa frase ambgua, e para um omputador, que uma maquina, no possvel destinguir
o sentindo analisando o ontexto.
Se vo no omer seu almoo, no omer a sobremesa.
Se vo no al anar o total na primeira prova, no al anar total no nal do trimestre.

Na primeira frase, esperado que se a pessoa omer o almoo, ela omer sobremesa, porm
na segunda frase, se no satisfeita a primeira ondio, no se espera que a ontea o ontrrio.
Para a linguagem omputa ional, esse tipo de ambiguidade no pode o orrer, portanto o "se"do
Matlab semelhante ao do segundo aso, que, por sua vez, semelhante ao "se"matemti o.
Andr atirou em Joo Pessoa.

A ambiguidade dessa frase ausada pelo fato de uma idade possuir um nome prprio,
pois no sabemos se Andr atirou estando em Joo Pessoa, ou em algum om esse nome. Por
isso, no Matlab no se pode repetir nomes nem usar palavras reservadas.
Dessa forma, abordaremos adiante omo nomear variveis e utilizar omandos.

1.3 Toolboxes
O Matlab tanto um ambiente quanto uma linguagem de programao, e um dos aspe tos
mais poderosos o fato de que a linguagem Matlab permite onstruir suas prprias ferramentas
reutilizveis. O usurio pode fa ilmente riar suas prprias funes e programas espe iais
em linguagem Matlab. A medida que se es reve mais e mais funes para lidar om ertos
problemas naturalmente se levado a agrupar por onvenin ia, funes rela ionadas entre
si em diretrios espe iais. Isso nos introduz o on eito de Toolbox: uma oleo de arquivos
para tratar lasses espe iais de problemas. As toolboxes so mais do que uma simples oleo
de funes teis, elas representam os esforos de alguns dos maiores pesquisadores do mundo
em ampos omo ontrole, pro essamento de sinais e identi ao de sistemas, dentre outros.
Novas toolboxes so riadas a ada ano, dentre alguns exemplos no Matlab tem-se:
Toolbox de Pro essamento de Sinais;
Toolbox de Identi ao de Sistemas;

CAPTULO 1.

INTRODU O

Toolbox de Otimizao;
Toolbox de Sistemas de Controle;
Toolbox de Controle Robusto;
Toolbox de Redes Neurais;
Toolbox Spline.

Captulo 2
Ajuda no MatLab
2.1 Comandos
2.1.1 Comando help
Uma vez ini ializado, o Matlab, apare er na janela de omandos um prompt . O prompt
signi a que o Matlab est esperando um omando. Todo omando deve ser nalizado te landose Enter. No Matlab, pode-se obter ajuda sobre qualquer omando ou funo. O omando 
help (sem o prompt ) mostra uma listagem de todos os pa otes disponveis. Ajuda sobre um
pa ote espe  o ou sobre um omando ou funo espe  a obtida om o omando  help
nome,(sem a vrgula) onde nome pode ser o nome de um pa ote ou o nome de um omando ou
funo.

2.1.2 Comando demo


A visualizao de um exemplo de digo e sua exe uo pode, em alguns asos, ser mais
expli ativa do que a prpria denio do omando ou funo. Para isso, usa-se o omando demo,
que permite o a esso a uma janela indexada om vrias ferramentas que o Matlab implementa,
as quais apresentam rpidas demonstraes, omo vdeo-aulas e tutoriais, ontendo informaes
teis para uso e iente dos omandos disponibilizados pelo software.

2.2 Editor/Depurador de Programas


A atual verso do Matlab apresenta um editor espe  o para manipular arquivos de dados
e exe utveis, alm de permitir a depurao de programas na linguagem do Matlab. Este editor
onta om omandos do tipo break line, step into, et . Tambm existem no Matlab omandos
4

CAPTULO 2.

AJUDA NO MATLAB

espe  os para depurar um programa. Para a essar pela ajuda e onhe er estes omandos
digite:  help debug e em seguida pode-se fazer o help de qualquer um dos omandos mostrados.

2.3 Limitao de Memria


re omendvel, quando se trabalha om programas ou algoritmos que utilizam grande
quantidade de memria, veri ar a priori se a memria alo ada su iente para evitar que
em determinado momento da exe uo o programa aborte por insu in ia de memria. Isto
pode s vezes ser testado pelo dimensionamento dos arranjos que em determinado momento
sero gerados. Tambm isto pode ser monitorado testando ou exe utando isoladamente aquelas
partes do algoritmo que apresentaram maior onsumo de memria.
Sabe-se que no existe limitao omputa ional para a utilizao das ferramentas do Matlab
a no ser quelas impostas pela mquina em que esta sendo exe utado. A este respeito existe
o omando ben h, que testa a priori a performan e da mquina do usurio, omparando ertos
algoritmos, omo por exemplo, a de omposio matri ial LU dentre outros, e retornando o
tempo de CPU esperado. Este omando sem argumentos retorna, depois de um tempo, uma
lista de mquinas om diferentes estruturas, e os tempos de CPU que elas utilizam in luindo a
mquina do usurio, para desta forma efetuar a omparao.

2.4 Arquivos .m
Os omandos do MatLab so normalmente digitados na janela de omando, onde uma ni a
linha de omando introduzida e pro essada imediatamente. O MatLab tambm apaz de
exe utar sequn ias de omandos armazenadas em arquivos.
Os arquivos que ontm as de laraes do MatLab so hamadas arquivos ".m", e onsistem
de uma sequn ia de omandos normais do MatLab, possibilitando in luir outros arquivos
".m"es ritos no formato texto (ASCII).
Para editar um arquivo texto na janela de omando do MatLab, sele ione New M-File
para riar um novo arquivo ou Open M-File para editar um arquivo j existente, a partir
do menu File. Os arquivos podem, tambm, ser editados fora do MatLab utilizando qualquer
editor de texto.

Captulo 3
Manipulao de Matrizes, Vetores e
Es alares
Uma das prati idades do MatLab que no se faz ne essria a de larao do tipo da
varivel se esta no for uma varivel global. Isso o orre porque, para o MatLab, todas as
variveis onstituem-se matrizes.
Por exemplo, ao denirmos a seguinte frase:
 text = 'I Es ola de Vero';
Automati amente, a varivel text tratada omo um vetor de 17 posies ou omo uma
matriz linha de dimenses 1x17. De fato, para manipularmos o nosso vetor ou matriz, ao utilizarmos o omando
 text
Obteremos omo sada:
text =
I Es ola de Vero
Da mesma forma, se utilizarmos o omando
 text(3)
Obteremos omo sada:
ans =
6

CAPTULO 3.

MANIPULA O DE MATRIZES, VETORES E ESCALARES

E
Se quisermos tratar a varivel omo uma matriz, ao utilizarmos o omando
 text(1,3)
Obtemos omo sada:
ans =
E
Podemos notar que, para a essar apenas uma posio do vetor, ou matriz, basta que esta
seja identi ada entre parnteses. Repare que a varivel ans (de answer) padro para o
MatLab e utilizada sempre que um resultado, que retornado por alguma funo, no foi
designado a nenhuma outra varivel.

3.1 Atribuio
Para atribuir um valor de retorno a uma varivel basta digitar o nome da varivel seguida
do sinal = esquerda da funo que retorna o valor ou adeia de ara teres (string). Para
melhor demonstrar, temos os seguintes exemplos:
>> l a r a n j a s = 4 ;
>> bananas = 1 0 ;
>> p r e o . l a r a n j a = 1 . 7 5 ;
>> p r e o . banana = 2 . 3 ;
>> f r u t a s = l a r a n j a s + bananas ;
>> p r e o . medio = ( l a r a n j a s p r e o . l a r a n j a + bananas p r e o . banana ) / f r u t a s ;

CAPTULO 3.

MANIPULA O DE MATRIZES, VETORES E ESCALARES

3.1.1 Comando who


Quando se faz ne essrio o onhe imento de quais variveis esto ativas no ambiente (atualmente denidas), utiliza-se o omando who. Dessa forma, tendo sido de laradas todas as
variaveis supra itadas, temos:
 who
Your variables are:
bananas frutas laranjas pre o

3.1.2 Comando whos


Alm de querer saber quais so as variveis ativas, se quisermos ter onhe imento tambm
sobre o tamanho e tipo, podemos utilizar o omando whos:
 whos
Name
Size
bananas 1x1
frutas
1x1
laranjas 1x1
pre o
1x1

Bytes
8
8
8
552

Class
Attributes
double
double
double
stru t

3.1.3 Comando lear


Como j foi falado, o MatLab dispe de vrios omandos simples e prti os. Algumas
vezes, utilizamos variveis em apenas uma parte do programa, dessa forma, podemos limpar a
memria exigida por essa varivel, atravs do omando
 lear + <nome da variavel>
Temos tambm a possibilidade de apagar todas as variveis ativas no ambiente, utilizando
apenas os omandos
 lear ou  lear all

3.1.4 Comando l
Se, alm de apagar todas as variveis, deseja-se, tambm, limpar a tela, o MatLab dispe o
omando  l para tal.

CAPTULO 3.

MANIPULA O DE MATRIZES, VETORES E ESCALARES

3.2 Operaes Bsi as: +, -, *, /


Por exemplo, para denir uma matriz no se requer dimensionamento prvio, embora isto
seja possvel. Existem vrias formas de se denir uma matriz. Por exemplo, os valores so
inseridos por linhas, separadas estas por ";"ou "Enter"da seguinte maneira:
 A = [2 1 1; 1 2 1; 1 1 2
A=
2
1
1

1 1
2 1
1 2

 B = [ 1 2 3 4 + <ENTER>
5 6 7 8 + <ENTER>
9 10 11 12
B=
1 2 3
4
5 6 7
8
9 10 11 12
 C = [1 0 0; 0 1 0; 0 0 1
C=
1
0
0

0 0
1 0
0 1

J que qualquer dado numri o onsiderado um arranjo, os smbolos +, -, *, / so designados omo operaes matri iais ao passo que para operaes om es alares podem ser utilizados
os smbolos .- , .+ , .* , ./ . Quando o arranjo um nmero pode-se usar um ou outro smbolo
indistintamente. Usando as matrizes A, B e C denidas a ima observem os seguintes exemplos:
 A*C
ans =

CAPTULO 3.

2
1
1

MANIPULA O DE MATRIZES, VETORES E ESCALARES

10

1 1
2 1
1 2

Produtos entre matrizes de dimenses distintas so possveis desde que respeitadas as dimenses para o produto, por exemplo, A*B bem denida, j B*A no permitido dado que
o nmero de olunas de B 4 e o nmero de linhas de A 3.
 A*B
ans =
16 20 24
20 24 28
24 28 32

28
32
36

 B*A
??? Error using ==> mtimes
Inner matrix dimensions must agree.
 MAT = A.*C
MAT =
2
0
0

0 0
2 0
0 2

Isto orresponde a um produto omponente a omponente, isto , a matriz MAT ujas entradas so MAT (i,j) = A(i,j) C (i,j).
 A+1
ans =
3 2 2
2 3 2
2 2 3
As formas A.+1, A(1,1).+1 no so validas ao passo que a forma 5.+1 a eita.

CAPTULO 3.

MANIPULA O DE MATRIZES, VETORES E ESCALARES

11

 A*5 %(ou A*.5)


ans =
10 5
5
5 10 5
5
5 10
 C/A %ou C * inv(A)
ans =
0.7500 -0.2500 -0.2500
-0.2500 0.7500 -0.2500
-0.2500 -0.2500 0.7500
 C./A % a matriz denida por C (i,j)/A(i,j)
ans =
0.5000
0
0
0
0.5000
0
0
0
0.5000
Outras operaes ainda so permitidas:
 X = [20 21 22;
 Y = [A ; X
Y=
2
1
1
1
2
1
1
1
2
20 21 22
Esta forma til para se trabalhar om sub matrizes ou matrizes em blo os. Para atribuir
um valor a uma determinada entrada de uma matriz:
 A(2,3) = 0
A=

CAPTULO 3.

2
1
1

MANIPULA O DE MATRIZES, VETORES E ESCALARES

12

1 1
2 0
1 2

3.3 Operador dois pontos ':'


til onsiderar vetores onstrudos om valores ontidos em intervalos. Duas formas podem ser usadas:
vet = valor ini ial : valor nal; ou
vet = valor ini ial : in remento : valor nal;
Exemplos:
 v = 3:7
v=
3

4 5 6

 v = 3: 1.5: 6
v=
3.0000 4.5000 6.0000

3.3.1 Outros Usos do Operador dois pontos


Pode-se sele ionar sub matrizes de uma matriz utilizando o operador dois pontos. Considerando a matriz B denida a ima, sub1 formada por todas as linhas das olunas 2 e 3 de B.
 sub1 = B(:,2:3)
sub1 =

CAPTULO 3.

MANIPULA O DE MATRIZES, VETORES E ESCALARES

13

2
3
6
7
10 11
A matriz sub2 denida pelas entradas de B das linhas 2 e 3 inter eptadas om as olunas
1 at 3.
 sub2 = B(2:3,1:3)
sub2 =
5
9

6
7
10 11

3.4 Cl ulos Fundamentais e Matrizes Espe iais


Pode-se transformar uma matriz em vetor oluna da seguinte maneira:
 a = [1 2;3 4; % matriz 2x2
 b = a(:)
b=
1
2
3
4
Para saber a dimenso de uma matriz:
 size(a)
ans =
2

 f = 1:3; % vetor dos inteiros de 1 at 3


 b = f'; % transposta de f
 a = b*f % matriz 3x3

CAPTULO 3.

MANIPULA O DE MATRIZES, VETORES E ESCALARES

14

a=
1
2
3





2 3
4 6
6 9

b = 3*a; % redene b om omponentes b(i,j) = 3 a(i,j)


= a/5; % denida por : c(i,j) = a(i,j)/5
d = a.  2; % d denida por : d(i,j) = a(i,j)2
e = 3.  a; % e denida omo: e(i,j) = 3a(i,j)

Potn ias es alares usando matrizes:


 a = [ 1 2 3 ;
 b = [ 2 2 2 ;
 a.  b
ans =
1

4 9

O omando zeros alo a uma matriz de zeros de um dado tamanho.







A = zeros(2); % alo a uma matriz 2x2 de zeros


B = zeros(3,2); % a matriz de zeros de tamanho 3x2
C = ones(2,3); % matriz de uns de dimenses 2x3
D = eye(4); % matriz identidade de ordem 4

3.4.1 Constantes Predenidas


Existem no Matlab ertos nomes de variveis que assumem valores "default ". Algumas
destas " onstantes"so:

pi : onstante de proporo entre o permetro da ir unfern ia e seu dimetro;

i,j : nmero imaginrio igual a raiz quadrada de -1;

inf : denota o innito na reta;

NaN : quando o resultado de uma operao errada no um nmero (Not a Number);

CAPTULO 3.

MANIPULA O DE MATRIZES, VETORES E ESCALARES

15

date : retorna a data atual;

lo k : retorna a hora no formato de vetor : ano, ms, dia, hora, minuto, segundo;

ans : varivel de sada "default ".

Apesar das ara tersti as espe iais destas variveis elas no so proibidas no sentido de
poderem ser denidas pelo usurio. Se isto a onte er, o valor atual destas variveis ser aquele
denido pelo usurio. Depois de apli ado o omando lear, sobre a " onstante"redenida pelo
usurio, ela assumira o seu valor "default " omo onstante predenida pelo Matlab.
Por exemplo:
 date
ans =
08-Jan-2013
 date = 10
date =
10
 lear date
 date
ans =
08-Jan-2013

Captulo 4
Funes Elementares
Nesta seo, sero apresentados omandos para efetuar hamadas das funes matemti as
elementares, omo funes analti as trigonomtri as, exponen iais, logartmi as, que podem
ser usadas tanto em es alares omo em vetores e matrizes. No Matlab trabalha-se om listas
numri as, portanto para se al ular o valor de uma funo onhe ida ou denida, em uma
varivel x, deve-se onhe er o valor x ou a lista x. Se x um nmero a funo retornar um
nmero. Se x uma lista, a funo tambm retornara uma lista de valores, os orrespondentes
valores da funo para ada valor da lista. Por exemplo:
 x = [.1 .2 .3;
 sin(x) % (funo trigonomtri a seno)
ans =
0.0998 0.1987 0.2955
Isto , [sin(.1)sin(.2)sin(.3)]. Ainda se x uma matriz qualquer o resultado de b = sin(x)
tambm uma matriz ujas omponentes so b(i,j) = sin(x(i,j)).

4.1 Funes Bsi as


Apresentam-se a seguir algumas fun oes simples que podem ser usadas tanto em es alares
omo em matrizes ou vetores.
 abs(x); % valor absoluto da variavel x
 sqrt(x); % raiz quadrada de x
16

CAPTULO 4.












FUNES ELEMENTARES

round(x); % arredonda x para o inteiro mais proximo


x(x); % arredonda x para o inteiro mais proximo de zero
oor(x); % arredonda x para o inteiro mais proximo de
eil(x); % arredonda x para o inteiro mais proximo de +
sign(x); % sinal de x, +1 ou -1
rem(x); % resto de x:y
exp(x); % exponen ial de x
log(x); % fun ao logaritmo om base e=2.7182818284590...
exp(1); % Neperiano
log10(5); % logaritmo em base 10 de 5

4.1.1 Exemplos simples


Dena as seguintes matrizes:





17

a = -2.6;
A = [1 2 3;
B = [2 2 2;
C = [2.6 1.3 -3.2 3.5;

entao os seguintes al ulos sao obtidos:


 x = round(a) % inteiro mais proximo
x=
-3
 x=x(a) % inteiro mais proximo de zero
x=
-2
 x=oor(C) % inteiro mais proximo de
x=

CAPTULO 4.

FUNES ELEMENTARES

18

1 -4 3

 x = eil(C) % inteiro mais proximo de +


x=
3

2 -3 4

 x = sign(C) % sinal
x=
1

1 -1 1

 abs(a) % valor absoluto


x=
2.6
 x = sqrt(C) % raiz quadrada
x=
1.6125 1.140 0 + 1.7889i 1.8708
No aso do numero negativo o ter eiro valor resulta num omplexo.
 x = rem(7.5,2) % resto da divisao 7.5/2
x=
1.5
 x = rem(A,B) % resto da divisao entre as omponentes
x=

CAPTULO 4.

FUNES ELEMENTARES

19

0 1

No aso do argumento de entrada ser uma lista/matriz, ada elemento da lista (ou matriz)
resposta e a solu ao dada pela fun ao que orrespondente ao elemento na mesma posi ao na
lista de entrada. Por exemplo:
 rem( [3 3 3;4 4 4;5 5 5 , [1 2 3;1 2 3;1 2 3 )
ans =
0
0
0

1 0
0 1
1 2

4.1.2 Nmeros Complexos


Como itado, o valor padro de i e j a raiz quadrada de -1. Logo, um nmero omplexo,
que se dene da seguinte maneira:
 1 = 3-2*i;
 2 = -1/2+j;
As operaes aritmti as podem ser usadas livremente.
 1+ 2;
 1* 2;
 1/ 2;
O produto 1* 2 orresponde ao produto de dois binmios om a restrio de que i*i = j*j
= -1. O nmero omplexo 1/ 2 denido tal que 2*(1/ 2) = 1. As partes real e imaginria

de 1 podem ser obtidas om:


 real( 1);
 imag( 1);

Outras funes envolvendo omplexos so exempli adas a seguir. O valor absoluto de um


omplexo a+b*i a norma de (a,b).
 abs( 1)

CAPTULO 4.

FUNES ELEMENTARES

20

ans =
3.6056
 onj(2+3*j);% o omplexo onjugado de 2+3*j, isto , 2-3*i
A forma polar de um omplexo tambm pode ser obtida.
 a = 1;
 b 2;
 x = a+b*i;
 r = abs(x);
 theta = angle(x); % retorna o ngulo polar do vetor (a,b) ou atan(b/a)
 y = r*exp(theta*i); % forma polar
 z = r*( os(theta)+i*sin(theta)); % igual a y e igual a x (formas equivalentes de um
omplexo)
Exemplo simples de l ulo om utilizao da funo tangente.
 A = [-pi/5 , 0;1+2*i , 3*pi/2+0.001;
 tan(A)
ans =
1.0e+02 *
-0.0073
0
0.0003 + 0.0101*i -10.0000
O primeiro valor (1.0e+02) indi a que dever multipli ar-se o nmero 100 a matriz 2x2 que
vem em seguida. Para aumentar a pre iso na resposta numri a aplique-se o omando:
 format long; % pre iso da ordem 10-15
 1/pi
ans =
0.31830988618379

Por padro a pre iso mostrada de 5 dgitos que re uperada om o omando:


 format short; % ou simplesmente format designa a pre iso default
 ans % varivel de sada padro que guarda o ltimo resultado

CAPTULO 4.

FUNES ELEMENTARES

21

ans =
0.3183

4.1.3 Comandos de Converso


Existe um nmero grande de funes que permite a onverso entre diferentes tipos de dados. Algumas destas funes so exempli adas a seguir.
 letra = num2str(2); % permite manipular um nmero omo um ara tere
Isto uma abreviao das palavras "numeri to string". De tal forma que a varivel letra
no mais um nmero e sim um ara tere ao passo que o resultado da operao:
 letra+1
ans =
51
no 3 que seria a soma 2+1.
 str2num(letra)+1 % onverte o ontedo da varivel letra, isto , o ara tere 2 para o
nmero 2 e soma-lhe 1
ans =
3
 de 2hex(11); % onverte o de imal 11 para o sistema hexade imal (B)
 hex2de ('F'); % onverte o valor hexade imal para o de imal (15)

4.2 Funes Trigonomtri as


Os nmeros ontidos na varivel argumento destas funes podem assumir qualquer valor
real ou omplexo, onsiderado este em radianos.
 sin(x); % funo trigonomtri a seno de um ngulo

CAPTULO 4.







FUNES ELEMENTARES

22

os(x); % funo oseno


tan(x); % tangente de x
asin(x); % ar oseno ou funo inversa do seno do argumento x
a os(x); % ar o oseno ou inversa do oseno de x
atan(x); % inversa da tangente de x

As funes s (x), se (x), ot(x), a s (x), ase (x), a ot(x) denem as funes osse ante,
se ante e otangente de x e suas inversas respe tivamente.

4.3 Funes Hiperbli as : Nomen latura


De forma semelhante s funes trigonomtri as, denem-se os omandos para al ular funes hiperbli as.







sinh(x); % seno hiperbli o de x


osh(x); % oseno hiperbli o de x
tanh(x); % tangente hiperbli a de x
asinh(x); % inversa do seno hiperbli o de x
a osh(x); % inversa do oseno hiperbli o de x
atanh(x); % inversa da tangente hiperbli a de x

Com denies equivalentes respe tivamente para s h(x), se h(x), oth(x), a s h(x), ase h(x)
e a oth(x).

Captulo 5
Controle de Fluxo
As funes exe utveis es ritas na linguagem utilizada pelo Matlab esto implementadas
em arquivos om extenso ".m". Suponha que o arquivo "exemplo.m" ontenha uma srie de
linhas de omandos ou funes do Matlab, ento quando este arquivo hamado sem extenso
do prompt do Matlab:
 exemplo + <ENTER>
o Matlab entender que este arquivo exe utvel e assim ada linha ser interpretada na
sequn ia de a ordo om a sua funo.
Da mesma forma, um mtodo ou sub-rotina pode ser denido dentro de um arquivo om
extenso ".m" ontendo argumentos de entrada e de sada. Por exemplo, ria-se o arquivo " ir um.m" ontendo as seguintes linhas:
% Esta funo al ula o permetro de uma ir unfern ia de
% raio R. Si R uma matriz, ir um(R) retornar uma matriz
% ontendo os permetros das ir unfern ias de raios iguais
% aos respe tivos valores da matriz R
f unctionC = circum(R)
C = 2 pi R;

As linhas a ima orrespondem ao arquivo " ir um.m". Para utilizar est funo basta digitar:
 ir um(2)
ans =
23

CAPTULO 5.

CONTROLE DE FLUXO

24

12.5664
Em aso de ser R um vetor:
 R = [1 2 3;
 ir um(R)
ans =
6.2832 12.5664 18.8496
As primeiras linhas ini iadas om o smbolo % onstituem uma valiosa fonte de informaes
a respeito da fun ionalidade do arquivo. Para ter a esso a elas no ne essrio abrir o arquivo
om um editor, basta digitar:
 help ir um
ento as primeiras linhas juntas de omentrios sero mostradas. Usando lookfor omo
exemplo, obtm-se a sada:
 lookfor permetro
ir um - Esta funo al ula o permetro de uma ir unfern ia de
Este omando mostra s a primeira linha do arquivo, aso esta ontenha a palavra permetro,
alem do nome do arquivo. Por isto importante do umentar de forma pre isa esta primeira
linha, aso o nmero de funes venha a aumentar onsideravelmente. No ne essrio que o
nome do arquivo seja igual ao nome da "fun tion"dentro do mesmo.
Quando a funo tem mais de um argumento de sada, digamos rea, volume, ento estes devem vir entre ol hetes, por exemplo, a seguinte funo denida no arquivo " ilindro.m" al ula
a rea e o volume de um ilindro.
% Cal ula-se a rea e volume de um ilindro
% de altura h e raio r
f unction[area, volume] = cilindro(h, r)
area = 2 pi r h + 2 pi r  2;

CAPTULO 5.

CONTROLE DE FLUXO

25

volume = pi r  2 h;

Para hamar esta funo seja do "prompt"ou de outro exe utvel ".m", basta digitar uma
hamada na forma exempli ada a seguir:
[a, v] = cilindro(0.5, 1)

ento, as variveis a e v ontero as informaes da rea e do volume do ilindro de h = 0.5


e r = 1.

5.1 Regras para es rever uma fun tion


onveniente observar as seguintes ara tersti as na denio de uma funo: Es rever
omentrios a respeito da funo, tendo espe ial nfase na primeira linha de omentrio.
A primeira linha exe utvel deve onter a palavra "fun tion"seguida dos argumentos de
sada entre ol hetes, se forem mais de um, o sinal "="e o nome da funo om argumentos de
entrada entre parnteses.
Todos os argumentos de retorno devem estar denidos dentro do orpo da funo.
Qualquer erro ometido dentro do arquivo ".m"ser a usado quando este for exe utado,
retornando o formato de um erro de ompilao.

5.2 Operadores Rela ionais


Estes operadores so similares aqueles usados em uma linguagem de programao tal omo
C ou Fortran.
Operador
<
<=
>
>=
==
=
Exemplos:

Des rio
menor que
menor ou igual
maior que
maior ou igual
igual no sentido de ondio/ omparao
no igual, distinto

CAPTULO 5.

CONTROLE DE FLUXO

26

 1<2
ans =
1
Esta resposta indi a que a ondio 1<2 verdadeira. Se o retorno zero, isto indi a que
a ondio falsa.  1>2
ans =
0
No aso do uso de arranjos:  a = [1 2;3 4;
 b = [0 2;4 -5;
a =b
ans =
1
1

0
1

Isto quer dizer que: 1 distinto de 0 verdadeiro, 2 distinto de 2 falso, 3 distinto de 4


verdadeiro e 4 distinto de -5 verdadeiro. Ao se omparar ara teres tambm o orre algo
semelhante, por exemplo:
 texto1 = 'teste';
 texto2 = 'texte';
texto1 == texto2
ans =
1

1 0 1

Esta forma efetua uma omparao ara tere por ara tere, posio a posio. Se as letras
so iguais retorna 1, se no retorna 0. Um omando mais direto para saber se dois textos so
iguais na sua totalidade :
 str mp(texto1,'teste')

CAPTULO 5.

CONTROLE DE FLUXO

27

ans =
1
Isto , o ontedo da varivel texto1 exatamente o onjunto dos ara teres da palavra
teste.

5.3 Operadores Lgi os


So amplamente utilizados em expresses ondi ionais do tipo "if-else", as quais sero abordadas detalhadamente na prxima seo.
Operador
&
|

Des rio
e
ou
no

Por exemplo:
 a = 2; b = 0; = 1; % possvel denir variveis em uma mesma linha
 a < b & b < % equivale a questionar: a < b < c?
ans =
0
A resposta que a armao falsa. Para isso basta que seja a b ou que b c.
Outro exemplo:
 (b == c | c < a) % pergunta: falso que b igual a ou menor que a?
ans =
0

CAPTULO 5.

CONTROLE DE FLUXO

28

5.4 Estruturas de Controle


O Matlab, omo toda linguagem de programao, possui estruturas que permitem o ontrole
do uxo de exe uo de omandos baseadas em tomadas de de iso.

5.4.1 Estruturas Condi ionais


So estruturas que, em uma sequn ia de omandos, so exe utadas dependendo do resultado de uma ondio.

If-else-end

Existem trs variantes no Matlab de estruturas if-else-end:

PSfrag repla ements


Frequen y (rad/s)
Singular Values

Figura 5.1: Estruturas Condi ionais: If-else-end

Exer io Resolvido:
Um problema muito omum es olher o material adequado para er ar um terreno. Se o
preo total da er a for menor que R$ 100,00, onstrumos om um material, e se for maior,
onstrumos om outro. Como fazer um programa que fale qual material usar se tivermos o
valor do metro de er a e o permetro do terreno em metros?

Soluo:

CAPTULO 5.

CONTROLE DE FLUXO

29

f u n t i o n M = d e i d e m a t e r i a l ( pre oMetro , p e r i m e t r o )
i f ( ( pre oMetro p e r i m e t r o ) < 100)
M = 1;
else
M = 2;
end
A estrutura de ondio if-else-end fun iona omo uma bifur ao do uxo de exe uo do
programa, abrindo duas possibilidades de aminhos( omandos), omo pode ser visualizado a
seguir:

Figura 5.2: Controle de Fluxo: If-else-end

Swit h- ase-otherwise-end

O swit h ase um blo o de ontrole que fun iona omo um agrupamento de vrios ifs e
elses, que tenham relao entre si.

CAPTULO 5.

CONTROLE DE FLUXO

30

Figura 5.3: Estruturas Condi ionais: Swit h- ase-otherwise-end


Temos o exemplo de instrues que asso iem nmeros aos dias da semana, no qual teramos
muito trabalho fazendo um if para ada aso. Para fa ilitar esse aso usamos o swit h- ase:
mynumber = i n p u t ( ' Enter a number : ' ) ;
s w i t h mynumber
ase 1
d i a = ' Domingo '
ase 2
d i a = ' Segunda f e i r a '
ase 3
d i a = ' Ter a f e i r a '
ase 4
d i a = ' Quarta f e i r a '
ase 5
d i a = ' Quinta f e i r a '
ase 6
d i a = ' Sexta f e i r a '
ase 7
d i a= ' Sabado '
otherwise
d i a= ' nenhum '
end

CAPTULO 5.

CONTROLE DE FLUXO

31

5.4.2 Estruturas de Repetio


As estruturas de repetio so a razo para hoje os omputadores serem to teis omo
so. a partir de repeties de operaes que se al ula numeri amente os valores de ln(2) ou
ar sin(0.43) por exemplo, e partir de repeties tambm que se integra, deriva, en ontra a
raiz de equaes trans endentais, e se a ha os termos de uma srie ou sequn ia. As estruturas
de repetio so prati amente maneiras de "mandar o omputador fazer algo que vo queira".
Por isso so to importantes de serem estudadas. Por exemplo se omputadores tivessem me anismos de ortar batatas, e quisssemos mand-lo ortar batas usaramos os omandos a seguir
em sintaxe omputa ional.

Enquanto tiver batatas om as a na esta

Des asque uma batata

Fim

Esse exemplo seria para o aso de quisermos ortar todas as batatas, sem nos preo uparmos
om a quantidade de batata a ser ortada. Porm e se fosse de nosso interesse des as ar 100
batatas? Pediramos assim:

Para 100 batatas da esta

Des asque uma batata

Fim

Como abstrao, enxergamos que em uma estrutura de repetio pre isamos avisar para
o omputador quando parar, seja quando atingir uma ondio preestabele ida ou quando
atingir uma quantidade predeterminada. Para o primeiro aso temos a estrutura while, e para
o segundo temos a estrutura for.

While

A estrutura de repetio while usada quando no se sabe ao erto o nmero de repeties,


omo mostrado no exemplo a seguir:
% aproximao inteira de log de n na base dois

n = 1024;
log = 0;
while (n > 1)
n = n/2;

CAPTULO 5.

CONTROLE DE FLUXO

32

l o g = l o g +1;

end
log =
10

For

Diferente do while, a estrutura de repetio for usada quando se sabe ao erto o nmero
de repeties, omo mostrado no exemplo a seguir:
% pren her a matriz A NxN

N = 5;
f o r l i n h a = 1 :N
f o r o l u n a = 1 :N
A( l i n h a , o l u n a ) = l i n h a+ o l u n a ;
end
end
A =
0
1
2
3
4

1
2
3
4
5

2
3
4
5
6

3
4
5
6
7

4
5
6
7
8

Captulo 6
Operaes Sobre Matrizes
O Matlab onta om algumas operaes espe iais sobre matrizes que se tornam ne essrias
quando se trabalha matemati amente om elas.












A = rand(5); % gera uma matriz 5x5 randmi a


A'; % transposta de A
det(A); % determinante de uma matriz
inv(A); % inversa de A, quando esta existe
diag(A);% gera um vetor oluna om a diagonal de A
C = [1 0 2 1 1;
diag(C); % gera uma matriz 5x5 uja diagonal C
v1 = [1 2 3 4 5;
v2 = [6 7 8 9 0;
sum(v1.*v2); % produto es alar de dois vetores
B = randn(3,5); % matriz aleatoria 3x5

6.1 Outras Funes teis


Existem outras operaes espe iais sobre matrizes. Algumas delas so dadas a seguir. Considerando as denies dadas anteriormente para as matrizes A, B e C.






rot90(A); % rotao de 90 graus da matriz A


iplr(A); % permuta as olunas primeira e ltima de A
ipud(B); % permuta as linhas primeira e ltima de B
D = reshape(C,5,1); % rees reve C om diferentes dimenses
E = reshape(B,5,3); % rees reve B om diferentes dimenses
33

CAPTULO 6.

OPERAES SOBRE MATRIZES

34

 F = triu(A); % rees reve A preen hendo om zeros a parte triangular superior


 G = tril(A); % G a parte triangular inferior de A

Captulo 7
Medidas Estatsti as
No prximo exemplo onstri-se uma matriz aleatoriamente onde as olunas orrespondem
as notas de uma turma de 13 alunos, ada oluna representa uma matria. As linhas representam as notas de ada aluno.
% ex7
% Este exemplo al ula medidas estatsti as relativas as notas
% de 6 matrias de uma turma de 13 alunos

f o r i =1:13 ,
f o r j =1:6 ,
TURMA( i , j )=100 rand ;
end
end
media_turma = mean (TURMA) ; % media por m a t r i a ( turma toda )
media_portugues = mean (TURMA( : , 3 ) ) ; % mdia das n o t a s da o l u n a
[ nota_minima , numero_alunos = min (TURMA) ; % nota mnima de ada m a t r i a
mat = TURMA( : , 1 ) ; % p r i m e i r a o l u n a da m a t r i z TURMA
[ ordem_as endente , num = s o r t ( mat ) ; % ordem a s e n d e n t e do v e t o r mat
% num o nmero do a lu n o na l i s t a
[ nota_maxima , numero_alunos = max(TURMA) ; % nota mxima de ada m a t r i a e
% o nmero do al u n o ( o p r i m e i r o que a h a r )
35

CAPTULO 7.

MEDIDAS ESTATSTICAS

36

s t d ( mat ) ; % d e s v i o padro da p r i m e i r a m a t r i a
h i s t ( nota_minima ) ; % hi s to g ra ma (1 0 b a r r a s por d e f a u l t ) f i g u r a .
[ n ,m =h i s t ( nota_minima ) ; % n=a l t u r a , m = e n t r o da b a r r a
h i s t ( nota_minima , 3 ) ; % hi s t ogr ama om 3 b a r r a s
[ n ,m = h i s t ( nota_minima , 3 ) ;

PSfrag repla ements


Frequen y (rad/s)
Singular Values

Figura 7.1: Gr o de barras: Histograma

Captulo 8
Gr os
Para obter gr os em 2D usa-se o omando plot. Este omando permite uma variedade
de argumentos de entrada. Estes argumentos permitem adi ionar uma srie de opes sada
gr a omo ttulo para os eixos, ttulo para o gr o, opes para o tipo de letra, tamanho,
ores. possvel a superposio de gr os ou obter vrios gr os em uma mesma janela. A
seguir sero exempli ados estas opes, om vrios gr os.

8.1 Exemplo 1 - Comando hold on


% ex8.1
x = 0:0.02*pi:2*pi;
y = sin(x);
z = os(x);
plot(x,y); % gr o do seno de x
hold on; % permite a sada do prximo gr o na mesma janela que o anterior
plot(x,z); % gr o do oseno de x
plot(x,y,x,z); % gra a simultaneamente seno e oseno na mesma janela

8.2 Exemplo 2 - Gr os superpostos om opes distintas


de pontos e traado
% ex8.2
x = (0:0.21:2*pi); % 30 divises do intervalo [0,2*pi
y = sin(x);
plot(x,y,'-'); % o trao da gr a sin(x) pontilhado

37

CAPTULO 8.

GRFICOS

38

z = os(x);
plot(x,y,'b:p',x,z,' -',x,z,'m+');

Figura 8.1: Comando hold on :


Permite plotar vrias guras numa
mesma janela

Figura 8.2: Gr os superpostos om


opes distintas de pontos e traado

8.3 Exemplo 3 - Opes de representao gr a simultneas


% ex8.3
x = (0:0.21:2*pi); % 30 divises do intervalo [0,2*pi
y = sin(x);
z = os(x);
t = tan(x); % tangente de x
t = ot(x); % otangente de x
set(g f,'Color',[1 1 1); % fundo bran o
plot(x,y,'r*',x,z,'mx',x,t,'bo-',x, t,'kp-');
axis([0 6 -3.5 3.5); % estabele e os limites para os eixos atuais
grid; % ria uma grade superposta ao gr o atual

t i t l e ( ' Funes T r i g o n o m t r i a s ' , ' F on tS iz e ' , 1 4 , ' Fontweight ' , ' Bold ' ) ;
l e g e n d ( ' s i n (\ t h e t a ) ' , ' o s (\ t h e t a ) ' , ' tan (\ t h e t a ) ' , ' o t (\ t h e t a ) ' ) ;

CAPTULO 8.

GRFICOS

39

PSfrag repla ements


Frequen y (rad/s)
Singular Values

Figura 8.3: Opes de representao gr a simultneas

8.4 Exemplo 4 - Comando subplot


% ex8.4
x = (0:0.21:2*pi);
y = sin(x);
z = os(x);
a = 2*sin(x).*( os(x));
b = sin(x)./( os(x)+eps);
subplot(2,2,1); % reserva uma janela para 4 gr os
plot(x,y); % sin(x) ser visualizada na parte superior esquerda da janela
axis([0 2*pi -1 1); % intervalos para ambos os eixos x e y, respe tivamente
title('sin(x)'); % o titulo para o ltimo gr o: y = sin(x)
subplot(2,2,2); % o prximo gr o sair na posio a ima a direita
plot(x,z);
axis([0 2*pi -1 1); % intervalos para x e y no segundo gr o
title(' os(x)');
subplot(2,2,3); % posio do prximo gr o, abaixo a esquerda
plot(x,a);
axis([0 2*pi -1 1); % intervalo para os eixos do ltimo gr o
title('2 sin(x) os(x)'); % ttulo para o ltimo gr o
subplot(2,2,4); % posio do prximo gr o
plot(x,b); % gr o atual
axis([0 2*pi -20 20); % eixos para o atual gr o

CAPTULO 8.

40

GRFICOS

title('sin(x)/ os(x)'); % titulo para o gr o atual

PSfrag repla ements


Frequen y (rad/s)
Singular Values

Figura 8.4: Comando subplot

8.5 Exemplo 5 - Comando pie


Gr os em formato de torta ou pizza so riados usando este omando pie.
% ex8.5
a = [0.5 1 1.5 2.0 1 0.3;
pie(a,a == max(a));
title('Produo de gros');
legend('Arroz','Feijo','Soja','Trigo','Milho','Cevada');

8.6 Exemplo 6 - Comando pie3


A verso tridimensional do gr o de torta, gerado anteriormente, pode ser obtido usando
o omando pie3.
% ex8.6
a = [0.5 1 1.5 2.0 1 0.3;
destaque = [0 1 0 1 0 1; % pedaos em destaque
pie3(a,destaque);% formato pizza tridimensional
olormap hsv; % opo de tonalidade de or

CAPTULO 8.

41

GRFICOS

Figura 8.5: Comando pie

Figura 8.6: Comando pie3

8.7 Exemplo 7 - Comando bar


% ex8.7
a = [0.5 1 1.5 0.3 1 2;
b = [1960 1970 1980 1990 2000 2010;
bar(b,a); %barra verti al, barh(barra horizontal)
xlabel('Anos de produo');
ylabel('Produo de gros (em milhes de toneladas)');
axis xy; % ordena os valores do eixo Y em forma as endente

PSfrag repla ements


Frequen y (rad/s)
Singular Values

Figura 8.7: Comando bar

CAPTULO 8.

42

GRFICOS

8.8 Exemplo 8 - Comando plot3


Para traar gr os urvilneos 3D utiliza-se o omando ou funo plot3. No exemplo a
seguir, a varivel t aumenta om o par (cos(t), sin(t)) que est dentro de uma ir unfern ia
de raio 1. Ao mesmo tempo o par (cos(t), sin(t)) est girando em sentido antihorrio no plano
X-Y e a ter eira omponente de t est aumentando e se afastando deste plano, logo o gr o
orresponde a uma linha que vai girando e se afastando do plano X-Y, uma hli e, ujo ponto
de partida o ponto (0, 1, 0) = (cos(0), sin(0), 0).
% ex8.8
t = (0:0.1571:10*pi); % [0,10pi dividido em 200 partes
plot3(sin(t), os(t),t);
title('H l i e : urva paramtri a');
xlabel('X = Sin(t)');
ylabel('Y = os(t)');
zlabel('Z = t');

PSfrag repla ements


Frequen y (rad/s)
Singular Values

Figura 8.8: Comando plot3

8.9 Exemplo 9 - Gr o de Superf ie


A seguir apresentado um exemplo om expli aes de ada omando gr o a m de se
obter um gr o de superf ie.
% ex8.9
x = -7.5:0.5:7.5; % vetor ou lista x

CAPTULO 8.

43

GRFICOS

y = -7.5:0.5:7.5; % vetor ou lista y


[X,Y = meshgrid(x,y); % matrizes oordenadas (x,y)
R = sqrt(X. 2+Y. 2)+eps; % soma-se eps para evitar diviso por zero
Z = sin(R)./R+1;
mesh(X,Y,Z); % gr o de rede
hold on; % segura as sadas gr as posteriores na janela atual
p olor(X,Y,Z); % provo a a apario de uma malha olorida no domnio
shading interp; % a or denida de a ordo om a altura
ontour(X,Y,Z,20,'k'); % 20 urvas de nvel em preto, es olha automti a
olorbar; % apresenta uma es ala olorida de valores
hold o; % ada omando gr o ser apresentado em uma janela distinta

PSfrag repla ements


Frequen y (rad/s)
Singular Values

Figura 8.9: Gr o de Superf ie


Cada linha da matriz X orresponde lista x e ada oluna da matriz Y orresponde lista
y. Assim a matriz R o quadrado de ada elemento de X mais o quadrado de ada elemento de
Y, omponente a omponente respe tivamente. Semelhantemente segue a denio da matriz
Z. O omando mesh gra a os pontos denidos pelas ternas, omponentes respe tivas de X, Y
e Z e em seguida os liga om linhas retas formando uma rede.

8.10 Exemplo 10 - Animao Gr a


8.10.1 Animao bidimensional
Este exemplo mostra omo se onstri uma sequn ia de gr os. Estes gr os so armazenados em uma matriz M, em seguida o omando movie permite mostrar a seqn ia armazenada

CAPTULO 8.

GRFICOS

44

em M a uma erta taxa de repetio.


% ex8.10.1

x = p i / 2 : . 1 : p i / 2 ;
f o r =1:20 ,
y = s i n (2 x+ p i / 1 0 ) ;
p l o t ( x , y , ' LineWidth ' , 1 8 ) ;
a x i s ([ p i /2 p i /2 1 1 ) ;
M( ) = g e t f r a m e ;
end ;
movie (M, 2 0 , 1 0 ) ;
A ltima linha de omando signi a que os gr os armazenados em M so mostrados 10
vezes a uma taxa de repetio de 20 guras por segundo.

8.10.2 Animao tridimensional


Analogamente animao bidimensional, temos:
% ex8.10.2

x = p i / 2 : . 1 : p i / 2 ;
y = p i / 2 : . 1 : p i / 2 ;
[ X,Y = meshgrid ( x , y ) ;
f o r =1:20 ,
Z = s i n (2 X+ p i /10)+1.5 o s (2 Y+ p i / 1 0 ) ;
s u r f (X, Y, Z ) ;
M( ) = g e t f r a m e ;
end ;
movie (M, 2 0 ) ;

Captulo 9
Soluo de Sistemas de Equaes Lineares
Um sistema de equa oes lineares se es reve da forma Ax = b onde A e uma matriz onhe ida
de dimensoes nxm, geralmente quadrada (m=n), x e o vetor oluna de in ognitas e b e um
vetor oluna de valores numeri os. Caso A (quadrada) seja nao singular, isto e, existe uma
matriz denotada A1 tal que A A1 = A1 A = I , onde I e a matriz identidade. Entao
pela teoria o sistema apresenta uma uni a solu ao x. A matriz identidade e ara terizada por
Iii = 1eIij = 0, se i 6= j , isto , os valores da diagonal sao todos 1 e fora da diagonal os valores
sao zero.
Uma boa medida da "qualidade"de uma matriz dado pelo nmero de ondio. O omando
ond(A) retorna este nmero, se o nmero retornado grande, indi ar que a matriz A
aproximadamente singular, o que ruim do ponto de vista numri o. A pre iso da soluo
numri a utilizando A ser afetada.
Caso m < n, o sistema tem mais in gnitas que equaes e existem innitas solues.
Neste aso, pro ura-se, s vezes, uma soluo que satisfaa a ondio de minimizao da soma
das distn ias aos hiperplanos denidos pelas equaes (mnimos quadrados). Caso m > n, o
sistema tem mais equaes que in gnitas, ento o sistema sobre determinado e a soluo
geralmente no existe. O problema de mnimos quadrados no tem soluo ni a (norma
Eu lidiana):
minimize Norm(A x = b)
Se a soluo existe, esta se a ha diretamente da seguinte maneira:
A x = b = x = A1 b

A inverso da matriz A do sistema nem sempre uma operao barata. Para matrizes
grandes ou heias, prefere-se a utilizao de mtodos alternativos, omo os mtodos de de omposio de matrizes tais omo LU, QR, Cholesky ou mtodos iterativos omo minres, gmres
45

CAPTULO 9.

SOLU O DE SISTEMAS DE EQUAES LINEARES

46

e outros (implementados no Matlab). Outro uidado que deve ser tomado que os mtodos
de de omposio no se apli am a qualquer tipo de matriz. Por exemplo, para o mtodo de
Cholesky, a matriz do sistema deve ser denida positiva. Uma operao simples omo:
 A = [3 1 2;0 4 0;-1 -2 -3; % matriz no denida positiva
 R = hol(A); % mtodo de de omposio de Cholesky
Retornar a seguinte mensagem de erro:
??? Error using ==> hol
Matrix must be positive denite.
Para resolver o sistema utilizando mtodos de de omposio, deve-se ontar om o algoritmo
que al ula a soluo baseado nas matrizes de ompostas. J o mtodo iterativo, onsiste no
l ulo ou atualizao, a ada passo, de matrizes e vetores envolvidos no algoritmo que aproxima
a soluo. Geralmente utilizam-se produtos vetor-vetor, matriz-vetor e al ula-se uma norma
no erro da aproximao, tentando atingir uma tolern ia preestabele ida.

9.1 Mtodos Diretos


A forma mais simples para resolver um sistema, porm a mais ara, onsiste em al ular a
inversa da matriz do sistema. Outros mtodos diretos usam de omposio de matrizes. Algumas destas formas so exempli adas a seguir.






A = [1 2 1;2 1 2;1 2 2;
b = [1;0;-1; %vetor oluna
B = inv(A); % inverte uma ni a vez
C = A -1; % forma alternativa para inverter A
x = C*b; % aso b mude C ontinua o mesmo

9.1.1 Eliminao de Gauss


Utiliza-se a barra invertida para resolver o sistema om uso de eliminao Gaussiana.
 x = A\b; % eliminao de Gauss

9.1.2 De omposio LU

CAPTULO 9.

SOLU O DE SISTEMAS DE EQUAES LINEARES

47

>> A = [ 1 2 2 ; 2 1 2 ; 2 2 1 ;
>> [ L , U, P = l u (A) ;
Esta simples funo retornar 3 matrizes 3x3. Uma matriz triangular inferior L, uma
triangular superior U e uma matriz de permutao P, de forma que L*U = P*A. Para resolver
o sistema, foi utilizado o seguinte mtodo:
f u n t i o n x = solve_LU (L , U, P , b )
= P b;% permutao l a d o b : PA x = L U x = P b
% substituio triangular inferior : L y =
y = zeros (n , 1 ) ;
y (1) = ( 1 , 1 ) /L ( 1 , 1 ) ;
f o r i =1:n ,
soma = 0 . 0 ;
f o r j =1:( i 1) ,
soma = soma+L( i , j ) y ( j ) ;
y ( i ) = ( i ) soma ;
end
end
% substituio triangular inferior U x = y
x = zeros (n , 1 ) ;
x ( n , 1 ) = y ( n , 1 ) /U( n , n ) ;
f o r i=n : 1 : 1 ,
soma = 0 . 0 ;
f o r j =( i +1): n ,
soma = soma+U( i , j ) x ( j ) ;
x ( i ) = ( y ( i ) soma )/U( i , i ) ;
end
end
end

9.2 Mtodos Iterativos


Estes mtodos utilizam vrios argumentos de entrada omo a matriz A, lado b, tolern ia
(o "default" 1 1006 ), nmero mximo de iteraes, o tamanho da matriz, o hute ini ial
(o "default" zero), et . Os valores de retorno podem ser a soluo x, o nmero efetivo de
iteraes para atingir a pre iso, um nmero de diagnsti o (ag), o resduo relativo et .

CAPTULO 9.

SOLU O DE SISTEMAS DE EQUAES LINEARES

48

9.2.1 Mtodo PCG


O seguinte exemplo usa o mtodo PCG ou gradiente onjugado pr- ondi ionado que se
apli a a uma matriz simtri a e denida positiva.
size = 10;
A = rand ( s i z e ) ; % m a t r i z a l e a t r i a om v a l o r e s e n t r e 0 e 1
t o l = 1 . e 03;
f o r i =1: s i z e ,
b ( i , 1 ) = 1 ; % omo exemplo b=1
f o r j=i : s i z e ,
A( j , i ) = A( i , j ) ; % m a t r i z s i m t r i a
i f j == i
A( i , i ) = 100 A( i , i ) ; % d ia gon al m en te dominante o que
end % g a r a n t e que A s e j a d e f i n i d a p o s i t i v a
end
end
[ x , f l a g , r e s , i t e r = p g (A, b , t o l , s i z e ) ;
O primeiro teste onvergiu em 10 iteraes om um resduo de 2.7609e-015. O nmero ag
= 0 indi a que o mtodo onvergiu om a desejada tolern ia num nmero de iteraes menor
ou igual ao "default".

9.2.2 Mtodo Minres


O prximo exemplo utiliza o mtodo minres que pro ura uma soluo que minimiza o
resduo. Neste aso a matriz no pre isa ser denida positiva, basta ser simtri a.
size = 10;
A=rand ( s i z e ) ;
t o l = 1 . e 04;
f o r i =1: s i z e ,
b( i ,1) = 1;
f o r j=i : s i z e ,
A( j , i ) = A( i , j ) ; % m a t r i z s i m t r i a para o mtodo mi n r e s
end
end
x=z e r o s ( s i z e , 1 ) ;
[ x , f l a g , r e s , i t e r = m i nr es (A, b , t o l , s i z e )

CAPTULO 9.

SOLU O DE SISTEMAS DE EQUAES LINEARES

49

O primeiro teste retornou os seguintes resultados. A varivel ag = 0 indi a que o mtodo
onvergiu dentro do nmero de iteraes desejado atingindo a tolern ia desejada, no aso, em
10 iteraes.A norma do resduo relativo foi:
kb A xk
= 3.5881e 009
kbk

9.2.3 Comando spy


O omando spy til para veri ar visualmente o grau de esparsidade de uma matriz. O
seguinte algoritmo gera uma matriz ligeiramente esparsa e simtri a que ento visualizada
om o omando spy.
s i z e = 20;% tamanho da m a t r i z
s = rand ( s i z e );% m a t r i z a l e a t r i a 20 x20 ( v a l o r e s e n t r e 0 e 1)
f o r i =1: s i z e ,
f o r j =1: s i z e ,
i f j >i
s ( i , j ) = s ( j , i );% p r ovo a s i m e t r i a em s
end
i f s ( i , j ) < 0 . 6 & abs ( i j ) > 4
s ( i , j ) = 0. 0; % i n t r o d u o de e s p a r s i d a d e em s
end
end
end
spy ( s , ' r ' ) ; % mostra a m a t r i z em f orm ato g r f i o

A ltima linha preen he os valores no nulos om asteris o e em or vermelha. O gr o


mostra tambm o nmero de zeros nz da matriz
A.

Figura 9.1: Gr o mostrando os valores no


nulos de uma matriz

Captulo 10
Ajuste de Curvas e Interpolao
Este tipo de ferramentas til quando se dispe de um onjunto des ontnuo de dados
(valores numri os pontuais), e se pro ura traar uma urva ou superf ie (funo ontnua)
que ontenha estes pontos.
Existem diferentes urvas que podem ser utilizadas para interpolar estes pontos. Podem ser
usados distintos graus para o polinmio que interpola, ou ainda podem ser usados polinmios
por partes. Quando se usam polinmios por partes pode a onte er que a urva que interpola
os pontos tenha derivada ontnua ou no, naqueles pontos onhe idos. Naturalmente surge
a questo de que modelo mais apropriado para interpolar os dados. O analista numri o
deve saber de idir sobre esta questo, j que o uso de um modelo ou de outro a arretar uma
resposta diferente. Nem sempre de um polinmio de grau maior ser obtida uma resposta mais
pre isa.
Caso o analista onhea a priori o omportamento do seu modelo ele poder usar esta
informao para a es olha do grau de interpolao. Caso ontrrio ele dever pro urar obter
maior quantidade de medies experimentais para obter um omportamento mais apurado na
zona de interesse no domnio do problema.

10.1 Interpolao Linear por Partes


O primeiro exemplo interliga pontos dis retos no plano por meio de linhas retas, obtendo-se
uma urva linear ou de grau um por partes:
% ex 10.1
dados1=[ 0 0;1 20;2 60;3 68;4 77;5 110; % Conjunto de pontos a ser interpolado
disp('Cl ulo que interpola este onjunto de pontos em x=2.6 e x=4.9, respe tivamente');
y1 = interp1(dados1(:,1), dados1(:,2), 2.6) % valor interpolado no ponto 2.6
y2 = interp1(dados1(:,1), dados1(:,2), 4.9) % valor interpolado no ponto 4.9

50

CAPTULO 10.

51

AJUSTE DE CURVAS E INTERPOLA O

xi=0:.01:5; % lista no intervalo [0,5


yi = interp1(dados1(:,1), dados1(:,2),xi); % lista yi, interpola a lista xi
plot(dados1(:,1), dados1(:,2),'o',xi,yi); % gr o da urva interpolada
A resposta para os dois valores pontuais : y1 = 64.8000, y2 = 106.7000. Os valores
onhe idos para x esto no intervalo [0,5, e os de y em [0,110, a gura mostra a urva de
interpolao.

PSfrag repla ements


Frequen y (rad/s)
Singular Values

Figura 10.1: Interpolao linear por partes

10.2 Interpolao Super ial


O prximo exemplo orresponde a uma interpolao super ial:
% ex 10.2
velo idade = [2000,3000,4000,5000,6000;
tempo = [0 1 2 3 4 5;
temperatura = [ 0, 0, 0, 0, 0; 20, 110, 176, 190, 240; 60, 180, 220, 285, 327; 68, 240, 349,
380, 428; 77, 310, 450, 510, 620; 110, 405, 503, 623, 785;
temp = interp2(velo idade, tempo,temperatura,3800,3.1)
% os prximos passos permitem gra ar a urva de interpolao vel = 2000:100:6000; % 40
pontos
t = 0:0.125:5; % 40 pontos
[X,Y = meshgrid(vel,t);
Z = interp2(velo idade,tempo,temperatura,X,Y);

CAPTULO 10.

52

AJUSTE DE CURVAS E INTERPOLA O

mesh(X,Y,Z);
xlabel('E I X O X');
ylabel('E I X O Y');
zlabel('E I X O Z');

PSfrag repla ements


Frequen y (rad/s)
Singular Values

Figura 10.2: Superf ie interpolante da matriz temperatura

10.3 Comando spline


Este tipo de interpolao utiliza polinmios bi os para, no aso plano, unir ada dois
pontos om um polinmio, e ada 4 pontos no espao om uma superf ie polinomial. Ainda a
primeira e segunda derivada nestes pontos so ontnuas:
% ex 10.3
x = [0 1 2 3 4 5;
y = [0 20 60 68 77 110;
temp1 = spline(x,y,2.6);
temp2 = spline(x,y,[2.6 4.9);
z = [.5 1.5 2.5 3.5 4.5;
temps = spline(x,y,z);
temp1 % resultado
temp2 % resultado
temps % vetor interpolante da lista z
xi = 0:0.2:5; %25 pontos
yi = spline(x,y,xi); % interpolao da lista xi

CAPTULO 10.

53

AJUSTE DE CURVAS E INTERPOLA O

plot(x,y,'o-',xi,yi); % urva interpolante


xlabel('Tempo[s');
ylabel('Graus Farenheit');

PSfrag repla ements


Frequen y (rad/s)
Singular Values

Figura 10.3: Interpolao utilizando spline

10.4 Comando polyfit


Este omando a ha os oe ientes de um ni o polinmio que interpola os dados no sentido
dos mnimos quadrados, isto , no ne essariamente o polinmio passa pelos pontos, mas a
soma das distn ias dos pontos ao polinmio minimizada. O grau do polinmio deve ser
espe i ado. O exer io seguinte utiliza este omando. O resultado deste omando um vetor
de omprimento grau+1 ontendo os oe ientes em ordem des endente de potn ias xn , n =
grau -1,...,2,1,0 . O aumento do grau do polinmio nem sempre garante uma melhor aproximao resposta pro urada.
% ex 10.4
x = [0 1 2 3 4 5;
y = [0 20 60 68 77 110;
grau = 1; % grau do polinmio a ajustar
oef = polyt(x,y,grau);
ybest = polyval( oef,x); % para veri ar a qualidade da aproximao
axis([-1,6,-20,120);
plot(x,ybest,x,y, 'o' );% ompara gra amente os valores dados om os obtidos por ajuste
title ('Ajuste polinomial: grau 1');

CAPTULO 10.

54

AJUSTE DE CURVAS E INTERPOLA O

xlabel('X');
ylabel('Y');
grid;

PSfrag repla ements


Frequen y (rad/s)
Singular Values

Figura 10.4: Ajuste polinomial de grau 1

Captulo 11
Leitura e Es rita de Arquivos de Dados
Pode-se ler um arquivo de dados que ontenha apenas nmeros usando o omando load. Um
arquivo om qualquer extenso, por exemplo, "matriz.dat", que ontenha nmeros em formato
de vetor ou matriz pode ser lido om o omando load. O Matlab ria uma varivel de nome
matriz omo sendo vetor ou matriz da mesma dimenso daquela que foi lida.
Por exemplo, se o ontedo do arquivo "matriz.dat":
1
5

2 3 4
6 7 8

Depois de lido o arquivo om o omando load, ria-se a varivel matriz omo sendo uma
matriz 2x4:
 load matriz.dat;
 matriz
matriz =
1
5

2 3 4
6 7 8

 size(matriz) % dimenses da varivel matriz


ans =
2

O arquivo no deve onter letras ou ara teres entre aspas. Os nmeros devem estar dispostos em forma de matriz. Para salvar as variveis ou dados em geral usa-se o omando save.
Exemplo:
55

CAPTULO 11.









LEITURA E ESCRITA DE ARQUIVOS DE DADOS

56

lear;
x = [0 1 2 3 4 5;
y = sqrt(2)*eye(3);
z = rand(2);
save dados x y z; % salvar os dados x,y e z dentro do arquivo 'dados.mat'
save dados2.txt x y z -as ii; % salva em formato txt, 8 digitos
save dados3.txt x y z -as ii -double; % salva em formato txt om 16 digitos

Para se trabalhar om leitura e es rita de dados existe a possibilidade de se utilizar omandos


semelantes aos da linguagem C, tais omo fopen, fs anf, f lose, ujo entendimento mais
omplexo, e que ne essitam mais experin ia em programao para serem entendidos. Mais
informaes so en ontradas atravs dos me anismos de ajuda forne idos pelo Matlab.

Captulo 12
Anlise Polinomial
Para denir um polinmio basta es rever a lista referente aos oe ientes deste polinmio.
Por exemplo para trabalhar om o polinmio f (x) = 3x4 0.5x3 + x 5.2 no Matlab dena-se
a lista:
 f = [3,-0.5, 0, 1,-5.2;
Cada oe iente deve apare er em ordem de res ente a partir da maior poten ia no nula
deste polinmio, e quando a poten ia no existe deve-se preen her om zero, omo o aso do
termo x2 . Para avaliar este polinmio f usa-se o omando polyval tanto para valor simples
omo para listas.
% ex 12.1
f = [3,-0.5,0,1,-5.2; x = 1; polyval(f,x) % valor f(1)
x = [0 1 1.1 1.2; % redenio de x
y = polyval(f,x) % lista de valores f(xi) orrespondente a ada valor da lista x
g = [1 0 -3 -1 2.4; % polinmio g(x) = x4 3x2 x + 2.4
m = onv(f,g) % produto dos polinmios f e g
[q,r = de onv(f,g); % diviso polinomial f/g
rts = roots(f) % razes ou zeros do polinmio f
f = poly(r) % oe ientes do polinmio ujas razes so os elementos de r
f = [1 -2 3;
df = polyder(f) % oe ientes do polinmio 2x-2 derivada de f (x) = x2 2x + 3
x = -5:0.1:7;
yf = polyval(f,x) % valores de f relativos a x
ydf = polyval(df,x) % valores da derivada de f em x
plot(x,yf,x,ydf) % gr o de f e da sua derivada

57

CAPTULO 12.

ANLISE POLINOMIAL

58

legend('f','df');
title('Funo e a sua derivada: f = x2-2x+3 ; df = 2x-2');

PSfrag repla ements


Frequen y (rad/s)
Singular Values

Figura 12.1: Curvas ontnuas de um polinmio e a sua derivada


A varivel m uma lista de oe ientes do polinmio produto dos polinmios f e g, q e r
so, respe tivamente, a lista de oe ientes do polinmio quo iente f/g e resto desta diviso. A
lista rts ontm as razes do polinmio f. O omando poly(r) a ha os oe ientes do polinmio
ujas razes so os valores de r. O omando polyder(f) retorna os oe ientes do polinmio
derivado de f.
Existe uma grande variedade de omandos para trabalhar om polinmios, mas eles so
para apli aes mais espe  as (exe ute lookfor polyn ). Mais duas apli aes omo exemplos
so dadas a seguir.
polyint : integra polinmios analiti amente, retorna a lista de oe ientes da antiderivada de um polinmio tal que f(0) = 0. Por exemplo, polyint(f,3) al ula antiderivada de
f tal que f(0) = 3.
poly2str : onverte uma lista em uma seqn ia de ara teres em formato de polinmio.
Por exemplo: poly2str([1 0 2,'s') retorna o texto (string) 's2 + 2'.

Captulo 13
Integrao e Diferen iao
Existem mtodos que trabalham om aproximao numri a e outros om funes analti as.
possvel no Matlab trabalhar om algoritmos numri os e algumas vezes tambm om mtodos
simbli os. No aso de integrao e diferen iao existem omandos para trabalhar om ambos
os mtodos.

13.1 Integrao
No Matlab existe o omando int que al ula a integral indenida de uma funo analti a
om respeito a sua varivel simbli a. Primeiro deve-se denir a varivel independente omo
sendo simbli a, veja exemplo a seguir.

>> syms x x1 al pha u t ;% d e f i n e e s t a s v a r i v e i s omo s i m b l i a s


>> i n t (1/(1+x ^2) ) %a n t i d e r i v a d a de 1/(1+ x2 )
ans =
atan ( x )
>> i n t ( s i n ( al pha u ) , a l pha ) % i n t e g r a om r e s p e i t o a al p h a e no u
ans =
o s ( a lp h a u ) / u

59

CAPTULO 13.

INTEGRA O E DIFERENCIA O

60

>> i n t ( x1 l o g (1+x1 ) , 0 , 1 ) % i n t e g r a no i n t e r v a l o [ 0 , 1
ans =
1/4
>> i n t ( 4 x t , x , 2 , s i n ( t ) ) % i n t e g r a no i n t e r v a l o [ 2 , s i n ( t )
ans =
2 t ( o s ( t )^2 + 3)

>> i n t ( [ exp ( t ) , exp ( a l pha t ) ) % i n t e g r a o par / r a v a r i v e l omum t


ans =
[ exp ( t ) , exp ( a l pha t )/ al ph a
>> A = [ o s ( x t ) , s i n ( x t ) ; s i n ( x t ) , o s ( x t )% d o i s p a r e s de i n t e g r a i s
A =
[ o s ( t x ) , s i n ( t x )
[ s i n ( t x ) , o s ( t x )
A integrao numri a efetuada om os omandos quad, quadl, sendo pre iso 106 a pre iso "default". Utilizam respe tivamente quadratura de Simpson e Lobatto (adaptativa).Para
espe i ar a pre iso utiliza-se o argumento tolern ia.
R

f (x)dx

Exemplo:
 a = 0;
 b = 1;
O arquivo fun .m dene a funo a ser integrada, omo dado a seguir.
% arquivo fun .m

CAPTULO 13.

INTEGRA O E DIFERENCIA O

61

fun tion f = fun (x)


f = x. 2;
As formas a seguir so vlidas e levam ao mesmo resultado
 quad('x.*x',0,1); % integra x2 no intervalo [0,1
 quad('fun ',a,b); % integra x2 no intervalo [0,1
 quad(fun ,a,b); % integra x2 no intervalo [0,1
O resultado 0.3333.
 quad(fun ,a,b,1.e-14); %exige-se uma pre iso 1014 na integrao
A integrao de Lobatto implementa um mtodo de alta ordem e uma tolern ia absoluta
do erro. Para integrao dupla utilize-se o omando dblquad, que integra numeri amente, por
exemplo:
 f = 'x.*y';
 dblquad(f,0,1,0,1)
ans =
0.2500
Outra forma vlida :
 dblquad(inline('x.*y'),0,1,0,1);
Em qualquer aso o resultado o mesmo, isto , 0.2500.

13.2 Diferen iao


A derivada de uma funo f num ponto x0 denida omo o seguinte limite:
df
f (x + x) f (x)
= lim
dx x0
x

CAPTULO 13.

INTEGRA O E DIFERENCIA O

62

ou equivalentemente quando x x0 , ondex = x0 x:


f (x) f (x0 )
df
= lim
dx xx0
x x0

Para trabalhar tanto simbli a omo numeri amente utiliza-se o omando di.
Exemplos:
>>
>>
>>
>>

syms x ; % d e l a r a x s i m b l i o
d f = d i f f ( ' x^ 2 ' , x ) ; % d e r i v a s i m b o l i a m e n t e d f
d f =2 x ;
d i f f ( ' o s ( ax ) ' , x )

ans =
a s i n ( a x )

Observe que a foi tratada omo onstante. Para permitir que os(a*x) seja derivvel om
respeito a a, deve-se primeiramente de larar a omo sendo simbli o.
>> syms a ;
>> h = ' o s ( a x ) ' ;
>> d f a = d i f f ( h , a )
ans =
x s i n ( a x )

Numeri amente a diferen iao al ula-se omo a diferena entre dois pontos adja entes
quando estes se aproximam. Para tal utiliza-se o omando di al ulando diferenas entre valores adja entes. O prximo exer io exempli a o l ulo da derivada numri a e ompara-se
om a derivada analti a.

x = ( 1 : 1 / 1 5 : 1 ) ; % 30 d i v i s e s do i n t e r v a l o [ 1 , 1
f = x .^ 5 3 x . ^4 11 x . ^3 + 27 x . ^ 2 + 10 x 2 4 ;
df_an = 5 x . ^4 12 x . ^3 33 x .^ 2 + 54 x + 1 0 ; % d e r i v a d a a n a l t i a
d f = d i f f ( f ) . / d i f f ( x ) ; % d e r i v a d a numri a de f omo aproximao
% t a n g e n t e a urva f em p on tos a d j a e n t e s
xd = x ( 2 : l e n g t h ( x ) ) ; % Dado que o v e t o r d i f e r e n a d f tem um e l e m e n to a

CAPTULO 13.

INTEGRA O E DIFERENCIA O

63

% menos e as d im e n s es de x e d f devem o i n i d i r
p l o t ( x , f , ' r ' , xd , df , ' b ' ,x , df_an , ' k ')
l e g e n d ( ' f ( x ) ' , ' { d f /dx} numri o ' , ' { d f /dx } a n a l t i o ' ) ;
xlabel ( 'x ' ) ;
y l a b e l ( ' f ( x ) e { d f /dx } ' ) ;
t i t l e ( ' Po l i n m i o e sua de ri v ad a ' ) ;

Figura 13.1: Derivada numri a: 30


divises do intervalo [-1,1

Figura 13.2: Derivada numri a: 100


divises do intervalo [-1,1

A quarta linha do arquivo a ima mostra omo usar o omando di para al ular numeri amente a derivada. O gr o mostra as urvas do polinmio f e as derivadas analti a e
numri a. A pre iso do resultado numri o depende do nmero de divises onsiderados ou
de quo prximo esto os pontos, no aso da primeira gura, foram tomados 30 divises do
intervalo [-1,1. J na outra gura, mostrada a mesma situao anterior, mas agora foram
onsideradas 100 divises no intervalo. Per ebe-se laramente a diferena de pre iso entre os
asos onsiderados.

Captulo 14
Equaes Diferen iais Ordinrias
As funes ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb permitem resolver problemas a valores ini iais para equaes diferen iais ordinrias (uma varivel independente) por
vrios mtodos.
Os omandos ode23 e ode45 so baseados no mtodo de Runge-Kuta. Ambos possuem os
mesmos tipos de argumentos, ode23 usado para equaes de segunda e ter eira ordem, ode45
utilizado para equaes de quarta e quinta ordem.
O exemplo a seguir apresenta uma equao diferen ial de primeira ordem uja soluo analti a onhe ida. A equao diferen ial uma de primeira ordem (a derivada de maior ordem
1):
y = g1 (x, y) = 3x2 , [2, 4]
Condio Ini ial: y(2) = 0.5
Soluo Analti a: y = x3 7.5

Soluo usando o Matlab: primeiro dena a fun tion d = y = 3x2 :


f u n t i o n dy = g1 ( x , y )
dy = 3 x^ 2
O arquivo ontendo a resoluo pelo Matlab dado por:

% E s t e exemplo r e s o l v e uma equao d i f e r e n i a l om o n d i e s de o n to r n o


[ x , num_y = ode23 ( ' g1 ' , [ 2 , 4 , 0 . 5 ) ;
64

CAPTULO 14.

EQUAES DIFERENCIAIS ORDINRIAS

65

anl_y = x . ^3 7 . 5 ; % s o l u o a n a l t i a
p l o t ( x , num_y, ' r : + ' , x , anl_y , ' b ' ) ; % g r f i o das s o l u e s a n a l t i a p e l o mtod
t i t l e ( ' S o l u o ODE' ) ;
x l a b e l ( 'X ' ) ;
ylabel ( 'y = f (x ) ');
l e g e n d ( ' Runge Kuta ' , ' S o l u o a n a l t i a ' ) ;
grid ;
anl_ynum_y % e r r o a b s o l u t o ometido
No omando ode23, [2,4 o intervalo onde pro ura-se a soluo, 0.5 a ondio ini ial
no ponto x = 2. A sada do omando orresponde a um onjunto de oordenadas, os quais
representam os pontos, no exemplo atual (x, numy ), da funo y = f (x) soluo numri a da
equao diferen ial. O nmero de pontos a determinar al ulado pelo mtodo do Matlab.
Pode ser usado mais um parmetro referente tolern ia que est rela ionada om o tamanho
do passo. A tolern ia "default" 0.001 para ode23 e 0.000001 para ode45. O erro ponto a ponto
ometido pelas solues analti a e numri a, omo mostrado pela diferena anly numy ,
da ordem 1013 , onforme veri ado pela superposio dos pontos urva na gura a seguir.

Figura 14.1: Gr o das solues exata e numri a da equao y = 3x2


O exemplo anterior tambm pode ser fa ilmente resolvido atravs do omando dsolve, uja
resoluo analti a e simbli a:
>> y = d s o l v e ( ' Dy = 3 x ^ 2 ' , ' y ( 2 ) = 0 . 5 ' , ' x ' )
y =
x^3 15/2

Captulo 15
De omposio e Fatorao de Matrizes
Existem muitos mtodos e t ni as numri as que utilizam de omposio e fatorao de
matrizes, omo por exemplo, a resoluo de sistemas lineares. A de omposio LU serve, por
exemplo, para determinar o determinante de uma matriz grande, ou a matriz inversa.

15.1 Fatorao Triangular - LU


Como j vimos, este mtodo de ompe uma matriz quadrada em duas matrizes triangulares, uma inferior (L:lower) e uma superior (U:upper), mas uma matriz de permutao que
orresponde matriz identidade onde foram permutadas linhas ou olunas. Assim o omando
lu efetua esta de omposio.
 [L,U,P = lu(A); % A uma matriz quadrada
De tal forma que: L * U = P * A

15.2 De omposio - QR
Nesta de omposio Q uma matriz ortonormal e R uma matriz triangular superior. A
propriedade de Q ser ortonormal indi a que:
QT Q = I

66

CAPTULO 15.

67

DECOMPOSI O E FATORA O DE MATRIZES

Isto quer dizer que Q e a sua transposta QT sao inversas. As linhas da matriz Q possuem
a seguinte propriedade: denote por qi a linha i de Q, entao qi qjT = ij , isto , o produto
es alar de duas linhas distintas nulo(vetores ortogonais) e o produto es alar de uma linha por
si mesma 1 (vetor de norma 1). O mesmo apli a-se as olunas de Q.
Este mtodo usado para resolver um sistema indeterminado Ax = B resolvendo-se
Rx = QT B , onde A = QR . No Matlab esta de omposio obtida assim:
 [Q,R = qr(A); % fatorao QR

15.3 De omposio em Valores Singulares - SVD


Permite a fatorizao de uma matriz A em matrizes ortogonais S e V e uma matriz diagonal
D. O omando :
 [S,D,V = svd(A); % fatorao SVD
De forma que A = S D V T . Os valores da matriz diagonal S so hamados de valores
singulares de onde vem o nome. O nmero de valores singulares no nulos orresponde ao
"rank"da matriz, isto o nmero de linhas ou olunas linearmente independentes da matriz A.
Este mesmo valor pode ser pesquisado om o omando rank.

15.4 Autovalores e Autovetores


Entre outras apli a oes o problema de autovalores en ontra utilidade na transmissao de
sinais de omuni a ao. Um autovalor e um autovetor x estao asso iados a uma matriz A da
seguinte maneira:
Ax = x

Logo a determina ao destes esta asso iada a resolu ao de um sistema linear de equa oes. A
primeira vista uma solu ao trivial deste sistema e x = 0, = 0 . Mas podem existir valores nao
nulos que tambem resolvem o sistema. No Matlab os autovalores e autovetoers sao en ontrados
om os omandos:
 lambda = eig(A);% lambda: vetor ontendo os autovalores de A

CAPTULO 15.

68

DECOMPOSI O E FATORA O DE MATRIZES

 [V,D = eig(A); % autovalores e autovetores de A


Neste ltimo omando D uma matriz diagonal ontendo os autovalores de A e V uma
matriz ujas olunas so os autovetores de A tal que:
AV =V D

Ou em termos de vetores:
A vi = vi dii , i = 1, 2, ..., n

De outra forma no Matlab A V (:, i) deve ser igual a V (:, i) D(i, i),para i = 1, 2, ..., n .

Captulo 16
Consideraes Finais
Alm do abordado nessa apostila, o Matlab apresenta ainda muitas outras funes, alm de
que para problemas mais espe  os existem vrios toolboxes om outras ferramentas.
As funes e os mtodos abordados nessa apostila foram es olhidos para que houvesse a
melhor ompreenso das ferramentas gr as, numri as, analti as e de implementao de
algoritmos que o Matlab possui, no tempo e espao disposto.
Quem entender o ontedo presente neste material j possui apa idade para trabalhar om
as prin ipais ferramentas do Matlab e autonomia su iente para ontinuar o estudo a er a
deste ambiente.
Para on luir, vale a pena lembrar que este estudo pretende apresentar o Matlab ao pesquisador omo uma ferramenta de ajuda ient a, e que um estudo apurado depender ne essariamente da dedi ao pesquisa na rea de atuao de ada usurio.

69

Refern ias Bibliogr as


[1 C. M. A. A Bravo and E. L. de Albuquerque, Intruduo ao MATLAB , Centro Na ional de
Pro essamento de Alto Desempenho em So Paulo, Universidade Estadual de Campinas.
[2 L. A. Farina and M. S. Posser, MATLAB: Ferramenta matemti a para Engenharia, Laboratrio de Controle e Integrao de Pro essos, Universidade Federal do Rio Grando do
Sul.
[3 D. Hanselman and B. Littleeld, Verso de Estudante, Curso de Matlab 5, Makron Books
do Brasil, So Paulo - Brasil, 1999.

70