apostila matlab

74
Universidade Federal de São João Del-Rei Campus Alto Paraopeba Disciplina: Cálculo Numérico Apostila de Matlab Prof. Alexandre Cândido Moreira Prof. Heber Tormentino de Sousa Agosto de 2010

Upload: johcarol

Post on 14-Jun-2015

867 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Apostila matlab

Universidade Federal de São João Del-Rei

Campus Alto Paraopeba

Disciplina: Cálculo Numérico

Apostila de Matlab

Prof. Alexandre Cândido Moreira

Prof. Heber Tormentino de Sousa

Agosto de 2010

Page 2: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

2

SUMÁRIO

1. INTRODUÇÃO 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 BÁSICOS E DECLARAÇÕES DE VARIÁVEIS 8

4. OPERAÇÕES ARITMÉTICAS 8

5. EXIBINDO DADOS DE SAÍDA 9

5.1 O Comando disp 10

6. OPERADORES LÓGICOS 12

7. OPERADORES RELACIONAIS 12

8. CÁLCULO MATRICIAL 13

8.1 Elementos de uma Matriz 13

8.2 Soma e Subtração 14

8.3 Multiplicação de uma Matriz por um Escalar 15

8.4 Multiplicação entre Matrizes 15

8.5 Divisão Direta de Matrizes 16

8.6 Potênciação 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 Números 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 Unitários 22

8.18 Matriz Nula (composta por elementos nulos) 23

8.19 Matriz Aleatória 23

Page 3: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico 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 Laço For 28

11.2 Laço While 29

11.3 Estrutura If-Else-End 30

11.4 Estrutura Switch-Case 32

12. ARQUIVOS M DE FUNÇÕES 33

13. GRÁFICOS NO MATLAB 35

13.1 Gráficos 2-D 35

13.2 Estilos de Linhas e Símbolos 38

13.3 Coordenada Polar e Gráfico de Barras 40

13.4 Gráficos 3-D 42

13.5 Anotações no Gráfico 48

14. POLINÔMIOS 49

14.1 Raízes 49

14.2 Multiplicação 50

14.3 Adição 51

14.4 Divisão 51

14.5 Cálculo de Polinômios 52

14.6 Derivada de Polinômios 52

14.7 Derivada de um Produto de Polinômios 52

14.8 Derivada de um Quociente de Polinômios 53

15. LISTA DE FUNÇÕES DO MATLAB 54

16. REFERÊNCIAS BIBLIOGRÁFICAS 74

Page 4: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

4

1. INTRODUÇÃO

MATLAB (abreviatura de Matrix Laboratory – Laboratório de Matrizes) é um

programa d ecomputador de uso específico, otimizado para executar cálculos científicos e

de engenharia. Ele nasceu como um programa para operações matemáticas sobre

matrizes, mas ao longo dos anos transformou-se em um sistema computacional flexível

capaz de resolver essencialmente qualquer problema técnico.

Seus elementos básicos são matrizes que não requerem dimensionamento. Ele

permite implementar e resolver problemas matemáticos muito mais rápida e

eficientemente que através de outras linguagens como C, Basic, Pascal ou Fortran.

O MATLAB possui uma família de aplicativos específicos (“toolboxes”), que são

coleções de funções usadas para resolver determinados problemas tais como:

otimização, manipulação algébrica, redes neurais, processamento de sinais, simulação de

sistemas dinâmicos, entre outros.

Provavelmente, a característica mais importante do MATLAB é a sua extensibilidade,

que permite que engenheiros, matemáticos cientistas, e até mesmo você, contribuam

para o enriquecimento.

1.1 Vantagens do Matlab O Matlab tem muitas vantagens, em comparação com linguagens computacionais

convencionais, para resolver problemas técnicos. Entre elas, temos:

a) Facilidade de uso: o Matlab é uma linguagem interpretada, assim como muitas

versões de Basic.

b) Independência de Plataforma: tem suporte em diferentes sistemas

computacionais: Windows XP/Vista, Linux, diversas versões de Unix e

Macintosh.

c) Funções Predefinidas: conta com uma grande biblioteca de funções

predefinidas, que apresentam soluções testadas e empacotadas para diversas

tarefas técnicas básicas

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 saída gráfica compatível

com o computador que executa o Matlab. Este recurso torna o Matlab uma

ferramenta excepcional para visualização de dados técnicos.

Page 5: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

5

e) Interface Gráfica de Usuário: tem ferramentas que permitem a um

programador construir interativamente uma interface gráfica de usuário (GUI –

Graphical User Interface) para seus programas. Com este recurso, o

