Você está na página 1de 74

Universidade Federal de So Joo Del-Rei

Campus Alto Paraopeba

Disciplina: Clculo Numrico

Apostila de Matlab

Prof. Alexandre Cndido Moreira


Prof. Heber Tormentino de Sousa

Agosto de 2010

_______________________________________________________________________________
SUMRIO
1. INTRODUO
1.1 Vantagens do Matlab
1.2 Desvantagens do Matlab

4
4
5

2. O AMBIENTE MATLAB
2.1 Comand Window
2.2 Workspace
2.3 Current Directory
2.4 Command History

5
6
6
7
8

3. COMANDOS BSICOS E DECLARAES DE VARIVEIS

4. OPERAES ARITMTICAS

5. EXIBINDO DADOS DE SADA


5.1 O Comando disp

9
10

6. OPERADORES LGICOS

12

7. OPERADORES RELACIONAIS

12

8. CLCULO MATRICIAL
8.1 Elementos de uma Matriz
8.2 Soma e Subtrao
8.3 Multiplicao de uma Matriz por um Escalar
8.4 Multiplicao entre Matrizes
8.5 Diviso Direta de Matrizes
8.6 Potnciao
8.7 Transposta de uma Matriz
8.8 Determinante
8.9 Inversa da Matriz
8.10 Autovalores e Autovetores
8.11 Matriz escalonada reduzida
8.12 Posto de uma Matriz
8.13 Nmeros e Matrizes Complexas
8.14 Matriz diagonal ou diagonal de uma matriz
8.15 Matrizes Triangulares
8.16 Matriz Identidade
8.17 Matriz Composta por Elementos Unitrios
8.18 Matriz Nula (composta por elementos nulos)
8.19 Matriz Aleatria

13
13
14
15
15
16
16
17
17
18
18
19
19
20
21
21
22
22
23
23

_______________________________________________________________________________ 2
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
9. GERANDO VETORES
24
9.1 O Comando linspace
25
10. ARQUIVOS M DE COMANDOS

26

11. CONTROLE DE FLUXO


11.1 Lao For
11.2 Lao While
11.3 Estrutura If-Else-End
11.4 Estrutura Switch-Case

28
28
29
30
32

12. ARQUIVOS M DE FUNES

33

13. GRFICOS NO MATLAB


13.1 Grficos 2-D
13.2 Estilos de Linhas e Smbolos
13.3 Coordenada Polar e Grfico de Barras
13.4 Grficos 3-D
13.5 Anotaes no Grfico

35
35
38
40
42
48

14. POLINMIOS
14.1 Razes
14.2 Multiplicao
14.3 Adio
14.4 Diviso
14.5 Clculo de Polinmios
14.6 Derivada de Polinmios
14.7 Derivada de um Produto de Polinmios
14.8 Derivada de um Quociente de Polinmios

49
49
50
51
51
52
52
52
53

15. LISTA DE FUNES DO MATLAB

54

16. REFERNCIAS BIBLIOGRFICAS

74

_______________________________________________________________________________ 3
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

1. INTRODUO
MATLAB (abreviatura de Matrix Laboratory Laboratrio de Matrizes) um
programa d ecomputador de uso especfico, otimizado para executar clculos cientficos e
de engenharia. Ele nasceu como um programa para operaes matemticas sobre
matrizes, mas ao longo dos anos transformou-se em um sistema computacional flexvel
capaz de resolver essencialmente qualquer problema tcnico.
Seus elementos bsicos so matrizes que no requerem dimensionamento. Ele
permite

implementar e

resolver problemas matemticos muito mais

rpida e

eficientemente que atravs de outras linguagens como C, Basic, Pascal ou Fortran.


O MATLAB possui uma famlia de aplicativos especficos (toolboxes), que so
colees de funes usadas para resolver determinados problemas tais como:
otimizao, manipulao algbrica, redes neurais, processamento de sinais, simulao de
sistemas dinmicos, entre outros.
Provavelmente, a caracterstica mais importante do MATLAB a sua extensibilidade,
que permite que engenheiros, matemticos cientistas, e at mesmo voc, contribuam
para o enriquecimento.
1.1

Vantagens do Matlab
O Matlab tem muitas vantagens, em comparao com linguagens computacionais

convencionais, para resolver problemas tcnicos. Entre elas, temos:


a) Facilidade de uso: o Matlab uma linguagem interpretada, assim como muitas
verses de Basic.
b) Independncia

de

Plataforma:

tem

suporte

em

diferentes

sistemas

computacionais: Windows XP/Vista, Linux, diversas verses de Unix e


Macintosh.
c) Funes Predefinidas: conta com uma grande biblioteca de funes
predefinidas, que apresentam solues testadas e empacotadas para diversas
tarefas tcnicas bsicas
d) Desenhos Independentes de Dispositivos: diferente da maioria das linguagens
de computador, o Matlab tem muitos comandos para desenhos e imagens,
que podem ser exibidos em qualquer dispositivo de sada grfica compatvel
com o computador que executa o Matlab. Este recurso torna o Matlab uma
ferramenta excepcional para visualizao de dados tcnicos.

_______________________________________________________________________________ 4
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
e) Interface Grfica de Usurio: tem ferramentas que permitem a um
programador construir interativamente uma interface grfica de usurio (GUI
Graphical User Interface) para seus programas. Com este recurso, o
programador capaz de projetar programas sofisticados de anlise de dados,
os quais podem ser operados por usurios relativamente inexperientes.
1.2

Desvantagens do Matlab
O Matlab tem duas desvantagens principais. Primeiro, uma linguagem interpretada,

por isso pode ser mais lento que linguagens compiladas. Esse problema pode ser
diminudo pela estruturao apropriada dos programas Matlab para otimizar o
desempenho do cdigo vetorizado.
A segunda desvantagem o custo: uma cpia completa do Matlab de cinco a dez
vezes mais cara que um compilador convencional C ou Fortran.
2. O AMBIENTE MATLAB
A unidade fundamental de dados em qualquer programa Matlab a matriz, que
uma coleo de valores de dados organizados em linhas e colunas, determinada por um
nome nico. At mesmo escalares so tratados como matrizes em Matlab, eles so
simplesmente matrizes co apenas uma linha e uma coluna.
No Matlab, os arquivos de comando tem extenso .m (M-files) e os arquivos de
dados binrios default tem extenso .mat (Mat-files).
No Windows, o Matlab instalado com os seguintes diretrios:
BIN

contm os programas binrios do Matlab;

DEMOS

demonstrao em HTML

EXTERN

suporte s linguagens FORTRAN, C e C++

HELP

contm arquivos de auxlio e documentao do Matlab

JAVA

suporte linguagem Java

NOTEBOOK suporte gerao de documentao no formato MS-Word


TEMP

diretrio temporrio

TOLLBOX

toolboxes do Matlab

WORK

diretrio de trabalho.

_______________________________________________________________________________ 5
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

Figura 1 Ambiente Matlab janelas: Comand Window, Workspace, Current Directory e Command History.

2.1

