apostila matlab

Upload: bortho10

Post on 02-Mar-2016

4 views

Category:

Documents


0 download

TRANSCRIPT

  • 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= 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 = :: 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 n5 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.

    ( ) ( )212212 yyxxd +=

  • _______________________________________________________________________________

    _______________________________________________________________________________

    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 )(xseney x = . Como seria seu grfico no intervalo [0 ; pi1e ]? %%% 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 39)( 3 += xxxf (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.

    39)( 3 += xxxf

    3)( xxg =

    39)( = xxh

  • _______________________________________________________________________________

    _______________________________________________________________________________

    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

  • _______________________________________________________________________________

    _______________________________________________________________________________

    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: 11625012 234 +++ xxxx 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 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 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 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 polinmios 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

    >>

  • _______________________________________________________________________________

    _______________________________________________________________________________

    Clculo Numrico Utilizando Matlab 51

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

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

  • _______________________________________________________________________________

    _______________________________________________________________________________

    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 9532)( 234 +++= xxxxxP , vamos derivar este polinmio: >> 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 Polinmios

    Considere os seguintes polinmios: 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 =

  • _______________________________________________________________________________

    _______________________________________________________________________________

    Clculo Numrico 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 Polinmios

    Considere os seguintes polinmios: 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.

  • _______________________________________________________________________________

    _______________________________________________________________________________

    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, 2 Edio, 2006. [3]. S. A. Vicente. Curso Introdutrio de Matlab 6.5. Apostila, Janeiro, 2003. [4]. Matlab & Simulink, Apostila, Faculdade de Engenharia Industrial, 1994. [5]. Matlab Curso Introdutrio, Apostila, Centro Brasileiro de Pesquisas Fsicas, 2002.