programador é capaz de projetar programas sofisticados de análise de dados,

os quais podem ser operados por usuários 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

diminuído pela estruturação apropriada dos programas Matlab para otimizar o

desempenho do código vetorizado.

A segunda desvantagem é o custo: uma cópia 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 coleção de valores de dados organizados em linhas e colunas, determinada por um

nome único. Até mesmo escalares são tratados como matrizes em Matlab, eles são

simplesmente matrizes co apenas uma linha e uma coluna.

No Matlab, os arquivos de comando tem extensão .m (M-files) e os arquivos de

dados binários default tem extensão .mat (Mat-files).

No Windows, o Matlab é instalado com os seguintes diretórios:

BIN contém os programas binários do Matlab;

DEMOS demonstração em HTML

EXTERN suporte às linguagens FORTRAN, C e C++

HELP contém arquivos de auxílio e documentação do Matlab

JAVA suporte à linguagem Java

NOTEBOOK suporte à geração de documentação no formato MS-Word

TEMP diretório temporário

TOLLBOX “toolboxes” do Matlab

WORK diretório de trabalho.

Page 6: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico 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 instruções) são digitados;

• As operações podem ser realizadas e seus resultados são mostrados;

• Também é nessa janela que se pode executar um arquivo m-file;

• O prompt “>>” indica que o programa está pronto aguardando uma instrução;

• Com as teclas “↑” (seta para cima) e “↓” (seta para baixo) é possível recuperar

todos os comandos já digitados.

2.2 Workspace

Figura 2 – Janela “Workspace”.

Page 7: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

7

• É a área na qual são exibidas todas as variáveis definidas na área de trabalho;

• Essa janela possui quatro colunas indicando o nome, dimensão, número de bytes e

a classe de cada variável;

• As variáveis podem ser editadas e visualizadas nessa própria janela, basta dar um

click-duplo para editá-las;

Há um menu flutuante que é possível:

• Open – abrir a janela;

• Graph – criar gráficos a partir dos dados contidos na variável;

• Select All – selecionar todas as variáveis;

• Import Data – importar variáveis de um arquivo para o workspace;

• Save Selection As – salvar as variáveis selecionadas em um arquivo;

• Save Workspace As – salvar todas as variáveis do workspace em um arquivo;

• Copy – copiar a variável para a área de transferência de dados do Windows;

• Delete – apagar a variável do workspace;

• Clear Workspace – apagar todas as variáveis do workspace;

• Rename – renomear a variável.

2.3 Current Directory

Área onde é exibida uma lista dos arquivos contidos no diretório corrente.

Figura 3 – Janela “Current Directory”.

Page 8: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

8

2.4 Command History

Área onde ficam armazenadas todas as instruções executadas no MATLAB.

Figura 4 – Janela “Command History”.

3. COMANDOS BÁSICOS E DECLARAÇÕES DE VARIÁVEIS

Para iniciar o nosso trabalho no MATLAB é necessário aprender alguns comandos

essenciais da janela de trabalho (command window) e na seqüência vamos aplicá-los.

Tabela 1 – Comando Básicos. who Mostra as variáveis do espaço de trabalho

whos Mostra as variáveis do espaço de trabalho com detalhes clear Limpa a memória do espaço de trabalho clc Limpa a tela dir Mostra o conteúdo do diretório que se encontra cd Informa ou altera o diretório corrente

what Exibe os arquivos Matlab contidos no diretório

4. OPERAÇÕES ARITMÉTICAS As expressões podem ser construídas usando os operadores aritméticos usuais:

Tabela 2 – Operadores aritméticos. + Adição

- Subtração

* Multiplicação

/ Divisão

^ Potenciação

Page 9: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

9

Figura 5 – Exemplos de operações aritméticas.

5. EXIBINDO DADOS DE SAÍDA

O formato numérico exibido na tela pode ser modificado utilizando-se o comando

format , que afeta somente o modo como as matrizes são mostradas, e não como elas

são computadas ou salvas.

Se todos os elementos das matrizes são 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 não é inteiro exato, existem várias

possibilidades de formatar a saída. O formato "default ", chamado de formato “short”,

Page 10: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

10

mostra aproximadamente 4 dígitos decimais ou usam notação científica. 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-padrão 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

seleção da opção “File>>Preferences>>Command Window”.

Alternativamente, o usuário pode acionar o comando format para alterar as

preferências. Este comando altera o formato-padrão de acordo com os valores dados na

Tabela 3. O formato-padrão pode ser modificado para exibir mais dígitos significativos,

