Sie sind auf Seite 1von 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

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
2
SUMRIO
1. INTRODUO 4
1.1 Vantagens do Matlab 4
1.2 Desvantagens do Matlab 5
2. O AMBIENTE MATLAB 5
2.1 Comand Window 6
2.2 Workspace 6
2.3 Current Directory 7
2.4 Command History 8
3. COMANDOS BSICOS E DECLARAES DE VARIVEIS 8
4. OPERAES ARITMTICAS 8
5. EXIBINDO DADOS DE SADA 9
5.1 O Comando disp 10
6. OPERADORES LGICOS 12
7. OPERADORES RELACIONAIS 12
8. CLCULO MATRICIAL 13
8.1 Elementos de uma Matriz 13
8.2 Soma e Subtrao 14
8.3 Multiplicao de uma Matriz por um Escalar 15
8.4 Multiplicao entre Matrizes 15
8.5 Diviso Direta de Matrizes 16
8.6 Potnciao 16
8.7 Transposta de uma Matriz 17
8.8 Determinante 17
8.9 Inversa da Matriz 18
8.10 Autovalores e Autovetores 18
8.11 Matriz escalonada reduzida 19
8.12 Posto de uma Matriz 19
8.13 Nmeros e Matrizes Complexas 20
8.14 Matriz diagonal ou diagonal de uma matriz 21
8.15 Matrizes Triangulares 21
8.16 Matriz Identidade 22
8.17 Matriz Composta por Elementos Unitrios 22
8.18 Matriz Nula (composta por elementos nulos) 23
8.19 Matriz Aleatria 23

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
3
9. GERANDO VETORES 24
9.1 O Comando linspace 25
10. ARQUIVOS M DE COMANDOS 26
11. CONTROLE DE FLUXO 28
11.1 Lao For 28
11.2 Lao While 29
11.3 Estrutura If-Else-End 30
11.4 Estrutura Switch-Case 32
12. ARQUIVOS M DE FUNES 33
13. GRFICOS NO MATLAB 35
13.1 Grficos 2-D 35
13.2 Estilos de Linhas e Smbolos 38
13.3 Coordenada Polar e Grfico de Barras 40
13.4 Grficos 3-D 42
13.5 Anotaes no Grfico 48
14. POLINMIOS 49
14.1 Razes 49
14.2 Multiplicao 50
14.3 Adio 51
14.4 Diviso 51
14.5 Clculo de Polinmios 52
14.6 Derivada de Polinmios 52
14.7 Derivada de um Produto de Polinmios 52
14.8 Derivada de um Quociente de Polinmios 53
15. LISTA DE FUNES DO MATLAB 54
16. REFERNCIAS BIBLIOGRFICAS 74













_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
4
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.

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
5
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.

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
6

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.

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
7
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.


_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
8
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.
Tabela 1 Comando Bsicos.
who Mostra as variveis do espao de trabalho
whos Mostra as variveis do espao de trabalho com detalhes
clear Limpa a memria do espao de trabalho
clc Limpa a tela
dir Mostra o contedo do diretrio que se encontra
cd Informa ou altera o diretrio corrente
what 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


_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
9

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,

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
10
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 Resultados Exemplo
format short 4 dgitos decimais (formato-padro) 12,3457
format long 14 dgitos decimais 12,34567890123457
format short e 5 dgitos mais expoente 1,2346e+001
format short g 5 dgitos no total, com ou sem expoente 12,346
format long e 15 dgitos mais expoente 1,234567890123457e+0001
format long g 15 dgitos no total, com ou sem expoente 12,3456789012346
format bank Formato monetrio 12,35
format hex Exibio hexadecimal de bits 4028b0fcd32f707a
format rat Razo aproximada entre inteiros pequenos 1000/81
5.1 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 9 1
7 2 4

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
11
% O comando disp utilizado para exibir a matriz A

disp(A)
5 9 1
7 2 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.




_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
12
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 (<=, >=, ~=).

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
13

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

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
14

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 2 3
4 5 6
7 8 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 2
3 4


B=A'

B =

1 3
2 4