Comand Window
a rea de trabalho onde os comandos (as instrues) so digitados;
As operaes podem ser realizadas e seus resultados so mostrados;
Tambm nessa janela que se pode executar um arquivo m-file;
O prompt >> indica que o programa est pronto aguardando uma instruo;
Com as teclas (seta para cima) e (seta para baixo) possvel recuperar
todos os comandos j digitados.

2.2

Workspace

Figura 2 Janela Workspace.

_______________________________________________________________________________ 6
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
a rea na qual so exibidas todas as variveis definidas na rea de trabalho;
Essa janela possui quatro colunas indicando o nome, dimenso, nmero de bytes e
a classe de cada varivel;
As variveis podem ser editadas e visualizadas nessa prpria janela, basta dar um
click-duplo para edit-las;
H um menu flutuante que possvel:
Open abrir a janela;
Graph criar grficos a partir dos dados contidos na varivel;
Select All selecionar todas as variveis;
Import Data importar variveis de um arquivo para o workspace;
Save Selection As salvar as variveis selecionadas em um arquivo;
Save Workspace As salvar todas as variveis do workspace em um arquivo;
Copy copiar a varivel para a rea de transferncia de dados do Windows;
Delete apagar a varivel do workspace;
Clear Workspace apagar todas as variveis do workspace;
Rename renomear a varivel.

2.3

Current Directory
rea onde exibida uma lista dos arquivos contidos no diretrio corrente.

Figura 3 Janela Current Directory.

_______________________________________________________________________________ 7
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
2.4 Command History
rea onde ficam armazenadas todas as instrues executadas no MATLAB.

Figura 4 Janela Command History.

3. COMANDOS BSICOS E DECLARAES DE VARIVEIS


Para iniciar o nosso trabalho no MATLAB necessrio aprender alguns comandos
essenciais da janela de trabalho (command window) e na seqncia vamos aplic-los.
who
whos
clear
clc
dir
cd
what

Tabela 1 Comando Bsicos.


Mostra as variveis do espao de trabalho
Mostra as variveis do espao de trabalho com detalhes
Limpa a memria do espao de trabalho
Limpa a tela
Mostra o contedo do diretrio que se encontra
Informa ou altera o diretrio corrente
Exibe os arquivos Matlab contidos no diretrio

4. OPERAES ARITMTICAS
As expresses podem ser construdas usando os operadores aritmticos usuais:

Tabela 2 Operadores aritmticos.


Adio
+
Subtrao
Multiplicao
*
Diviso
/
Potenciao
^

_______________________________________________________________________________ 8
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

Figura 5 Exemplos de operaes aritmticas.

5. EXIBINDO DADOS DE SADA


O formato numrico exibido na tela pode ser modificado utilizando-se o comando
format, que afeta somente o modo como as matrizes so mostradas, e no como elas
so computadas ou salvas.
Se todos os elementos das matrizes so inteiros exatos, a matriz mostrada em um
formato sem qualquer ponto decimal. Por exemplo,
x = [-1 0 1]

resulta em:
x =
-1 0 1

Se pelo menos um dos elementos da matriz no inteiro exato, existem vrias


possibilidades de formatar a sada. O formato "default", chamado de formato short,

_______________________________________________________________________________ 9
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
mostra aproximadamente 4 dgitos decimais ou usam notao cientfica. Por exemplo, a
matriz:
x = [4/3 1.2345e-6]

mostrada , para cada formato usado, da seguinte maneira:


x =
1.3333

0.0000

O formato-padro pode ser alterado de duas maneiras: a partir da Janela de Menu


Principal do Matlab ou pelo uso do comando format. O formato pode ser alterado pela
seleo da opo File>>Preferences>>Command Window.
Alternativamente, o usurio pode acionar o comando format para alterar as
preferncias. Este comando altera o formato-padro de acordo com os valores dados na
Tabela 3. O formato-padro pode ser modificado para exibir mais dgitos significativos,
para forar a exibio em notao cientfica, exibir dados com dois dgitos decimais ou
ento eliminar linhas adicionais para que mais dados sejam visveis por vez na Janela de
comandos.
Tabela 3 Formatos de exibio de sada.
Comando de Formatao
format short
format long
format short e
format short g
format long e
format long g
format bank
format hex
format rat

5.1

Resultados
4 dgitos decimais (formato-padro)
14 dgitos decimais
5 dgitos mais expoente
5 dgitos no total, com ou sem expoente
15 dgitos mais expoente
15 dgitos no total, com ou sem expoente
Formato monetrio
Exibio hexadecimal de bits
Razo aproximada entre inteiros pequenos

Exemplo
12,3457
12,34567890123457
1,2346e+001
12,346
1,234567890123457e+0001
12,3456789012346
12,35
4028b0fcd32f707a
1000/81

O Comando disp
O comando disp exibe o contedo de uma varivel, mas, ocultando o nome da

mesma, e/ou mostra strings na forma de textos. A formageral do comando disp :


disp (nome de uma varivel)

ou dsisp (string de texto)

Toda vez que um comando disp executado, a sada que ele produz mostrada
numa nova linha. Por exemplo:
% A varivel A inicializada com uma matriz 2x3
A=[5 9 1; 7 2 4]
A =
5
7

9
2

1
4

_______________________________________________________________________________10
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
% O comando disp utilizado para exibir a matriz A
disp(A)
5
7

9
2

1
4

% O comando disp utilizado para mostrar uma mensagem


disp('O problema no possui soluo')
O problema no possui soluo

O cdigo abaixo ensina como utilizar os comandos input e disp em uma rotina para
calcular a soma entre 3 nmeros. Ao final da soma o a rotina exibe um texto juntamente
com o resultado da soma.

Figura 6 M-File implementado, Janela Editor.

Figura 7 Algoritmo executando na Janela de Comandos.

_______________________________________________________________________________11
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
6. OPERADORES LGICOS
Um operador lgico examina senteas verdadeiras/falsas e produz resultados
verdadeiro (1) ou falso (0), de acordo com a funcionalidade do operador. Por exemplo, o
operador lgico AND resulta 1 (verdadeiro) se, e somente se, todas as senteas
envolvidas na operao forem verdadeiras. Tanto os operadores lgicos quanto
relacionais podem ser utlizados em expresses matemticas ou, como ser visto adiante,
serem combinados a outros comando para controlar ou tomar deciso sobre o fluxo do
programa.

Tabela 4 Operadores lgicos.


Smbolo
Operador
e
&
ou
|
no
~

7. OPERADORES RELACIONAIS
O operador relacional compara dois nmeros determinando se oresultado da senta
de comparao verdadeiro (V) ou falso (F). Por exemplo (5<8 V), ou seja, se a
sentea for verdadeira o valor retornado 1. Caso contrrio, o valor retornado 0.

Tabela 5 Operadores lgicos.


Smbolo
Operador
menor
que
<
menor ou igual que
<=
maior que
>
maior ou igual que
>=
igual
==
diferente
~=
Perceba que o operador relacional que testa a igualdade entre dois objetos
representado por dois sinais de igualdade (==), sem espao entre eles. Isso porque um
nico sinal de igualdade representa o operador de atribuio. Os demais operadores
duplos (representados por dois caracteres) tambm no possuem espaos entre os
caracteres (<=, >=, ~=).

_______________________________________________________________________________12
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

Figura 8 Exemplos com operadores relacionais.