para forçar a exibição em notação científica, exibir dados com dois dígitos decimais ou

então eliminar linhas adicionais para que mais dados sejam visíveis por vez na Janela de

comandos.

Tabela 3 – Formatos de exibição de saída. Comando de Formatação Resultados Exemplo format short 4 dígitos decimais (formato-padrão) 12,3457 format long 14 dígitos decimais 12,34567890123457 format short e 5 dígitos mais expoente 1,2346e+001 format short g 5 dígitos no total, com ou sem expoente 12,346 format long e 15 dígitos mais expoente 1,234567890123457e+0001

format long g 15 dígitos no total, com ou sem expoente 12,3456789012346

format bank Formato monetário 12,35

format hex Exibição hexadecimal de bits 4028b0fcd32f707a

format rat Razão aproximada entre inteiros pequenos 1000/81

5.1 O Comando disp O comando disp exibe o conteúdo de uma variável, mas, ocultando o nome da

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

disp (nome de uma variável) ou dsisp (‘string de texto’)

Toda vez que um comando disp é executado, a saída que ele produz é mostrada

numa nova linha. Por exemplo:

% A variável A é inicializada com uma matriz 2x3 A=[5 9 1; 7 2 4] A = 5 9 1 7 2 4

Page 11: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico 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 mensa gem disp('O problema não possui solução') O problema não possui solução

O código abaixo ensina como utilizar os comandos input e disp em uma rotina para

calcular a soma entre 3 números. 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.

Page 12: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

12

6. OPERADORES LÓGICOS

Um operador lógico examina senteças verdadeiras/falsas e produz resultados

verdadeiro (1) ou falso (0), de acordo com a funcionalidade do operador. Por exemplo, o

operador lógico AND resulta 1 (verdadeiro) se, e somente se, todas as senteças

envolvidas na operação forem verdadeiras. Tanto os operadores lógicos quanto

relacionais podem ser utlizados em expressões matemáticas ou, como será visto adiante,

serem combinados a outros comando para controlar ou tomar decisão sobre o fluxo do

programa.

Tabela 4 – Operadores lógicos. Símbolo Operador

& e

| ou

~ não

7. OPERADORES RELACIONAIS

O operador relacional compara dois números determinando se oresultado da sentça

de comparação é verdadeiro (V) ou falso (F). Por exemplo (5<8 �V), ou seja, se a

senteça for verdadeira o valor retornado é 1. Caso contrário, o valor retornado é 0.

Tabela 5 – Operadores lógicos. Símbolo 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 espaço entre eles. Isso porque um

único sinal de igualdade representa o operador de atribuição. Os demais operadores

duplos (representados por dois caracteres) também não possuem espaços entre os

caracteres (<=, >=, ~=).

Page 13: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

13

Figura 8 – Exemplos com operadores relacionais.

8. CÁLCULO MATRICIAL

As matrizes em Matlab podem ter uma ou mais dimensões. Matrizes unidimensionais

podem ser visualizadas como uma série 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 criação de matrizes com tantas dimensões quanto necessário

para um dado problema. Essas matrizes têm um índice para cada dimensão, e um

elemento individual é selecionado pela especificação de um valor para cada índice.

8.1 Elementos de uma Matriz

Elementos de uma matriz podem ser qualquer expressão 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 parênteses. No exemplo anterior, para referenciar o segundo elemento do

vetor x:

x(2) ans = 4.3266

Page 14: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico 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 referência é sempre na forma matriz(linha,coluna).

8.2 Soma e Subtração

Os símbolos + e - denotam adição e subtração de matrizes. A operação é definida

sempre que as matrizes tenham a mesma dimensão. 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 adição e subtração também é definida quando um dos operandos for um escalar.

Exemplo:

D=C-2 D =

Page 15: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

15

0 3 3 6

8.3 Multiplicação 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 Multiplicação entre Matrizes

A multiplicação de matrizes é indicada por "*". A multiplicação A*B é definida

somente se a segunda dimensão de A for igual à primeira dimensão de B, ou seja, o

número de colunas da primeira matriz for igual ao n úmero de linhas da segunda

matriz . Assim a multiplicação pode ser executada como:

A A = 1 2 3 4 B B = 1 3 2 4

A*B ans = 5 11 11 25

Page 16: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

16

8.5 Divisão Direta de Matrizes Existem dois símbolos para divisão de matrizes no MATLAB "\" e "/". Se A é uma

matriz quadrada não singular, então 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 %%divisão de elemento por elemento A./B ans = 0.2000 0.3333 0.4286 0.5000