C=A+B

C =

2 5
5 8

A adio e subtrao tambm definida quando um dos operandos for um escalar.
Exemplo:
D=C-2

D =

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
15

0 3
3 6


8.3 Multiplicao de uma Matriz por um Escalar
A

A =

1 2
3 4

2*A

ans =

2 4
6 8

D=3*A

D =

3 6
9 12

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 2
3 4

B

B =

1 3
2 4

A*B

ans =

5 11
11 25


_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
16
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 2
3 4

B=[5 6; 7 8]

B =

5 6
7 8

A\B

ans =

-3 -4
4 5

A/B

ans =

3.0000 -2.0000
2.0000 -1.0000

%%diviso de elemento por elemento
A./B

ans =

0.2000 0.3333
0.4286 0.5000

8.6 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 2
3 4

A^3

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
17
ans =

37 54
81 118

%% potenciao de elementos por elementos
A.^3

ans =

1 8
27 64

8.7 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 2
3 4

%% realiza a transposta da matriz A
A'

ans =

1 3
2 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 2 4 5 6
5 1 1 3 5

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
18
7 8 9 9 0
2 2 4 0 9
1 1 1 2 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.2489 0.0227 0.0157 -0.4079
-0.6218 -0.3799 0.1022 0.0707 1.6646
0.3991 0.1048 0.0201 0.0908 -1.2454
0.1747 0.0393 -0.0175 -0.1659 0.0830
-0.0332 -0.0175 -0.0367 0.0515 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 -1
-4 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.4472
-0.8944 0.8944

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
19
%% 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 2 4 5 6
5 1 1 3 5
7 8 9 9 0
2 2 4 0 9
1 1 1 2 3

rref(A)

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

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

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

A =

1 2 8
2 4 16
0 1 3

rref(A)

ans =

1 0 2
0 1 3
0 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

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
20
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 8
2 4 16
0 1 3

rank(A)

ans =

2

rref(A)

ans =

1 0 2
0 1 3
0 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 2.0000 + 6.0000i
3.0000 + 7.0000i 4.0000 + 8.0000i


Que produz o mesmo resultado que:
A= [1+5*i 2+6*i; 3+7*i 4+8*i]


_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
21
A =

1.0000 + 5.0000i 2.0000 + 6.0000i
3.0000 + 7.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 2 3 1 -1 4

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

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
22
A =

3 11 5
4 1 -3
6 2 1

%% matriz triangular superior
triu(A)

ans =

3 11 5
0 1 -3
0 0 1

%% matriz triangular inferior
tril(A)

ans =

3 0 0
4 1 0
6 2 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

eye(5,8)

ans =

1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 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)

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
23
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

ones(5,8)

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

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.276922984960890 0.823457828327293
0.706046088019609 0.046171390631154 0.694828622975817
0.031832846377421 0.097131781235848 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)

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
24

ans =

-0.432564811528221 0.287676420358549 1.189164201652103
-1.665584378238097 -1.146471350681464 -0.037633276593318
0.125332306474831 1.190915465642999 0.327292361408654


9. Gerando Vetores

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

x =

1 2 3 4 5 6 7 8

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 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 1.4000
1.6000 1.8000 2.0000

Columns 12 through 16

2.2000 2.4000 2.6000 2.8000 3.0000


%% 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.1135 1.1667 1.2094 1.2332 1.2320
1.2015 1.1391 1.0446


_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
25
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 1.0000
0.2000 1.0174
0.4000 1.0597
0.6000 1.1135
0.8000 1.1667
1.0000 1.2094
1.2000 1.2332
1.4000 1.2320
1.6000 1.2015
1.8000 1.1391
2.0000 1.0446
2.2000 0.9193
2.4000 0.7662
2.6000 0.5898
2.8000 0.3958
3.0000 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 5 4 3 2 1

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)


_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
26
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.



_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
27

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:



_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
28
Tabela 6 Comando de entrada,sada, depurao e interao com o usurio.
Comandos Descrio
disp(ans) Mostra os resultados sem identificar o nome das variveis
echo Controla a exibio dos comandos dos arquivos M na janela de comandos
Input Solicita ao usurio que fornea um dado de entrada
pause Suspende a execuo at que o usurio pressione alguma tecla
pause(n) Suspende a execuo por n segundos
waitforbuttonpress 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

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
29
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

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
30

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 de cadeiras desejadas: ');
preco=55;
custo=cadeiras*preco;
if cadeiras>5
custo=(1-20/100)*custo;
end
disp(custo)

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
31
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 Pontuao
A Superior a 8 em pelo menos uma das provas ou soma dos pontos superior a 14.
B Superior a 6 em pelo menos uma das provas ou soma dos pontos superior a 9.
C 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: ');

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
32
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')


_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
33
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.
( ) ( )
2
1 2
2
1 2
y y x x d + =

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
34
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.

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
35
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


_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
36

Figura 15 Grfico gerado aps a execuo do programa.

Exemplo:
1) Seja a funo ) (x sen e y
x
=

. Como seria seu grfico no intervalo [0 ;
1
e ]?
%%% 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.


_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
37
1) Seja a funo 3 9 ) (
3
+ = x x x f (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.
3 9 ) (
3
+ = x x x f
3
) ( x x g =
3 9 ) ( = x x h



_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
38
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% 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 --')


_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
39

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:

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
40



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*')



_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
41

Figura 20 Coordenadas polares.




Figura 21 Grficos de barras.




_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
42
%% 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:

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
43
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

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
44

[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



_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
45
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




_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
46
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


_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
47
%% 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

_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
48
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












_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
49
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: 116 25 0 12
2 3 4
+ + + x x x x
introduzido como:
p=[1 -12 0 25 116]

p =

1 -12 0 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 0 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

>>



_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
50
Calcular a raiz do polinmio 5 2 ) (
3
= x x x P
>> p=[1 0 -2 -5]

p =

1 0 -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
entre dois vetores). Consideremos o produto de dois polinmios 4 3 2 ) (
2 3
+ + + = x x x x a e
16 9 4 ) (
2 3
+ + + = x x x x b .
a=[1 2 3 4];
b=[1 4 9 16];
c=conv(a,b)

c =

1 6 20 50 75 84 64


Consideremos os polinmios 3 2 ) (
2
+ + = x x x P e 6 5 4 ) (
2
+ + = x x x Q
>> P=[1 2 3]

P =

1 2 3

>> Q=[4 5 6]

Q =

4 5 6

>> R=conv(P,Q)

R =

4 13 28 27 18

>>


_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
51
Nos devolve o resultado: 4 13 28 27 18. Isto
18 27 28 13 4 ) ( ). ( ) (
2 3 4
+ + + + = = x x x x x Q x P x R

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 6 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 3 2 4 ) (
2 3
+ + = x x x x P e 6 3 ) (
2
+ + = x x x Q .
>> P=[4 1 -2 3]

P =

4 1 -2 3

>> Q=[1 3 6]

Q =

1 3 6

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

q =

4 -11


r =

0 0 7 69

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



_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
52
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 9 5 3 2 ) (
2 3 4
+ + + = x x x x x P , vamos derivar este
polinmio:
>> P=[2 -1 3 5 9]

P =

2 -1 3 5 9

>> polyder(P)

ans =

8 -3 6 5

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

14.7 Derivada de um Produto de Polinmios

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

P =

1 -5 9

>> Q=[1 1 -1]

Q =

1 1 -1

>> polyder(P,Q)

ans =


_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
53
4 -12 6 14

>>
Nos devolve como resultado: 4 -12 6 14. Isto 14 6 12 4 ) ( '
2 3
+ + = x x x x P
14.8 Derivada de um Quociente de Polinmios

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

P =

1 -5 9

>> Q=[1 7]

Q =

1 7

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

n =

1 14 -44


d =

1 14 49

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














_______________________________________________________________________________
_______________________________________________________________________________
Clculo Numrico Utilizando Matlab
54
15. LISTA DE FUNES DO MATLAB



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

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, 2Edio, 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.

Das könnte Ihnen auch gefallen