8. CLCULO MATRICIAL
As matrizes em Matlab podem ter uma ou mais dimenses. Matrizes unidimensionais
podem ser visualizadas como uma srie de valores colcoados em uma linha ou em uma
coluna, como um nico ndice para selecionar os elementos individuais da matriz.
O Matlab permite a criao de matrizes com tantas dimenses quanto necessrio
para um dado problema. Essas matrizes tm um ndice para cada dimenso, e um
elemento individual selecionado pela especificao de um valor para cada ndice.
8.1

Elementos de uma Matriz


Elementos de uma matriz podem ser qualquer expresso do MATLAB. Por exemplo:

x=[-1.3 log(4.23^3) (1+2+3)/4*5]


x =
-1.3000

4.3266

7.5000

Elementos individuais de uma matriz podem ser referenciados com seus respectivos
ndices entre parnteses. No exemplo anterior, para referenciar o segundo elemento do
vetor x:
x(2)
ans =
4.3266

_______________________________________________________________________________13
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
Analogamente em uma matriz, com linha e coluna determinada tenho um elemento.
Seja:
x=[1 2 3;4 5 6;7 8 9]
x =
1
4
7

2
5
8

3
6
9

>>
%% extrair o elemento da linha 2 e coluna 3
x(2,3)
ans =
6

Repare que a referncia sempre na forma matriz(linha,coluna).


8.2

Soma e Subtrao
Os smbolos + e - denotam adio e subtrao de matrizes. A operao definida

sempre que as matrizes tenham a mesma dimenso. Exemplo:


A = [1 2; 3 4]
A =
1
3

2
4

1
2

3
4

2
5

5
8

B=A'
B =

C=A+B
C =

A adio e subtrao tambm definida quando um dos operandos for um escalar.


Exemplo:
D=C-2
D =

_______________________________________________________________________________14
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
0
3

8.3

3
6

Multiplicao de uma Matriz por um Escalar

A
A =
1
3

2
4

2
6

4
8

3
9

6
12

2*A
ans =

D=3*A
D =

8.4

Multiplicao entre Matrizes


A multiplicao de matrizes indicada por "*". A multiplicao A*B definida

somente se a segunda dimenso de A for igual primeira dimenso de B, ou seja, o


nmero de colunas da primeira matriz for igual ao nmero de linhas da segunda
matriz. Assim a multiplicao pode ser executada como:
A
A =
1
3

2
4

1
2

3
4

5
11

11
25

B
B =

A*B
ans =

_______________________________________________________________________________15
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
8.5 Diviso Direta de Matrizes
Existem dois smbolos para diviso de matrizes no MATLAB "\" e "/". Se A uma
matriz quadrada no singular, ento A\B e A/B correspondem respectivamente a inv(A)*B
e A*inv(B), por exemplo:
A=[1 2; 3 4]
A =
1
3

2
4

B=[5 6; 7 8]
B =
5
7

6
8

-3
4

-4
5

A\B
ans =

A/B
ans =
3.0000
2.0000

-2.0000
-1.0000

%%diviso de elemento por elemento


A./B
ans =
0.2000
0.4286

8.6

0.3333
0.5000

Potnciao
A expresso A^p eleva A p-sima potncia e definida se A matriz quadrada e

p um escalar. Se p um inteiro maior do que um, a potenciao computada como


mltiplas multiplicaes.
Por exemplo:
A
A =
1
3

2
4

A^3

_______________________________________________________________________________16
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
ans =
37
81

54
118

%% potenciao de elementos por elementos


A.^3
ans =
1
27

8.7

8
64

Transposta de uma Matriz


O caracter ' (apstrofe) denota transposta de uma matriz. Se z for complexo, z' o

transposto conjugado complexo de z. Exemplo:


A = [1 2; 3 4]
A =
1
3

2
4

%% realiza a transposta da matriz A


A'
ans =
1
2

3
4

%% no caso de nmeros complexos, z o conjugado complexo de z


z=2+5i
z =
2.0000 + 5.0000i
z'
ans =
2.0000 - 5.0000i

8.8

Determinante
Para calcularmos o determinante de uma matriz utilizamos o comando det(matriz).

%% Entrando com a matriz A 5x5


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

2
1

4
1

5
3

6
5

_______________________________________________________________________________17
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
7
2
1

8
2
1

9
4
1

9
0
2

0
9
3

%% Calculando o determinante da matriz A


det(A)
ans =
-1145

8.9

Inversa da Matriz
Para calcularmos a inversa de uma matriz utilizamos o comando inv(matriz).

%% Calculando a inversa da Matriz A


inv(A)
ans =
-0.0271
-0.6218
0.3991
0.1747
-0.0332

0.2489
-0.3799
0.1048
0.0393
-0.0175

0.0227
0.1022
0.0201
-0.0175
-0.0367

0.0157
0.0707
0.0908
-0.1659
0.0515

-0.4079
1.6646
-1.2454
0.0830
0.2742

8.10 Autovalores e Autovetores


A funo eig( ) calcula os autovetores e os autovalores de A, respectivamente.
Existem funes que retornam dois ou mais valores. Nestes casos, os valores de sada
devem estar entre colchetes [ ] e separados por vrgula. Exemplo:
A=[1 -1;-4 1]
A =
1
-4

-1
1

%% Retorna um vetor com os autovalores da matriz A;


eig(A)
ans =
3.0000
-1.0000

[V, D] = eig( A ): Produz matrizes de autovalores (D) e auto-vetores (V) da matriz A,


de forma que A*V = V*D. A matriz D a forma cannica de A menos uma matriz diagonal
com os autovalores de A na diagonal principal. As colunas da matriz V so os autovetores
de A;
[V,D] = eig(A)
%% autovetores associados a matriz A
V =
0.4472
-0.8944

0.4472
0.8944

_______________________________________________________________________________18
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
%% autovalores associados a matriz A
D =
3.0000
0

0
-1.0000

8.11 Matriz escalonada reduzida


O comando rref(matriz) encontra a matriz escalonada reduzida atravs do processo
de escalonamento de Gauss Jordan.
A=[1 2 4 5 6;5 1 1 3 5;7 8 9 9 0;2 2 4 0 9;1 1 1 2 3]
A =
1
5
7
2
1

2
1
8
2
1

4
1
9
4
1

5
3
9
0
2

6
5
0
9
3

0
1
0
0
0

0
0
1
0
0

0
0
0
1
0

0
0
0
0
1

rref(A)
ans =
1
0
0
0
0

%% exemplo de um sistema possvel e indeterminado 0*z=0


A=[1 2 8; 2 4 16; 0 1 3]
A =
1
2
0

2
4
1

8
16
3

0
1
0

2
3
0

rref(A)
ans =
1
0
0

8.12 Posto de uma Matriz


Do exemplo anterior nota-se que a matriz em sua forma escalonda reduzida possui
duas linhas no-nulas e infinitos valores para z. O nmero de linhas no-nulas pode ser
encontrado atravs do comando rank(matriz), ou seja, o comano rank encontra o

_______________________________________________________________________________19
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
posto da matriz, que nada mais do que a quantidade mxima de linhas linearmente
independentes da matriz.
A=[1 2 8; 2 4 16; 0 1 3]
A =
1
2
0