8.6 Potênciação

A expressão A^p eleva A à p-ésima potência e é definida se A é matriz quadrada e

p um escalar. Se p é um inteiro maior do que um, a potenciação é computada como

múltiplas multiplicações.

Por exemplo:

A A = 1 2 3 4 A^3

Page 17: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

17

ans = 37 54 81 118 %% potenciação de elementos por elementos A.^3 ans = 1 8 27 64

8.7 Transposta de uma Matriz

O caracter ' (apóstrofe) 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 números complexos, z’ é o conjugado c omplexo 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

Page 18: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico 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 função eig( ) calcula os autovetores e os autovalores de A, respectivamente.

Existem funções que retornam dois ou mais valores. Nestes casos, os valores de saída

devem estar entre colchetes [ ] e separados por vírgula. 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 canônica de A menos uma matriz diagonal

com os autovalores de A na diagonal principal. As colunas da matriz V são os autovetores

de A;

[V,D] = eig(A) %% autovetores associados a matriz A V = 0.4472 0.4472 -0.8944 0.8944

Page 19: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico 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 através 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 possível 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 não-nulas e infinitos valores para z. O número de linhas não-nulas pode ser

encontrado através do comando rank(matriz) , ou seja, o comano “rank” encontra o

Page 20: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

20

“posto” da matriz, que nada mais é do que a quantidade máxima 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 Números e Matrizes Complexas

Números complexos são permitidos em todas operações e funções no MATLAB. Os

números complexos são introduzidos usando-se as funções especiais i e j. Por exemplo

z= 3 + 4*i z = 3.0000 + 4.0000i %% ou podemos escrever também z= 3 +4*j z = 3.0000 + 4.0000i

As seguintes declarações 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]

Page 21: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico 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 q ual 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, então diag(A) é um vetor cujos componentes são 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]

Page 22: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico 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 dimensão n x m), a

função 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 Unitários

No caso de ser necessário a obtenção de uma matriz composta apenas por

elementos unitários, temos que:

ones(n,m)

Page 23: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico 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 manipulação matricial, poderá ser útil a construção 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 Aleatória A elaboração de testes a qualquer programa desenvolvido no MATLAB, ou para

utilização de um outro qualquer modo, poderá fazer uso de matrizes compostas por

números aleatórios uniformemente distribuídos no intervalo entre 0 e 1:

rand(n,m)

rand(3,3) ans = 0.171186687811562 0.276922984960890 0.823457 828327293 0.706046088019609 0.046171390631154 0.694828 622975817 0.031832846377421 0.097131781235848 0.317099 480060861

No caso de se pretender uma distribuição normal dos números aleatórios

compreendidos entre 0 e 1, a função a utilizar será:

randn(n,m) randn(3,3)

Page 24: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

24

ans = -0.432564811528221 0.287676420358549 1.189164 201652103 -1.665584378238097 -1.146471350681464 -0.037633 276593318 0.125332306474831 1.190915465642999 0.327292 361408654

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 início :passo :fim . O valor de passo pode ser qualquer

número real ( ≅ 0). A notação ( : ) é muito útil para gerar tabelas e plotar gráficos, 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

Page 25: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico 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 impõe um incremento de pi/4.

%% criamos um vetor que começa em 0 e vai até PI, c om um passo de PI/4 y = 0 : pi/4 : pi y = 0 0.7854 1.5708 2.3562 3.1416

Também são possíveis incrementos negativos:

%% criamos um vetor que começa em 6 e vai até 1, co m um passo de -1 z = 6 : -1 : 1 z = 6 5 4 3 2 1

9.1 O Comando linspace

Pode-se, também, gerar vetores linearmente espaçados fazendo uso da função

linspace . Por exemplo:

%% criamos 6 pontos igualmente espaçados 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 espaçados entre 0 e 10. k1=linspace(0,10,5)

Page 26: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

26

k1 = 0 2.5000 5.0000 7.5000 10.0000

Também é possível criar um espaçamento logarítmico entre os pontos do vetor. Isto

é possível através 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 também pode executar uma seqüência de

comandos que está armazenada num arquivo. Estes dois modos formam um ambiente

interpretativo. Os arquivos que contém declarações MATLAB são chamados M-files

porque usam a extensão “*.m” . Por exemplo, o arquivo senoide.m contém declarações

MATLAB para o cálculo e desenho de uma função senoidal com amplitude unitária,

freqüência de 1000 Hz e ângulo de fase igual a zero:

Figura 9 – Arquivo .m para o calculo de uma função seno com A=1, f=1000Hz.