2
4
1

8
16
3

0
1
0

2
3
0

rank(A)
ans =
2
rref(A)
ans =
1
0
0

8.13 Nmeros e Matrizes Complexas


Nmeros complexos so permitidos em todas operaes e funes no MATLAB. Os
nmeros complexos so introduzidos usando-se as funes especiais i e j. Por exemplo
z= 3 + 4*i
z =
3.0000 + 4.0000i
%% ou podemos escrever tambm
z= 3 +4*j
z =
3.0000 + 4.0000i

As seguintes declaraes mostram dois caminhos convenientes para se introduzir


matrizes complexas no MATLAB:
A= [1 2; 3 4]+i*[5 6;7 8]
A =
1.0000 + 5.0000i
3.0000 + 7.0000i

2.0000 + 6.0000i
4.0000 + 8.0000i

Que produz o mesmo resultado que:


A= [1+5*i 2+6*i; 3+7*i 4+8*i]

_______________________________________________________________________________20
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
A =
1.0000 + 5.0000i
3.0000 + 7.0000i

2.0000 + 6.0000i
4.0000 + 8.0000i

8.14 Matriz diagonal ou diagonal de uma matriz


Se x um vetor, diag(x) a matriz diagonal com x na diagonal. Por exemplo:
>> x=[1 2 3 1 -1 4]
x =
1

-1

%% como x um vetor, diag(x) monta uma matriz na qual a diagonoal principal o


vetor x
diag(x)
ans =
1
0
0
0
0
0

0
2
0
0
0
0

0
0
3
0
0
0

0
0
0
1
0
0

0
0
0
0
-1
0

0
0
0
0
0
4

Se A uma matriz quadrada, ento diag(A) um vetor cujos componentes so os


elementos da diagonal de A.
A=[3 11 5; 4 1 -3; 6 2 1]
A =
3
11
5
4
1
-3
6
2
1
%% extrai a diagonal principal da matriz
diag(A)
ans =
3
1
1

8.15 Matrizes Triangulares


O comando triu extrai a matriz triangular superior da matriz A, enquanto o comando
tril extrai a matriz triangular inferior da matriz A. Por exemplo:
A=[3 11 5; 4 1 -3; 6 2 1]

_______________________________________________________________________________21
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
A =
3
4
6

11
1
2

5
-3
1

%% matriz triangular superior


triu(A)
ans =
3
0
0

11
1
0

5
-3
1

%% matriz triangular inferior


tril(A)
ans =
3
4
6

0
1
2

0
0
1

8.16 Matriz Identidade


De modo a construir uma matriz identidade (quadrada ou com dimenso n x m), a
funo a utilizar dada por:
eye(n,m)
Exemplo:
eye(5,5)
ans =
1
0
0
0
0

0
1
0
0
0

0
0
1
0
0

0
0
0
1
0

0
0
0
0
1

0
1
0
0
0

0
0
1
0
0

0
0
0
1
0

0
0
0
0
1

eye(5,8)
ans =
1
0
0
0
0

0
0
0
0
0

0
0
0
0
0

0
0
0
0
0

8.17 Matriz Composta por Elementos Unitrios


No caso de ser necessrio a obteno de uma matriz composta apenas por
elementos unitrios, temos que:
ones(n,m)
_______________________________________________________________________________22
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
ones(5,5)
ans =
1
1
1
1
1

1
1
1
1
1

1
1
1
1
1

1
1
1
1
1

1
1
1
1
1

1
1
1
1
1

1
1
1
1
1

1
1
1
1
1

1
1
1
1
1

ones(5,8)
ans =
1
1
1
1
1

1
1
1
1
1

1
1
1
1
1

1
1
1
1
1

8.18 Matriz Nula (composta por elementos nulos)


Para efetuar qualquer tipo de manipulao matricial, poder ser til a construo de
uma matriz composta por elementos nulos:
zeros(n,m)
zeros(5,5)
ans =
0
0
0
0
0

0
0
0
0
0

0
0
0
0
0

0
0
0
0
0

0
0
0
0
0

8.19 Matriz Aleatria


A elaborao de testes a qualquer programa desenvolvido no MATLAB, ou para
utilizao de um outro qualquer modo, poder fazer uso de matrizes compostas por
nmeros aleatrios uniformemente distribudos no intervalo entre 0 e 1:
rand(n,m)
rand(3,3)
ans =
0.171186687811562
0.706046088019609
0.031832846377421

0.276922984960890
0.046171390631154
0.097131781235848

0.823457828327293
0.694828622975817
0.317099480060861

No caso de se pretender uma distribuio normal dos nmeros aleatrios


compreendidos entre 0 e 1, a funo a utilizar ser:
randn(n,m)
randn(3,3)

_______________________________________________________________________________23
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
ans =
-0.432564811528221
-1.665584378238097
0.125332306474831

0.287676420358549
-1.146471350681464
1.190915465642999

1.189164201652103
-0.037633276593318
0.327292361408654

9. Gerando Vetores
O dois pontos ( : ) um caracter importante no MATLAB. Escrevendo:
x=1:8
x =
1

Cria um vetor cujo primeiro elemento 1, o ltimo 8 e o passo entre os elementos


do vetor 1. O mesmo comando pode ser modificado de forma a alterar o passo entre os
elementos do vetor:
x = 1:1.5:8
x =
1.0000

2.5000

4.0000

5.5000

7.0000

Os dois pontos significam incio:passo:fim. O valor de passo pode ser qualquer


nmero real ( 0). A notao ( : ) muito til para gerar tabelas e plotar grficos, como
veremos adiante.
%% cria um vetor linha x
x=0:0.2:3
x =
Columns 1 through 11
0
1.6000

0.2000
0.4000
1.8000
2.0000

0.6000

0.8000

2.8000

3.0000

1.0000

1.2000

1.4000

1.2094

1.2332

1.2320

Columns 12 through 16
2.2000

2.4000

2.6000

%% cria um vetor linha y, a partir dos valores de x


y=exp(-x) + sin(x)
y =
Columns 1 through 11
1.0000
1.0174
1.0597
1.2015
1.1391
1.0446

1.1135

1.1667

_______________________________________________________________________________24
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
Columns 12 through 16
0.9193

0.7662

0.5898

0.3958

0.1909

%% cria uma matriz 16x2 a partir dos vetores x e y transpostos


z=[x' y']
z =
0
0.2000
0.4000
0.6000
0.8000
1.0000
1.2000
1.4000
1.6000
1.8000
2.0000
2.2000
2.4000
2.6000
2.8000
3.0000

1.0000
1.0174
1.0597
1.1135
1.1667
1.2094
1.2332
1.2320
1.2015
1.1391
1.0446
0.9193
0.7662
0.5898
0.3958
0.1909

Outros incrementos, diferentes da unidade podem ser utilizados, como seja o caso
do seguinte exemplo que impe um incremento de pi/4.
%% criamos um vetor que comea em 0 e vai at PI, com um passo de PI/4
y = 0 : pi/4 : pi
y =
0

0.7854

1.5708

2.3562

3.1416

Tambm so possveis incrementos negativos:


%% criamos um vetor que comea em 6 e vai at 1, com um passo de -1
z = 6 : -1 : 1
z =
6

9.1

O Comando linspace
Pode-se, tambm, gerar vetores linearmente espaados fazendo uso da funo

linspace. Por exemplo:


%% criamos 6 pontos igualmente espaados entre 0 e 1.
k = linspace(0,1,6)
k =
0

0.2000

0.4000

0.6000

0.8000

1.0000

%% criamos 5 pontos igualmente espaados entre 0 e 10.


k1=linspace(0,10,5)

_______________________________________________________________________________25
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
k1 =
0

2.5000

5.0000

7.5000

10.0000

Tambm possvel criar um espaamento logartmico entre os pontos do vetor. Isto


possvel atravs do comando logspace(x1,x2,k). Onde x1 o ponto inicial, x2 o ponto
final e k o numero total de elementos.

10. ARQUIVOS M DE COMANDOS


O MATLAB normalmente usado no modo de comando(Janela de comandos
Command Window). Quando voc entra com uma linha de comando, ele processa e
imediatamente mostra o resultado. O MATLAB tambm pode executar uma seqncia de
comandos que est armazenada num arquivo. Estes dois modos formam um ambiente
interpretativo. Os arquivos que contm declaraes MATLAB so chamados M-files
porque usam a extenso *.m. Por exemplo, o arquivo senoide.m contm declaraes
MATLAB para o clculo e desenho de uma funo senoidal com amplitude unitria,
freqncia de 1000 Hz e ngulo de fase igual a zero:

Figura 9 Arquivo .m para o calculo de uma funo seno com A=1, f=1000Hz.

_______________________________________________________________________________26
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

Figura 10 Resultado aps a execuo do arquivo senoide.m.

Um M-file consiste de uma seqncia de declaraes MATLAB normais, podendo


incluir referencias outros M-files. Um M-file pode chamar ele prprio de forma recursiva.
Voc pode criar um M-file usando um editor de texto tal como o Notepad do Windows,
Edit do DOS ou outro qualquer. Dois tipos de M-files podem ser usadas: manuscritas
(scripts) e funes. Arquivos scripts automatizam uma seqncia longa de comandos.
Arquivos de funo permite criar novas funes s existentes. Ambos, scripts e funes
so arquivos texto tipo ASCII.

Figura 11 Arquivos .m de scripts e funes.

Normalmente, enquanto um M-file est sendo executado, os comandos contidos no


arquivo no so mostrados na tela. O comando echo permite visualizar o comando a
medida que ele vai sendo executado. Isso especialmente til na depurao de um
programa ou para a confeco de um programa demonstrativo.
Em virtude da grande utilidade dos arquivos de comandos o MATLAB possui vrias
funes apropriadas para o uso em arquivos M. Essas funes so:

_______________________________________________________________________________27
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
Tabela 6 Comando de entrada,sada, depurao e interao com o usurio.
Comandos
Descrio
disp(ans)
echo
Input
pause
pause(n)
waitforbuttonpress

Mostra os resultados sem identificar o nome das variveis


Controla a exibio dos comandos dos arquivos M na janela de comandos
Solicita ao usurio que fornea um dado de entrada
Suspende a execuo at que o usurio pressione alguma tecla
Suspende a execuo por n segundos
Suspende a execuo at o usurio pressione uma tecla ou um boto do mouse.

11. CONTROLE DE FLUXO


Os comandos que controlam o fluxo especificam a ordem em que a computao
feita. No MATLAB estes comandos so semelhantes aos usados na linguagem C, mas
com uma estrutura diferente (mais simples).
11.1 Lao For
O lao for o controlador de fluxo mais simples e usado na programao MATLAB.
Em geral:
for x = <valor inicial>:<incremento>:<valor final>
comandos
end
O lao for repete as instrues dentro do lao at que o ndice contador do lao
alcance a condio final:
for i=[1,2,3,4]
disp(i^2)
end
1
4
9
16

(Observe o uso da funo disp, que exibe na tela o contedo do seu argumento). O lao
for, tal como o bloco if, deve ser terminado com a instruo end. Este lao poderia ser
expresso na forma mais comum:
for i=1:4
disp(i^2)
end
1
4
9
16

(lembre-se que 1:4 equivalente a [1,2,3,4]).


%% utilizando o incremento
for i=1:1:4
disp(i^2)
end

_______________________________________________________________________________28
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
1
4
9
16

O lao for possibilita que uma srie de comandos seja repetida por um nmero de
vezes fixo e pr-definido. O comando end usado como limite inferior do corpo do lao.
Exemplos:
1) Calcular a tabuada do nmero 17:
for n=0:10
tab(n+1)=17*n;
end
disp(tab)
0
17

34

51

68

85

102

119

136

153

170

2) Calcular a soma de todos os nmeros pares de 0 a 100:


soma=0;
for n=0:2:10
soma=soma+n;
end
disp(soma)

3) Calcular o fatorial de um nmero n:


n=input(Digite um valor para calcular o fatorial: ) ;
fatorial=1;
for a=1:n
fatorial=fatorial*a;
end
disp(fatorial)

11.2 Lao While


Ao contrrio do Lao For, que executa um grupo de comandos um nmero fixo de
vezes, o lao while executa um grupo de comandos um nmero indefinido de vezes. O
lao while executado enquanto a condio expr for verdadeira:
x=1;
while 1+x > 1
x = x/2;
end
x
x =
1.1102e-16

A estrutura geral :
while expresso
comandos
end
_______________________________________________________________________________29
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
Calcular o fatorial de um nmero qualquer.
%Fatorial com While
x=input('Digite um valor: ');
fat=1;
while x>0
fat=fat*x;
x=x-1;
end
disp(fat)

Calcule a seguinte srie com 50 termos:

%Clculo da Srie
n=0;
x=1;
serie=0;
while n<50
serie=serie+x/2;
x=x+2;
n=n+1;
end
disp(serie)
1250

11.3 Estrutura If-Else-End


Em diversas situaes, as seqncias de comandos tm de ser executadas
condicionalmente, com base em um teste relacional. Essa lgica implementada por
meio de uma das diversas formas da estrutura if-else-end. A mais simples :

if expresso
comandos
end
Os comandos entre as instrues if e end so executados se todos os elementos na
expresso forem Verdadeiros.
Exemplo:
Calcular o desconto de 20% para um nmero de cadeiras maior que 5. Sendo que o
custo de cada cadeira de R$55,00.
cadeiras=input('digite o numero
preco=55;
custo=cadeiras*preco;
if cadeiras>5
custo=(1-20/100)*custo;
end
disp(custo)

de cadeiras desejadas: ');

_______________________________________________________________________________30
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
Outra forma de usar a estrutura :
if expresso
comandos executados se Verdadeiro
else
comandos executados se Falso
end
Exemplos:
1) Dado qualquer distncia que um veculo deve 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/litros). Supondo que o tanque estar cheio na
partida, mostrar umas das mensagens:
DEVE HAVER REABASTECIMENTO
OU
NO DEVE HAVER REABASTECIMENTO
% DISTNCIA
%
d=input('Digite a distncia a ser percorrida: ');
mc=15; %media de consumo
ct=45; %capacidade do tanque
if mc*ct>=d
disp('No deve haver reabastecimento')
else
disp('Deve haver reabastecimento')
end

Testar para 780 km e 600 km

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


(trs) nveis conforme a pontuao obtida em 2 (duas) provas aplicadas de acordo com o
seguinte critrio:

Tabela 7 Dados exemplo 2.


Nvel
A
B
C

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

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


receba 2 (duas) notas de um funcionrio e mostre como resposta o nvel em que est
classificado.
%Classificao de Funcionrios
nota1=input('Digite a primeira nota: ');

_______________________________________________________________________________31
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
nota2=input('Digite a segunda nota: ');
if nota1>=8 | nota2>=8 | (nota1+nota2)>=14
disp('aluno nvel A')
elseif nota1>=6 | nota2>=6 | (nota1+nota2)>=9
disp('aluno nvel B')
else
disp('aluno nivel C')
end

11.4 Estrutura Switch-Case


Essa estrutura funciona como uma chave seletora, escolhendo a expresso correta
para executar os comandos.
O

comando

switch

utilizado

quando

desejamos

selecionar

(chavear)

condicionalmente expresses porm, na forma de lista. O formato geral do comando


switch :

switch expresso
case valor 1
......... grupo de comandos
case valor 2
......... grupo de comandos
case valor 3
......... grupo de comandos
otherwise
......... grupo de comandos
end

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.
%Programa para saber quantos dias tem o mes
%
clear;
clc;
mes=input('digite o mes desejado: ');
switch mes
case {'Janeiro','Marco','Maio','Julho','Agosto','Outubro','Dezembro'}
disp('31 dias')
case {'Fevereiro'}
disp('28 ou 29 dias')
case {'Abril','Junho','Setembro','Novembro'}
disp('30 dias')

_______________________________________________________________________________32
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
12. ARQUIVOS M DE FUNES
um programa elaborado como arquivo.m e que calcula algo desejado pelo
programador, devolvendo somente o valor da resposta. Os comandos executados por
esse programa ficam ocultos. Voc s visualiza o que entra e o que sai, ou seja, uma
funo uma caixa preta.

Figura 12 Princpio de funcionamento de uma funo.

O Matlab, como outras linguagens de programao, possui duas formas de criao


de programas: roteiro (script) e funo (function). Na aula passada, vimos um exemplo
prtico de criao de um roteiro que executava uma seqncia de comandos Matlab para
o ajuste de curvas (linear, polinomial e no-linear). Quando um programa executa uma
seqncia de comandos que pode ou no retornar parmetros na janela de comandos do
Matlab, ento esse programa denomina-se roteiro no Matlab. Em ingls, roteiro
chamado script, termo esse que tambm usado na lngua portuguesa para descrever
uma seqncia de eventos.
A primeira linha executvel no arquivo deve ser a linha de declarao da funo. De
outro modo, o MATLAB tratar o arquivo como uma rotina. A linha de declarao de uma
funo:
Define o arquivo como uma funo (diferenciando-o de uma rotina);
Define o nome da funo;
Define o nmero e a ordem das variveis de entrada, alm de especificar o que a
funo ir retornar (variveis de sada).
O formato caracterstico da linha de declarao de uma funo :

function [argumentos de saida] = nome_funcao (argumentos de entrada)

Exemplo:
1) Montar um programa que realize o clculo da distncia entre dois pontos (x1, y1) e
(x2, y2) em um sistema de coordenadas cartesianas.

d=

(x 2 x1 )2 + ( y 2 y1 )2

_______________________________________________________________________________33
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
No caso, vamos criar um programa principal chamado distancia e atravs deste
programa vamos chamar a funo dist2.m, na qual estar implementada a foruma acima.
Passo 1: Criando a funo:

Figura 13 Implementao da Funo dist2.

Em um m.File implementamos o cdigo da funo. Lembre-se este arquivo .m deve


ser salvo com o nome da funo no caso dist2.m.
Passo 2:
Criando o programa principal:
%% Programa distancia entre pontos %%
%% o programa principal chama a funo dist2 para o calculo %%
disp('Calculando a distncia entre dois pontos:');
ax=input('Entre com o valor de x do ponto A: ');
ay=input('Entre com o valor de y do ponto A: ');
bx=input('Entre com o valor de x do ponto B: ');
by=input('Entre com o valor de y do ponto B: ');
resp=dist2(ax,ay,bx,by);
fprintf('A distncia entre os potnos A e B %f\n:',resp);

Figura 14 Programa em execuo.

_______________________________________________________________________________34
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
13. GRFICOS NO MATLAB
Grficos so ferramentas poderosas quando se deseja interpretar visualmente os
resultados. Um recurso especialmente interessante nas engnharias e demais cincias
exatas, onde o MATLAB encontra as maiores aplicaes.
O comando plot utilizado para criao de grficos bidimensionais. A forma mais
simples desse comando :
plot (x,y)
Cada um dos argumentos x e y deve ser um vetor. Alm disso, os dois vetores
devem possuir a mesma quantidade de elementos. Ao executar o omando plot, gerada
uma sada na janela Figure Window. Caso a janela Figure Window esteja fechada, ela
ser aberta automaticamente aps a execuo do comando.

13.1 Grficos 2-D


Os resultados apresentados a seguir foram obtidos com o auxlio do software de
simulao PSCAD/EMTDC, no qual foram implementadas distintas situaes de carga e
de tenso de alimentao para averiguar os efeitos da conexo das cargas especiais
modeladas no SEP.
Exemplo:
%% plotar a funo seno %%
x=0:0.1:2*pi; %%gera um vetor de 0 a 2pi
y=sin(x);
%% calcula o vetor das amplitudes
plot(x,y);
%% plota o grfico
xlabel('valores de x'); %%adiciona legenda no eixo x
ylabel('amplitude');
%%adiciona legenda no eixo y
grid on;
%%coloca grid no grafico
y2=2*sin(x); %% gera um outro vetor de amplitudes
hold on;
%% segura o grafico anterior para plotar junto com o novo grafico
plot(x,y2,'r+:'); %%plota o novo grafico, linha na cor vermelha, "+" em cada
ponto, ":" para linha tracejada
title('Grfico da Funo seno'); %% insere ttulo no grafico
legend('Amplitude = 1','Amplitude = 2'); %%insere legenda no grfico

_______________________________________________________________________________35
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

Figura 15 Grfico gerado aps a execuo do programa.

Exemplo:
x
1) Seja a funo y = e sen(x) . Como seria seu grfico no intervalo [0 ; e1 ]?

%%% Grfico da funo f(x)=exp(-x)*sin(x) %%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
x=0:0.1:exp(1)*pi; %%gera o vetor x
y=exp(-x).*sin(x); %%calcula as amplitudes, vetor y
plot(x,y,'--b');
%%plota o grafico
grid on;
%% coloca o grid
title('grfico f(x)=exp(-x)*sin(x)'); %% coloca o titulo no grafico
xlabel('eixo x'); %% coloca texto no eixo x
ylabel('eixo y'); %% coloca texto no eixo y
gtext('ponto de mximo local'); %%disponibiliza ao usuario marcar o ponto no
grafico

Figura 16 Grfico gerado aps a execuo do programa.