Page 27: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

27

Figura 10 – Resultado após a execução do arquivo “senoide.m”.

Um M-file consiste de uma seqüência de declarações MATLAB normais, podendo

incluir referencias à outros M-files. Um M-file pode chamar ele próprio 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 funções . Arquivos scripts automatizam uma seqüência longa de comandos.

Arquivos de função permite criar novas funções às existentes. Ambos, scripts e funções

são arquivos texto tipo ASCII.

Figura 11 – Arquivos .m de scripts e funções.

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

arquivo não são mostrados na tela. O comando echo permite visualizar o comando a

medida que ele vai sendo executado. Isso é especialmente útil na depuração de um

programa ou para a confecção de um programa demonstrativo.

Em virtude da grande utilidade dos arquivos de comandos o MATLAB possui várias

funções apropriadas para o uso em arquivos M. Essas funções são:

Page 28: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

28

Tabela 6 – Comando de entrada,saída, depuração e interação com o usuário. Comandos Descrição

disp(ans) Mostra os resultados sem identificar o nome das variáveis echo Controla a exibição dos comandos dos arquivos M na janela de comandos Input Solicita ao usuário que forneça um dado de entrada pause Suspende a execução até que o usuário pressione alguma tecla

pause(n) Suspende a execução por n segundos

waitforbuttonpress Suspende a execução até o usuário pressione uma tecla ou um botão do mouse.

11. CONTROLE DE FLUXO Os comandos que controlam o fluxo especificam a ordem em que a computação é

feita. No MATLAB estes comandos são semelhantes aos usados na linguagem C, mas

com uma estrutura diferente (mais simples).

11.1 Laço For

O laço for é o controlador de fluxo mais simples e usado na programação MATLAB.

Em geral:

for x = <valor inicial >:<incremento >:<valor final >

comandos

end

O laço for repete as instruções dentro do laço até que o índice contador do laço

alcance a condição final:

for i=[1,2,3,4] disp(i^2) end 1 4 9 16

(Observe o uso da função disp, que exibe na tela o conteúdo do seu argumento). O laço

for , tal como o bloco if , deve ser terminado com a instrução end . Este laço 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

Page 29: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

29

1 4 9 16

O laço for possibilita que uma série de comandos seja repetida por um número de

vezes fixo e pré-definido . O comando end é usado como limite inferior do corpo do laço.

Exemplos:

1) Calcular a tabuada do número 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 números pares de 0 a 100: soma=0; for n=0:2:10 soma=soma+n; end disp(soma)

3) Calcular o fatorial de um número n: n=input(‘Digite um valor para calcular o fatorial: ‘) ; fatorial=1; for a=1:n fatorial=fatorial*a; end disp(fatorial)

11.2 Laço While Ao contrário do Laço For, que executa um grupo de comandos um número fixo de

vezes, o laço while executa um grupo de comandos um número indefinido de vezes. O

laço while é executado enquanto a condição expr for verdadeira:

x=1; while 1+x > 1 x = x/2; end x x = 1.1102e-16

A estrutura geral é:

while expressão

comandos

end

Page 30: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

30

Calcular o fatorial de um número 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 série com 50 termos:

%Cálculo da Série 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 situações, as seqüências de comandos têm de ser executadas

condicionalmente, com base em um teste relacional. Essa lógica é implementada por

meio de uma das diversas formas da estrutura if-else-end. A mais simples é:

if expressão comandos

end

Os comandos entre as instruções if e end são executados se todos os elementos na

expressão forem Verdadeiros.

Exemplo:

Calcular o desconto de 20% para um número 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)

Page 31: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

31

Outra forma de usar a estrutura é:

if expressão comandos executados se Verdadeiro

else comandos executados se Falso

end

Exemplos:

1) Dado qualquer distância que um veículo deve percorrer (valor real em km), a

capacidade do tanque de combustível (valor real em litros) e a média de consumo de

combustível do veículo (valor real em km/litros). Supondo que o tanque estará cheio na

partida, mostrar umas das mensagens:

DEVE HAVER REABASTECIMENTO

OU

NÃO DEVE HAVER REABASTECIMENTO

% DISTÂNCIA % d=input( 'Digite a distância a ser percorrida: ' ); mc=15; %media de consumo ct=45; %capacidade do tanque if mc*ct>=d disp( 'Não deve haver reabastecimento' ) else disp( 'Deve haver reabastecimento' ) end

Testar para 780 km e 600 km

2) Os funcionários contratados pela prefeitura de uma cidade são classificados em 3

(três) níveis conforme a pontuação obtida em 2 (duas) provas aplicadas de acordo com o

seguinte critério:

Tabela 7 – Dados exemplo 2. Nível Pontuação

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 pontuação é um valor real de 0 a 10. Desenvolva um programa que

receba 2 (duas) notas de um funcionário e mostre como resposta o nível em que está

classificado.

%Classificação de Funcionários nota1=input( 'Digite a primeira nota: ');

Page 32: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

32

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

11.4 Estrutura Switch-Case

Essa estrutura funciona como uma chave seletora, escolhendo a expressão correta

para executar os comandos.

O comando switch é utilizado quando desejamos selecionar (chavear)

condicionalmente expressões porém, na forma de lista. O formato geral do comando

switch é:

switch expressão

case valor 1

......... grupo de comandos

case valor 2

......... grupo de comandos

case valor 3

......... grupo de comandos

otherwise

......... grupo de comandos

end

1) Faça um programa que o usuário possa digitar qualquer mês do ano e como resultado

seja mostrado o número de dias do mês 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','Outubr o','Dezembro'} disp('31 dias') case {'Fevereiro'} disp('28 ou 29 dias') case {'Abril','Junho','Setembro','Novembro'} disp('30 dias')

Page 33: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

33

12. ARQUIVOS M DE FUNÇÕES

É 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

função é uma caixa preta.

Figura 12 – Princípio de funcionamento de uma função.

O Matlab, como outras linguagens de programação, possui duas formas de criação

de programas: roteiro (script) e função (function). Na aula passada, vimos um exemplo

prático de criação de um roteiro que executava uma seqüência de comandos Matlab para

o ajuste de curvas (linear, polinomial e não-linear). Quando um programa executa uma

seqüência de comandos que pode ou não retornar parâmetros na janela de comandos do

Matlab, então esse programa denomina-se “roteiro” no Matlab. Em inglês, roteiro é

chamado script, termo esse que também é usado na língua portuguesa para descrever

uma seqüência de eventos.

A primeira linha executável no arquivo deve ser a linha de declaração da função. De

outro modo, o MATLAB tratará o arquivo como uma rotina. A linha de declaração de uma

função:

• Define o arquivo como uma função (diferenciando-o de uma rotina);

• Define o nome da função;

• Define o número e a ordem das variáveis de entrada, além de especificar o que a

função irá retornar (variáveis de saída).

O formato característico da linha de declaração de uma função é:

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

Exemplo:

1) Montar um programa que realize o cálculo da distância entre dois pontos (x1, y1) e

(x2, y2) em um sistema de coordenadas cartesianas.

( ) ( )212

212 yyxxd −+−=

Page 34: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

34

No caso, vamos criar um programa principal chamado distancia e através deste

programa vamos chamar a função dist2.m, na qual estará implementada a foruma acima.

Passo 1: Criando a função:

Figura 13 – Implementação da Função “dist2”.

Em um m.File implementamos o código da função. Lembre-se este arquivo .m deve

ser salvo com o nome da função no caso dist2.m.

Passo 2:

Criando o programa principal:

%% Programa distancia entre pontos %% %% o programa principal chama a função dist2 para o calculo %% disp('Calculando a distância 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 distância entre os potnos A e B é %f\n:' ,resp);

Figura 14 – Programa em execução.

Page 35: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

35

13. GRÁFICOS NO MATLAB

Gráficos são ferramentas poderosas quando se deseja interpretar visualmente os

resultados. Um recurso especialmente interessante nas engnharias e demais ciências

exatas, onde o MATLAB encontra as maiores aplicações.

O comando plot é utilizado para criação de gráficos bidimensionais. A forma mais

simples desse comando é:

plot (x,y)

Cada um dos argumentos x e y deve ser um vetor. Além disso, os dois vetores

devem possuir a mesma quantidade de elementos. Ao executar o omando plot, é gerada

uma saída na janela Figure Window . Caso a janela Figure Window esteja fechada, ela

será aberta automaticamente após a execução do comando.

13.1 Gráficos 2-D Os resultados apresentados a seguir foram obtidos com o auxílio do “software” de

simulação PSCAD/EMTDC, no qual foram implementadas distintas situações de carga e

de tensão de alimentação para averiguar os efeitos da conexão das cargas especiais

modeladas no SEP.

Exemplo:

%% plotar a função 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 gráfico 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( 'Gráfico da Função seno' ); %% insere título no grafico legend( 'Amplitude = 1' , 'Amplitude = 2' ); %%insere legenda no gráfico