_______________________________________________________________________________36
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
1) Seja a funo f ( x) = x 3 9 x + 3 (livro, pg.31). Como seria seu grfico no intervalo [-4 ,
3]?
%%% Grfico da funo f(x)=x.^3-9.*x+3 %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
x = -4:0.1:3; %%gera o vetor x
y = x.^3-9.*x+3; %%calcula as amplitudes, vetor y
plot(x,y,'--b'); %%plota o grafico, linha pontilhada, na cor azul
grid on;
%% coloca o grid
title('\bf{grfico f(x)=x.^3-9.*x+3}' ); %% coloca o titulo no grafico em
negrito
xlabel('eixo x'); %% coloca texto no eixo x
ylabel('eixo y'); %% coloca texto no eixo y
axis([-4 4 -25 15]) %%ajusta os eixos para os limites [XMIN XMAX YMIN YMAX]
%%\bf negrito{'texto'}, \it italico{'texto'};
%%\fontname{arial}

Figura 17 Grfico da funo x^3-9*x+3.

2) Utilizando o processo de ii), pg. 33 livro, vamos isolar a funo f(x) e obter a
equao equivalente g(x)=h(x) e esboar o grfico das funes g(x) e h(x) no
mesmo eixo cartesiano e localizar os pontos x onde as duas curvas se interceptam.

f ( x) = x 3 9 x + 3
g ( x) = x 3
h( x) = 9 x 3

_______________________________________________________________________________37
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Grfico das funes g(x)=x.^3 e h(x)=9.*x-3 %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
x = -10:0.1:10; %%gera o vetor x
g = x.^3; %%calcula as amplitudes, vetor g
plot(x,g,'--b'); %%plota o grafico g(x), linha pontilhada, na cor azul
grid on;
%% coloca o grid
h=9.*x-3; %%calcula as amplitudes, vetor h
hold on; %%segura o grafico g(x) para que possamos plotar h(x)
plot(x,h,'r'); %%plota o grafico h(x), linha pontilhada, na cor vermelho
%% vamos plotar g e h para analisar onde g(x)=h(x), pg 35 livro.
xlabel('eixo x'); %% coloca texto no eixo x
ylabel('eixo y'); %% coloca texto no eixo y
axis([-5 5 -40 40]) %%ajusta os eixos para os limites [XMIN XMAX YMIN YMAX]

Figura 18 Grficos das funes g(x)=x^3 e h(x)=9x-3.

13.2 Estilos de Linhas e Smbolos


Os tipos de linhas, smbolos e cores usados para plotar grficos podem ser
controlados se os padres no so satisfatrios. Por exemplo,
x = 0:0.05:1;
subplot(1,2,1)
plot(x,x.^2,'k*')
subplot(1,2,2)
plot(x,x.^2,'k --')

_______________________________________________________________________________38
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

Figura 19 Plotando grficos com marcadores e linha pontilhada, detalhe comando subplot.

Comando subplot = Gera vrios eixos em uma mesma janela.


Sintaxe:
subplot(m,n,p)
Parmetros de entrada:
m= nmero de eixos na vertical (nmero de linhas).
n=Nmero de eixos na horizontal (nmero de colunas).
p=ndice do eixo corrente
Outros tipos de linhas, pontos e cores tambm podem ser usados:

_______________________________________________________________________________39
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

13.3 Coordenada Polar e Grfico de Barras


polar(theta,r,fmt) plota em coordenadas polares o ngulo theta, em radianos, r que
a variao radial linear, e fmt a cadeia de caracteres contendo a descrio do tipo de
curva a ser traado (como o plot);
%% Gerando grficos em coordenadas polares
theta=-2*pi:0.1:2*pi;
rho=1:126;
polar(theta,rho,'r*')

_______________________________________________________________________________40
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

Figura 20 Coordenadas polares.

Figura 21 Grficos de barras.

_______________________________________________________________________________41
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
%% Gerando grficos de Barras
x=-2.9:0.2:2.9;
y=exp(-x.*x);
subplot(2,2,1)
bar(x,y)
title('Grafico de barras de uma curva em forma de sino');
subplot(2,2,2)
bar3(x,y)
title('Grafico de barras 3-D de uma curva em forma de sino');
subplot(2,2,3)
stairs(x,y)
title('Grafico em escada de uma curva em forma de sino');
subplot(2,2,4)
barh(x,y)
title('Grafico de barras horizontal');

13.4 Grficos 3-D


O MATLAB possui muitos recursos para visualizao de dados em 3D. Este item
representa as principais funes relacionadas a este tpico.
Estes so alguns comandos para plotar grficos tridimensionais e contornos.
Tabela 8 Comandos para plotar grficos 3-D.

O MATLAB define uma superfcie do tipo mesh (rede) pelas coordenadas Z sobre
um plano x-y. Superfcies tipo mesh so teis para visualizar matrizes demasiadamente
grandes para serem mostradas na forma numrica, ou para plotar funes de duas
variveis.
O primeiro passo para plotar uma funo de 2 variveis z=f(x,y) gerar matrizes X e
Y contendo linhas e colunas repetidas, respectivamente, para funcionarem como o
domnio da funo. A funo meshgrid transforma o domnio especificado por dois vetores
x y em duas matrizes X e Y. Essas matrizes ento so usadas para avaliar a funo de 2
variveis. Por exemplo, seja a funo:
_______________________________________________________________________________42
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
x=-pi:0.5:pi;
y=-pi:0.5:pi;
[Mx,My]=meshgrid(x,y);
Mz=cos(Mx).*sin(My);
mesh(Mx,My,Mz);

Figura 22

x=-pi:0.5:pi;
y=-pi:0.5:pi;
[Mx,My]=meshgrid(x,y);
Mz=cos(Mx).*sin(My);
mesh(Mx,My,Mz);
surf(Mx,My,Mz)

Figura 23

_______________________________________________________________________________43
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
[X,Y]=meshgrid(-8:0.5:8,-8:0.5:8);
r= sqrt(X.^2+Y.^2)+eps;
Z=sin(r)./r;
mesh(X,Y,Z)

Figura 24

[X,Y]=meshgrid(-8:0.5:8,-8:0.5:8);
r= sqrt(X.^2+Y.^2)+eps;
Z=sin(r)./r;
mesh(X,Y,Z)
surf(X,Y,Z)

Figura 25

_______________________________________________________________________________44
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
figure(2)
[X,Y]=meshgrid(-8:0.5:8,-8:0.5:8);
mesh(X,Y,3*sqrt(X.^2+Y.^2))

Figura 26

figure(3)
[X,Y]=meshgrid(-8:0.5:8,-8:0.5:8);
mesh(X,Y,3*sqrt(X.^2+Y.^2))
surf(X,Y,3*sqrt(X.^2+Y.^2))

Figura 27

_______________________________________________________________________________45
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
Tabela 9

x=-4*pi:0.1:4*pi;
y=-4*pi:0.1:4*pi;
plot3(cos(x),sin(y),(x+y))

Figura 28

_______________________________________________________________________________46
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
%% Equaes paramtricas
t=0:0.1:6*pi;
x=sqrt(t).*sin(2*t);
y=sqrt(t).*cos(2*t);
z=0.5*t;
plot3(x,y,z,'k','linewidth',2)
grid on
xlabel('x');
ylabel('y');
zlabel('z');