Page 36: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

36

Figura 15 – Gráfico gerado após a execução do programa.

Exemplo:

1) Seja a função )(xseney x ⋅= − . Como seria seu gráfico no intervalo [0 ; π⋅1e ]?

%%% Gráfico da função 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( 'gráfico 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 máximo local' ); %%disponibiliza ao usuario marcar o ponto no grafico

Figura 16 – Gráfico gerado após a execução do programa.

Page 37: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

37

1) Seja a função 39)( 3 +−= xxxf (livro, pg.31). Como seria seu gráfico no intervalo [-4 ,

3]?

%%% Gráfico da função 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{ gráfico 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 Y MAX] %%\bf negrito{'texto'}, \it italico{'texto'}; %%\fontname{arial}

Figura 17 – Gráfico da função x^3-9*x+3.

2) Utilizando o processo de ii), pg. 33 livro, vamos isolar a função f(x) e obter a

equação equivalente g(x)=h(x) e esboçar o gráfico das funções g(x) e h(x) no

mesmo eixo cartesiano e localizar os pontos x onde as duas curvas se interceptam.

39)( 3 +−= xxxf

3)( xxg =

39)( −= xxh

Page 38: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

38

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Gráfico das funções 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 az ul 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 ve rmelho %% 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 Y MAX]

Figura 18 – Gráficos das funções g(x)=x^3 e h(x)=9x-3.

13.2 Estilos de Linhas e Símbolos

Os tipos de linhas, símbolos e cores usados para plotar gráficos podem ser

controlados se os padrões não são satisfatórios. 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 --' )

Page 39: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

39

Figura 19 – Plotando gráficos com marcadores e linha pontilhada, detalhe comando “subplot”.

Comando subplot = Gera vários eixos em uma mesma janela.

Sintaxe:

subplot(m,n,p)

Parâmetros de entrada:

m= número de eixos na vertical (número de linhas).

n=Número de eixos na horizontal (número de colunas).

p=Índice do eixo corrente

Outros tipos de linhas, pontos e cores também podem ser usados:

Page 40: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

40

13.3 Coordenada Polar e Gráfico de Barras

polar(theta,r,fmt) plota em coordenadas polares o ângulo theta , em radianos, r que é

a variação radial linear, e fmt é a cadeia de caracteres contendo a descrição do tipo de

curva a ser traçado (como o plot);

%% Gerando gráficos em coordenadas polares theta=-2*pi:0.1:2*pi; rho=1:126; polar(theta,rho, 'r*' )

Page 41: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

41

Figura 20 – Coordenadas polares.

Figura 21 – Gráficos de barras.

Page 42: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

42

%% Gerando gráficos 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 sin o' ); 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 Gráficos 3-D

O MATLAB possui muitos recursos para visualização de dados em 3D. Este item

representa as principais funções relacionadas a este tópico.

Estes são alguns comandos para plotar gráficos tridimensionais e contornos.

Tabela 8 – Comandos para plotar gráficos 3-D.

O MATLAB define uma superfície do tipo mesh (rede) pelas coordenadas Z sobre

um plano x-y. Superfícies tipo mesh são úteis para visualizar matrizes demasiadamente

grandes para serem mostradas na forma numérica, ou para plotar funções de duas

variáveis.

O primeiro passo para plotar uma função de 2 variáveis z=f(x,y) é gerar matrizes X e

Y contendo linhas e colunas repetidas, respectivamente, para funcionarem como o

domínio da função. A função meshgrid transforma o domínio especificado por dois vetores

x y em duas matrizes X e Y. Essas matrizes então são usadas para avaliar a função de 2

variáveis. Por exemplo, seja a função:

Page 43: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico 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

Page 44: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico 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

Page 45: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico 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

Page 46: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico 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

Page 47: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

47

%% Equações paramétricas 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

Page 48: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

48

13.5 Anotações no Gráfico O MATLAB possui comandos de fácil utilização para adicionar informações em um

gráfico:

Tabela 10

Por exemplo: fplot( 'sin' , [-pi pi]) title( 'Gráfico da função f(x)=seno(x), -pi<x<pi' ) xlabel( 'x' ) ylabel( 'f(x)' ) grid

Figura 31

Page 49: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

49

14. POLINÔMIOS

Encontrar raízes de um polinômio, isto é, os valores para os quais o polinômio é igual

a zero. No MATLAB, um polinômio é representado por um vetor linha contendo seus

coeficientes em ordem decrescente. Por exemplo: 11625012 234 +++− xxxx é

introduzido como:

p=[1 -12 0 25 116] p = 1 -12 0 25 116

14.1 Raízes Dada essa forma, as raízes do polinômio são encontradas usando-se a função

roots(p) :

roots(p) ans = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i

Dadas as raízes também é possível construir o polinômio 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 >>

Page 50: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

50

Calcular a raiz do polinômio 52)( 3 −−= xxxP >> 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 convenção o Matlab armazena as raízes em vetores coluna.

14.2 Multiplicação A multiplicação polinomial é efetuada por meio da função conv(que faz a convolução

entre dois vetores). Consideremos o produto de dois polinômios 432)( 23 +++= xxxxa e

1694)( 23 +++= xxxxb .

a=[1 2 3 4]; b=[1 4 9 16]; c=conv(a,b) c = 1 6 20 50 75 84 64

Consideremos os polinômios 32)( 2 ++= xxxP e 654)( 2 ++= xxxQ

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

Page 51: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

51

Nos devolve o resultado: 4 13 28 27 18. Isto é 182728134)().()( 234 ++++== xxxxxQxPxR

14.3 Adição O MATLAB possui uma função direta para somar polinômios:

a=[1 2 3 4]; b=[1 4 9 16]; d=a+b d = 2 6 12 20

Quando dois polinômios 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 polinômio de ordem mais alta.

Exemplo:

>> e= c+[0 0 0 d] e= 1 6 20 52 81 96 84

14.4 Divisão

Consideremos o polinômio 324)( 23 +−+= xxxxP e 63)( 2 ++= xxxQ .

>> 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 é, 114)( −= xxq quociente e 697)( += xxr resto .

Page 52: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

52

14.5 Cálculo de Polinômios O comando que realiza o calculo dos valores de f(x) podem ser realizados através

do comando polyval .

x=linspace(-1,3); %% escolhe 100 pontos entre –1 e 3. p=[1 4 -7 -10]; %%define o polinômio p(x)=x3+4x2-7x-10 v=polyval (p,x) %%calcula p(x) nos valores armazenados em x e armaz ena o resultado em v. O resultado pode ser representado g raficamente usando-se: plot(x,v) grid

14.6 Derivada de Polinômios

Considere o seguinte polinômio 9532)( 234 +++−= xxxxxP , vamos derivar este

polinômio:

>> P=[2 -1 3 5 9] P = 2 -1 3 5 9 >> polyder(P) ans = 8 -3 6 5 >>

Isto é 5638)(' 23 ++−= xxxxP

14.7 Derivada de um Produto de Polinômios

Considere os seguintes polinômios: 95)( 2 +−= xxxP e 1)( 2 −+= xxxQ

>> P=[1 -5 9] P = 1 -5 9 >> Q=[1 1 -1] Q = 1 1 -1 >> polyder(P,Q) ans =

Page 53: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

53

4 -12 6 14 >>

Nos devolve como resultado: 4 -12 6 14. Isto é 146124)(' 23 ++−= xxxxP

14.8 Derivada de um Quociente de Polinômios

Considere os seguintes polinômios: 95)( 2 +−= xxxP e 7)( += xxQ

>> 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 é 4414)( 2 −+= xxxn numerador e 4914)( 2 ++= xxxn o denominador.

Page 54: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

54

15. LISTA DE FUNÇÕES DO MATLAB

Page 55: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

55

Page 56: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

56

Page 57: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

57

Page 58: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

58

Page 59: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

59

Page 60: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

60

Page 61: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

61

Page 62: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

62

Page 63: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

63

Page 64: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

64

Page 65: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

65

Page 66: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

66

Page 67: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

67

Page 68: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

68

Page 69: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

69

Page 70: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

70

Page 71: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

71

Page 72: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

72

Page 73: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

73

Page 74: Apostila matlab

_______________________________________________________________________________

_______________________________________________________________________________ Cálculo Numérico Utilizando Matlab

74

16. REFERÊNCIAS BIBLIOGRÁFICAS

[1]. S. J. Chapman. “Programação em Matlab Para Engenheiros”. Editora Cengage Learning, 2ª Edição, 2010.

[2]. A. Gilat. “Matlab Com Aplicações em Engenharia”. Editora Bookman, 2° Edição, 2006.

[3]. S. A. Vicente. “Curso Introdutório de Matlab 6.5”. Apostila, Janeiro, 2003.

[4]. Matlab & Simulink, Apostila, Faculdade de Engenharia Industrial, 1994.

[5]. Matlab Curso Introdutório, Apostila, Centro Brasileiro de Pesquisas Físicas, 2002.