Figura 29
%% Malha e persianas verticais
x=-3:0.25:3;
y=-3:0.25:3;
[X,Y]=meshgrid(x,y);
Z=1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
meshz(X,Y,Z)
xlabel('x');
ylabel('y');
zlabel('z');

Figura 30

_______________________________________________________________________________47
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
13.5 Anotaes no Grfico
O MATLAB possui comandos de fcil utilizao para adicionar informaes em um
grfico:
Tabela 10

Por exemplo:
fplot('sin', [-pi pi])
title('Grfico da funo f(x)=seno(x), -pi<x<pi')
xlabel('x')
ylabel('f(x)')
grid

Figura 31

_______________________________________________________________________________48
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
14. POLINMIOS
Encontrar razes de um polinmio, isto , os valores para os quais o polinmio igual
a zero. No MATLAB, um polinmio representado por um vetor linha contendo seus
coeficientes em ordem decrescente. Por exemplo:

x 4 12 x 3 + 0 x 2 + 25 x + 116

introduzido como:
p=[1 -12 0 25 116]
p =
1

-12

25

116

14.1 Razes
Dada essa forma, as razes do polinmio so encontradas usando-se a funo
roots(p):
roots(p)
ans =
11.7473
2.7028
-1.2251 + 1.4672i
-1.2251 - 1.4672i

Dadas as razes tambm possvel construir o polinmio associado. O comando que


executa tal procedimento o comando poly, como exemplo:
>> p=[1 -12 0 25 116]
p =
1

-12

25

116

>> r=roots(p)
r =
11.7473
2.7028
-1.2251 + 1.4672i
-1.2251 - 1.4672i
>> p2=poly(r)
p2 =
1.0000

-12.0000

-0.0000

25.0000

116.0000

>>

_______________________________________________________________________________49
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
Calcular a raiz do polinmio
>> p=[1 0 -2 -5]

P ( x) = x 3 2 x 5

p =
1

-2

-5

>> r=roots(p)
r =
2.0946
-1.0473 + 1.1359i
-1.0473 - 1.1359i
>>

Por conveno o Matlab armazena as razes em vetores coluna.

14.2 Multiplicao
A multiplicao polinomial efetuada por meio da funo conv(que faz a convoluo
3
2
entre dois vetores). Consideremos o produto de dois polinmios a ( x) = x + 2 x + 3 x + 4 e

b( x) = x 3 + 4 x 2 + 9 x + 16 .
a=[1 2 3 4];
b=[1 4 9 16];
c=conv(a,b)
c =
1

20

50

Consideremos os polinmios
>> P=[1 2 3]

75

84

64

P ( x) = x 2 + 2 x + 3 e Q( x) = 4 x 2 + 5 x + 6

P =
1

>> Q=[4 5 6]
Q =
4

>> R=conv(P,Q)
R =
4

13

28

27

18

>>

_______________________________________________________________________________50
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
Nos devolve o resultado: 4 13 28 27 18. Isto

R ( x) = P ( x).Q( x) = 4 x 4 + 13x 3 + 28 x 2 + 27 x + 18
14.3 Adio
O MATLAB possui uma funo direta para somar polinmios:
a=[1 2 3 4];
b=[1 4 9 16];
d=a+b
d =
2

12

20

Quando dois polinmios forem de ordens diferentes, aquele que tiver menor ordem
ter de ser preenchido com coeficientes iguais a zero, a fim de torn-lo da mesma ordem
do polinmio de ordem mais alta.
Exemplo:
>> e= c+[0 0 0 d]
e=
1 6 20 52 81 96 84

14.4 Diviso
Consideremos o polinmio P ( x) = 4 x 3 + x 2 2 x + 3 e Q( x) = x 2 + 3 x + 6 .
>> P=[4 1 -2 3]
P =
4

-2

>> Q=[1 3 6]
Q =
1

>> [q r]=deconv(P,Q)
q =
4

-11

r =
7

69

Isto , q ( x ) = 4 x 11 quociente e r ( x ) = 7 x + 69 resto.

_______________________________________________________________________________51
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
14.5 Clculo de Polinmios
O comando que realiza o calculo dos valores de f(x) podem ser realizados atravs
do comando polyval.
x=linspace(-1,3);%% escolhe 100 pontos entre 1 e 3.
p=[1 4 -7 -10]; %%define o polinmio p(x)=x3+4x2-7x-10
v=polyval(p,x)
%%calcula p(x) nos valores armazenados em x e armazena o
resultado em v. O resultado pode ser representado graficamente usando-se:
plot(x,v)
grid

14.6 Derivada de Polinmios


Considere o seguinte polinmio P ( x) = 2 x 4 x 3 + 3 x 2 + 5 x + 9 , vamos derivar este
polinmio:
>> P=[2 -1 3 5 9]
P =
2

-1

>> polyder(P)
ans =
8

-3

>>

Isto P ' ( x ) = 8 x 3 x + 6 x + 5
3

14.7 Derivada de um Produto de Polinmios


Considere os seguintes polinmios: P ( x) = x 2 5 x + 9 e Q( x) = x 2 + x 1
>> P=[1 -5 9]
P =
1

-5

>> Q=[1 1 -1]


Q =
1

-1

>> polyder(P,Q)
ans =

_______________________________________________________________________________52
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
4

-12

14

>>

Nos devolve como resultado: 4 -12 6 14. Isto P ' ( x ) = 4 x 12 x + 6 x + 14


3

14.8 Derivada de um Quociente de Polinmios


2
Considere os seguintes polinmios: P ( x) = x 5 x + 9 e Q( x ) = x + 7

>> P=[1 -5 9]
P =
1

-5

>> Q=[1 7]
Q =
1

>> [n,d]=polyder(P,Q)
n =
1

14

-44

14

49

d =

>>
2
2
Isto n( x ) = x + 14 x 44 numerador e n( x ) = x + 14 x + 49 o denominador.

_______________________________________________________________________________53
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________
15. LISTA DE FUNES DO MATLAB

_______________________________________________________________________________54
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________55
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________56
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________57
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________58
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________59
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________60
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________61
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________62
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________63
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________64
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________65
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________66
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________67
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________68
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________69
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________70
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________71
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________72
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

_______________________________________________________________________________73
Clculo Numrico Utilizando Matlab

_______________________________________________________________________________

16. REFERNCIAS BIBLIOGRFICAS


[1].

S. J. Chapman. Programao em Matlab Para Engenheiros. Editora Cengage Learning, 2


Edio, 2010.

[2].

A. Gilat. Matlab Com Aplicaes em Engenharia. Editora Bookman, 2 Edio, 2006.

[3].

S. A. Vicente. Curso Introdutrio de Matlab 6.5. Apostila, Janeiro, 2003.

[4].

Matlab & Simulink, Apostila, Faculdade de Engenharia Industrial, 1994.

[5].

Matlab Curso Introdutrio, Apostila, Centro Brasileiro de Pesquisas Fsicas, 2002.

_______________________________________________________________________________74
Clculo Numrico Utilizando Matlab

Você também pode gostar