INTRODUÇÃO AO PROGRAMA MATLAB COM...

81
UNIVERSIDADE FEDERAL DE GOIÁS & UNIVERSIDADE CATÓLICA DE GOIÁS ESCOLA DE ENGENHARIA ELÉTRICA E DE COMPUTAÇÃO INTRODUÇÃO AO PROGRAMA "MATLAB" COM APLICAÇÕES Material elaborado por: Prof. Dr. Antônio César Baleeiro Alves (UCG/UFG) Prof. Dr. Enes Gonçalves Marra (UFG) Prof. Dr. José Wilson Lima Nerys (UFG) Goiânia – GO 2007

Transcript of INTRODUÇÃO AO PROGRAMA MATLAB COM...

  • UNIVERSIDADE FEDERAL DE GOIS & UNIVERSIDADE CATLICA DE GOIS

    ESCOLA DE ENGENHARIA ELTRICA E DE COMPUTAO

    INTRODUO AO PROGRAMA "MATLAB"

    COM APLICAES

    Material elaborado por:

    Prof. Dr. Antnio Csar Baleeiro Alves (UCG/UFG)

    Prof. Dr. Enes Gonalves Marra (UFG)

    Prof. Dr. Jos Wilson Lima Nerys (UFG)

    Goinia GO

    2007

  • 2

    SUMRIO

    1 INTRODUO 5

    2 UTILIZANDO O MATLAB 9

    2.1 INICIAR O PROGRAMA 9

    2.2 PASTA DE TRABALHO 10

    2.3 TELA DA LINHA DE COMANDO DO MATLAB 11

    2.4 CRIAO DE ARQUIVOS NO MATLAB 11

    2.5 LIMITAES DO MATLAB 13

    3 OPERADORES, CONSTANTES E CARACTERES ESPECIAIS 14

    3.1 OPERADORES ARITMTICOS 14

    3.2 CARACTERES ESPECIAIS 16

    3.3 OPERADORES LGICOS 18

    3.4 OPERADORES RELACIONAIS 19

    3.5 CONSTANTES OU VARIVEIS 19

    3.5.1 INF 20

    3.5.2 NAN 20

    3.5.3 IEEE 20

    3.6 RECURSOS DE APOIO DA TELA DE COMANDO DO MATLAB 20

    3.6.1 MENU FILE 20

    3.6.2 MENU EDIT 21

    4 COMANDOS DE PROPSITO GERAL 22

    4.1 COMANDOS DE INFORMAO 22

    4.2 COMANDOS DE OPERAO COM A MEMRIA DA REA DE TRABALHO (WORKSPACE) 23

    4.3 COMANDOS DE OPERAO COM FUNES E COMANDOS 24

    4.4 COMANDOS DE OPERAO COM O CAMINHO DE DIRETRIOS 25

    4.5 COMANDOS DE OPERAO COM A JANELA DE COMANDO 26

    4.6 COMANDOS DE OPERAO COM O SISTEMA OPERACIONAL 27

    5 COMANDOS BSICOS PARA MANIPULAO DE MATRIZES 29

    6 FUNES MATEMTICAS ELEMENTARES 32

  • 3

    7 COMANDOS DE CONTROLE GRFICO 36

    7.1 GRFICOS BIDIMENSIONAIS 36

    7.2 GRFICOS TRIDIMENSIONAIS 38

    8 OUTROS COMANDOS 39

    8.1 FUNES LGICAS 39

    8.2 FUNES DE CONTROLE DE FLUXO DE PROGRAMAO 40

    8.3 FUNES DE CONTROLE DE BAIXO NVEL 44

    8.4 FUNES ESPECIALIZADAS: MATEMTICAS, MATRICIAIS, LGEBRA LINEAR 45

    8.5 FUNES DE INTEGRAO, INTERPOLAO E TRATAMENTO DE DADOS 45

    8.6 FUNES DE CONTROLE DE CORES, IMAGENS E CARACTERES 45

    9 PROGRAMANDO EM ARQUIVOS .M 46

    9.1 EXEMPLOS DE APLICAO DE PROGRAMA '.M' 46

    10 MATEMTICA SIMBLICA 51

    10.1 USO DA MATEMTICA SIMBLICA 56

    10.2 GRFICOS EM DUAS DIMENSES 57

    10.3 GRFICOS EM TRS DIMENSES 58

    11 SIMULINK 60

    12 EXERCCIOS RESOLVIDOS 69

    13 EXERCCIOS PROPOSTOS 78

    14 BIBLIOGRAFIA 81

  • 4

  • 5

    1 INTRODUO

    O MATLAB (abreviatura de Matrix Laboratory) um programa para

    desenvolvimento e implementao de algoritmos numricos ou simblicos que oferece

    ao usurio um ambiente interativo de programao para estudo e pesquisa nas

    diversas reas das cincias exatas.

    Esse sistema comporta os recursos de linguagem procedural de programao

    assemelhados aos do FORTRAN, ANSI C e do Pascal, alm de capacidade grfica e a

    possibilidade de operar com instrues simblicas. Um dos aspectos mais poderosos

    o fato da linguagem MATLAB permitir construir suas prprias ferramentas reutilizveis.

    Isto feito atravs da escrita de suas prprias funes e programas especiais

    conhecidos como arquivos .m.

    A primeira verso do MATLAB foi escrita nas Universidades do Novo Mxico e

    Stanford, na dcada de 1970, e destinava-se a cursos de teoria matricial, lgebra linear

    e anlise numrica. Os pacotes para manipulao de sub-rotinas em FORTRAN,

    denominados LINPACK e EISPACK, foram os precursores do MATLAB.

    O MATLAB tem evoludo continuamente, com a contribuio e sugestes de

    inmeros usurios. No meio universitrio, o MATLAB tornou-se quase que uma

    ferramenta padro em cursos introdutrios e avanados de lgebra Aplicada,

    Processamento de Sinais, Sistemas de Controle, Estatstica e inmeras outras reas

    do conhecimento.

    O MATLAB contempla ainda uma grande famlia de aplicaes especficas, as

    quais so denominadas Toolboxes (caixas de ferramentas), como ilustrado na Fig. 1.1.

    Estes Toolboxes so conjuntos abrangentes de funes MATLAB cujo objetivo

    resolver problemas de reas especficas, tais como: Processamento de Sinais, Projeto

    de Sistemas de Controle, Simulao Dinmica de Sistemas, Identificao de Sistemas,

    Redes Neuronais, Lgica Fuzzy (nebulosa ou difusa), Otimizao de Sistemas,

    Wavelets, Clculo Simblico, e outras reas. Os usos tpicos incluem:

    Clculos matemticos;

    Desenvolvimento de algoritmos;

    Modelagem, simulao e confeco de prottipos;

    Anlise, explorao e visualizao de dados;

    Grficos cientficos e de engenharia;

  • 6

    Desenvolvimento de aplicaes, incluindo a elaborao de interfaces grficas

    com o usurio

    Fig. 1.1: Diagrama de Blocos do MATLAB

    A Fig. 1.1 ilustra alguns componentes do sistema MATLAB. Cabe ressaltar,

    entretanto, que vrios Toolboxes esto disponveis e a cada nova verso do MATLAB

    novos Toolboxes so adicionados, incluindo as contribuies de usurios espalhados

    pelo mundo. O SIMULINK um acessrio que possui bibliotecas adicionais de blocos

    para aplicaes especiais como comunicaes e simulaes de circuitos eltricos e

    eletrnicos. O MATLAB disponibilizado para praticamente todos os sistemas operacionais atualmente em uso: Macintosh, Windows 95 e NT, Linux, UNIX da Sun, IBM e Open

    VMS.

    A empresa MathWorks quem negocia/distribui o MATLAB. Seus endereos

    so:

    Internet: http://www.mathworks.com

    Telefone (ligao para os EUA): 00-1-508-647-7000

    Toolbox

    Toolbox

    SIMULINK

    Biblioteca

    numrica

    Linguagem de

    programao

    Depurador Editor de textos

  • 7

    Para um contato com vistas ao uso do programa na rea educacional, tente o

    endereo:

    A necessidade de utilizar um sistema de computao numrica, e a

    familiarizao com os comandos e as funes do MATLAB vo gradualmente

    aumentando o potencial de quem programa em MATLAB. No entanto, a bibliografia

    existente pode ser de grande auxlio. Parte desta bibliografia editada pela The

    MathWorks, como por exemplo:

    MATLAB Users Guide (Guia do usurio do MATLAB);

    MATLAB Reference Guide (Guia de referncia do MATLAB);

    External Interface Guide (Guia de comunicao externa);

    Installation Guide (Guia de Instalao);

    SIMULINK Users Guide (Guia do usurio do SIMULINK);

    Online Help (Sistema de auxlio do programa MATLAB).

    Inmeras outras referncias podem ser encontradas para o MATLAB, para isto

    basta procurar nas diversas editoras disponveis no mercado. Algumas destas

    referncias (em portugus) para a rea de controle podem ser:

    Katsuhiko Ogata, Soluo de Problemas de Engenharia de Controle com

    MATLAB. Prentice-Hall do Brasil, Rio de Janeiro, 1997, 330p.

    Katsuhiko Ogata, Projeto de Sistemas Lineares com MATLAB. Prentice-Hall

    do Brasil, Rio de Janeiro, 1996, 202p.

    Na internet existem diversas listas de discusso a respeito do MATLAB.

    Inscrever-se em uma destas lista pode ser uma boa fonte de informao a respeito do

    MATLAB. Na pgina da The MathWorks Inc. possvel obter informao sobre

    The MathWorks, Inc.

    University Sales Department

    24 Prime Park Way

    Natick, Massachusetts 01760-1500

    Telefone: 00-1-508-647-7000

    E-mail: [email protected]

  • 8

    algumas destas listas, bem como sobre o prprio MATLAB. O endereo desta pgina :

    http://www.mathworks.com.

    Os endereos eletrnicos a seguir podem ser tambm utilizados para saber mais

    sobre o MATLAB:

    Perguntas tcnicas: [email protected]

    Sugestes de melhoria: [email protected]

    Bug (erros) do MATLAB: [email protected]

    Erros nos manuais: [email protected]

    Registro de produto (aps a compra): [email protected]

    Renovao de licena: [email protected]

    Compra, cotao e informaes comerciais: [email protected]

  • 9

    2 UTILIZANDO O MATLAB

    O programa MATLAB pode ser executado em diversos sistemas operacionais,

    tais como: MS-DOS; Windows-95 ou superior; Unix; Linux; VAX/VMS; Solaris; X-

    Window System; Macintosh; e outros. Este curso est preparado para ser ministrado no

    sistema MS-DOS/Windows3.1x ou superior. No entanto, apenas o incio do programa

    e as funes de baixo nvel so afetados pelo tipo de mquina e sistema operacional

    utilizados.

    2.1 Iniciar o Programa

    O programa MATLAB pode ser iniciado com um duplo clique no cone do

    MATLAB na rea de trabalho do windows (desktop), conforme indica a Fig. 2.1.

    Fig. 2.1: cone do MATLAB.

    Outra forma de iniciar o MATLAB atravs do menu INICIAR do Windows95 ou

    superior. Seleciona-se: INICIAR / PROGRAMA / MATLAB.

    Os arquivos executveis do MATLAB esto no diretrio de instalao do

    MATLAB, no subdiretrio BIN. O programa MATLAB iniciado quando o arquivo

    MATLAB.exe, do subdiretrio BIN executado.

    Ao iniciar, o MATLAB invoca o arquivo MATLABrc, o qual o arquivo de

    configurao inicial do MATLAB. Este arquivo pode estar no subdiretrio BIN, ou no

    subdiretrio LOCAL, ou ainda no subdiretrio ...\TOOLBOX\LOCAL. Isto depender

    da verso do MATLAB utilizada, ou da forma como o programa foi instalado. Durante o

    processo de incio do programa, o arquivo MATLABrc estabelece o tamanho padro

    de figuras, configuraes, caminhos e parmetros de controle do MATLAB. Neste

  • 10

    arquivo pode-se incluir mensagens para os usurios, lembretes, ajustar configuraes,

    etc.

    Ao ser executado, o arquivo MATLABrc verifica se existe um arquivo

    denominado startup.m no caminho padro do MATLAB. Este arquivo startup.m pode

    ser empregado pelo usurio para configurar um caminho de sua preferncia e executar

    comandos de sua escolha, sempre que o programa MATLAB for iniciado. Todos os

    arquivos de comando do MATLAB (arquivos que contm comandos) tm extenso m.

    Portanto, daqui por diante as referncias aos arquivos do MATLAB sero feitas apenas

    pelo nome, fica implcito que a extenso sempre ser m.

    Todos os arquivos de comando do MATLAB tm extenso m

    Uma sesso do programa MATLAB pode ser terminada com o comando quit;

    com as teclas de atalho ctrl+q; selecionando-se a opo Exit MATLAB (Sair do

    MATLAB) no menu File (Arquivo); ou ainda, clicando-se no boto fechar na tela da

    rea de trabalho do MATLAB.

    Boto fechar do MATLAB:

    2.2 Pasta de Trabalho

    Uma boa prtica de utilizao do MATLAB manter todos os arquivos criados

    pelo usurio em uma pasta (ou diretrio) prprio do usurio. Caso esta prtica no seja

    adotada todos os arquivos criados sero armazenados no diretrio BIN do diretrio de

    instalao do MATLAB. Com o passar do tempo, medida em que aumentam os

    arquivos criados pelos usurios, torna-se impossvel identificar-se quais arquivos so

    prprios do MATLAB, e quais arquivos so arquivos do usurio. Isto pode ser ainda

    mais prejudicial no caso de utilizao do MATLAB em ambientes de rede LAN. Nestes

    casos, a desordem causada nos arquivos do diretrio BIN pode requerer at mesmo

    uma nova instalao do programa.

    Recomenda-se que o usurio crie a sua prpria pasta de trabalho, fora da pasta

    de instalao do MATLAB (por exemplo, c:\fulano\MATLAB\). Ao iniciar o MATLAB, o

    usurio poder redefinir a sua pasta de trabalho com o comando cd.

  • 11

    cd

    Propsito: muda o diretrio de trabalho

    Sintaxe: cd ou cd nome_do_diretorio

    Descrio: cd isoladamente imprime o caminho do diretrio de trabalho na tela;

    cd diretrio define a cadeia de caracteres (string) nome_do_diretorio como o

    novo diretrio de trabalho.

    cd .. sobe um nvel na hierarquia da cadeia de diretrios (pasta)

    Exemplo: cd c:\usuario\marisa\matab.

    Se o comando cd for parte integrante do arquivo startup, toda vez que o MATLAB for

    iniciado o diretrio de trabalho ser redefinido conforme a preferncia do usurio.

    2.3 Tela da Linha de Comando do MATLAB

    A tela da linha de comando do MATLAB (ou workspace) a tela na qual o usurio

    recebe o sinal de pronto (prompt) do sistema MATLAB, podendo executar comandos

    MATLAB, escrevendo-os na linha de comando (ou command line).

    Na tela da linha de comando, o usurio fornece dados aos comandos do

    MATLAB, executa comandos, recebe os dados de sada do programa MATLAB,

    controla o fluxo de dados, inicia o modo de edio de arquivos, executa comandos

    grficos, ou seja, interage com o programa MATLAB.

    Ao criar funes, comandos e variveis no programa MATLAB importante estar

    atento para o fato de que este programa sensvel a caracteres maisculos e

    minsculos, portanto a varivel xqualquer diferente da varivel Xqualquer para o

    MATLAB.

    O programa MATLAB sensvel a caracteres maisculos e minsculos

    2.4 Criao de Arquivos no MATLAB

    Existem basicamente duas formas de trabalhar no sistema MATLAB: 1)

    executando-se comando na linha de comando; ou 2) criando-se um arquivo de

    comandos do MATLAB.

  • 12

    Para trabalhar na linha de comando do MATLAB basta digitar qualquer comando

    vlido do MATLAB na linha de comando. Assim, possvel criar variveis, executar

    comandos, visualizar grficos, etc.

    Muitas vezes necessrio executar um nmero grande de comandos, e repeti-los

    sistematicamente. Nestes casos, utilizam-se os arquivos de lote, ou arquivos de

    comandos MATLAB. Conforme j citada anteriormente, a extenso de arquivos de

    comando do MATLAB m. O MATLAB busca primeiramente o arquivo de comandos

    no seu diretrio de trabalho (pasta) e posteriormente no seu caminho (path). Portanto,

    necessrio que o arquivos MATLAB esteja no diretrio de trabalho ou no caminho do

    MATLAB.

    Os arquivos de comando do MATLAB devem estar no diretrio de

    trabalho ou no caminho (path) para serem reconhecidos e executados

    Os arquivos do MATLAB podem ser criados atravs de qualquer editor que salva

    textos no formato ASCII (por exemplo bloco de notas, notepad, write, word, etc). Uma

    vez editados os arquivos devem ser gravados com extenso m antes de serem

    executados.

    Os arquivos MATLAB podem ser abertos ou criados atravs da opo arquivo

    (file), escolhendo-se a opo novo (new) ou abrir (open), conforme indicado na Fig. 2.2.

    Fig. 2.2: Criao de arquivos de comandos no MATLAB.

  • 13

    O MATLAB j possui uma pr-definio de qual o editor ASCII a ser utilizado

    na edio do arquivo de comandos. Esta pr-definio pode se modificada pelo prprio

    usurio do programa.

    As verses mais recentes do MATLAB j possuem um editor ASCII prprio do

    MATALAB, desenvolvido pela The MathWorks Inc.

    Exerccio sugerido: criar um arquivo de comando denominado caminho.m que

    estabelece o diretrio de trabalho do MATLAB.

    2.5 Limitaes do MATLAB

    As principais limitaes do programa MATLAB so: 1) a execuo de algoritmos

    em MATLAB mais lenta que em linguagens de programao (C, Fortran, LISP, etc);

    2) alguns procedimentos grficos e de interao com o usurio so restritos aos

    comandos do MATLAB; 3) no possvel gerar arquivos executveis com o MATLAB,

    ou seja, um arquivo MATLAB s poder ser executado no ambiente MATALAB; e 4) o

    MATLAB limitado para processamento de expresses matemticas analticas.

    Os principais concorrentes do MATLAB no mercado so o MATHEMATICA, o

    MATCAD e o MAPLE. Alguns destes programas apresentam melhor capacidade de

    processamento matemtico analtico que o MATLAB, notadamente o MATCAD e o

    MATHEMATICA.

    um arquivo MATLAB s poder ser executado no ambiente MATLAB

  • 14

    3 OPERADORES, CONSTANTES E CARACTERES ESPECIAIS

    3.1 Operadores aritmticos

    Operador +

    Propsito: executar soma de matrizes ou escalares.

    Sintaxe: v1+v2 ou plus(v1,v2).

    Descrio: Invoca a funo PLUS. Caso seja soma de matrizes, as dimenses

    das matrizes devem ser iguais. Escalares podem ser somados com qualquer tipo

    de varivel.

    Exemplos: a+b; plus(a,b); a+2.

    Operador -

    Propsito: executar subtrao de matrizes ou escalares.

    Sintaxe: v1-v2 ou minus(v1,v2).

    Descrio: Invoca a funo minus. Caso seja subtrao de matrizes, as

    dimenses das matrizes devem ser iguais. Escalares podem ser subtrados de

    qualquer tipo de varivel.

    Exemplos: a-b; minus(a,b); a-2.

    Operador *

    Propsito: executar soma de matrizes ou escalares.

    Sintaxe: v1*v2 ou mtimes(v1,v2).

    Descrio: Invoca a funo mtimes. Caso seja multiplicao de matrizes, o

    nmero de colunas da matriz v1 deve ser igual ao nmero de linhas da matriz

    v2. Escalares podem multiplicar qualquer tipo de varivel.

    Exemplos: a*b (neste caso, o nmero de colunas de a igual ao nmero de

    linhas de b); mtimes(a,b); a*2.

    Operador ^ (circunflexo)

    Propsito: executar potenciao de matrizes quadradas com expoente escalar

    ou de de escalares com matriz quadrada no expoente.

    Sintaxe: v1^v2 ou mpower(v1,v2).

  • 15

    Descrio: Invoca a funo mpower. Caso v1 seja matriz quadrada e v2 seja um

    inteiro, realizada a multiplicao sucessiva das matrizes. Caso v1 seja matriz e

    v2 seja um real, ou ainda se v1 um escalar e v2 uma matriz, realizado o

    clculo atravs dos autovalores e dos autovetores da matriz. Se v1 e v2 forem

    ambos matrizes, ou ainda se v1 ou v2 forem matrizes no quadradas, ento

    haver erro.

    Exemplos: a^b ou mpower(a,b) (neste caso, a escalar e b matriz quadrada;

    ou a matriz quadrada e b escalar; ou a e b so escalares).

    Operador /

    Propsito: executar diviso de escalares ou a multiplicao de uma matriz

    inversa por outra matriz (importante: na matemtica no existe diviso de

    matrizes). a chamada diviso direita.

    Sintaxe: v1/v2 ou mrdivide(v1,v2).

    Descrio: Invoca a funo mrdivide. Esta operao equivalente a v1*v2-1

    (sendo v2-1 a matriz inversa da matriz v2). Para que esta operao seja possvel

    necessrio que v2 seja inversvel, ou seja, matriz no-singular (matriz

    quadrada com determinante no-nulo).

    Exemplos: a/b ou mrdivide(a,b).

    Operador \

    Propsito: executar diviso de escalares ou a multiplicao de uma matriz

    inversa por outra matriz. a chamada diviso esquerda.

    Sintaxe: v1\v2 ou mldivide(v1,v2)

    Descrio: Invoca a funo mldivide. Esta operao equivalente a v1-1* (sendo

    v1-1 a matriz inversa da matriz v1). Para que esta operao seja possvel

    necessrio que v1 seja inversvel, ou seja, matriz no-singular (matriz quadrada

    com determinante no-nulo). Observe que na lgebra matricial a

    multiplicao no comutativa, ou seja a*b diferente de b*a, portanto a/b

    equivale a a*b-1, que por sua vez diferente de b\a, equivalente a b-1*a.

    O operador \ executa a fatorao QR da matriz A ao resolver o sistema bAx = ,

    para A de ordem nm , para m no necessariamente igual a n .

  • 16

    Exemplos: a\b ou mldivide(a,b).

    Na matemtica no existe operao de diviso com matrizes. Os

    operadores / e \ so apenas smbolos.

    A multiplicao na lgebra matricial no comutativa, ou seja, a*b

    diferente de b*a.

    Operador

    Propsito: executar a transposio de matrizes ou a declarao de uma cadeia

    de caracteres (string).

    Sintaxe: v1 ou v2=bom dia

    Descrio: v1 produz a matriz v1*T (matriz transposta conjugada da matriz v1,

    troca de linhas por colunas dos conjugados dos nmeros complexos da matriz

    v1). v2=bom dia cria uma varivel do tipo string, onde cada caractere ocupa 2

    bytes na memria.

    Exemplos: a*b ou salutation=Hello!.

    Cada caractere ocupa 2 bytes de memria RAM nas variveis tipo string.

    Cada varivel real (float) ou inteira ocupa 8 bytes de memria. Em uma

    matriz de strings, a rea de memria ocupada em bytes, 2 vezes, o

    nmero de caracteres. Em uma matriz de reais ou inteiros, a rea de

    memria ocupada, em bytes, 8 vezes o nmero de elementos da matriz.

    3.2 Caracteres Especiais

    caracter .

    Propsito: executar operaes elemento-a-elemento (operaes algbricas

    escalares (/,\,^,*,), no-matriciais); indexar campos em estruturas; ou ponto

    decimal.

    Sintaxe: a.*a; a./b; c.\f; x.^2; x.^y para operaes algbricas; ou est.campo

    Descrio: a.*b multiplica o elemento a(i,j) pelo elemento b(i,j). a..

  • 17

    v1.opv2 executa a operao op de cada elemento de v1 com seu elemento

    correspondente em v2. No caso de operao entre matrizes, as matrizes devem

    possuir exatamente as mesmas dimenses. A operao com escalar pode ser

    realizada com matriz de qualquer dimenso.

    a. a matriz transposta no conjugada da matriz a.

    est.camp seleciona o campo camp da estrutura est.

    Exemplos: 2.^x diferente de 2^x; x.*x diferente de x*x. auto.peujeot seleciona

    o campo peujeot da estrutura auto.

    O caractere . produz a operao elemento-a-elemento entre matrizes

    com exatamente a mesma dimenso ou entre escalares e matrizes.

    caracter :

    Propsito: Criar varredura limitada pelos nmeros direita e esquerda de :.

    Sintaxe: j:k; j:d:k.

    Descrio: j:k o mesmo que [j j+1 j+2 ... k], j:k vazio se k

  • 18

    caracter !

    Propsito: invoca comando do sistema operacional.

    Exemplos: ! mkdir novo.

    caracter %

    Propsito: torna o texto direta de % um comentrio.

    Exemplos: x=[1 2 3; 4.5 6 7.5]; %cria matriz x.

    caracteres ..

    Propsito: representa o primeiro diretrio na hierarquia de diretrios.

    Exemplos: cd .. sobe um diretrio na hierarquia.

    caracteres ... (trs ou mais pontos)

    Propsito: representa continuao de linha.

    Exemplos: a=2+...

    3 o mesmo que a=2+3.

    caracteres ( )

    Propsito: indicam precedncia em operaes matemticas ou indexam

    matrizes.

    Exemplos: (a+b)^c, a soma realizada antes da potenciao; x(3) o terceiro

    elemento do vetor x; x([1 2 3]) so os trs primeiros elementos do vetor x.

    caracter { }

    Propsito: so utilizadas para formar estruturas (conjunto de clulas), onde cada

    clula pode ser outra estrutura, uma matriz ou uma string. Funciona como os [ ],

    porm seus elementos podem ser outras matrizes.

    Podem tambm ser utilizadas para indexar estruturas e dar acesso aos seus

    campos.

    Exemplo: l={isto uma matriz linha: [1 2 24]}, l uma estrutura com 5

    campos.

    3.3 Operadores Lgicos

    caracteres & | ~

  • 19

    Propsito: realizam as operaes lgicas e, ou e negao com os operadores &,

    | e ~, respectivamente.

    Sintaxe: a&b; A|c; ~d; os operandos a,b,c,d,A podem ser nmeros reais (float),

    complexos (utiliza o mdulo) ou strings (utiliza o valor da tabela ASCII). No

    MATLAB, 0 considerado falso, e qualquer outro valor no-nulo verdadeiro. O

    resultado destas operaes ser verdadeiro (1) ou falso (0).

    Exemplos: 5&-3 resulta em 1; ~10 resulta em 0; alfa|0 resulta em [1 1 1 1].

    3.4 Operadores relacionais

    caracteres < >= == ~=

    Propsito: realizam as operaes de comparao de valores lgicos do tipo

    menor, menor igual, maior, maior igual, igual e diferente com os operadores < >= == ~=, respectivamente. O resultado um valor lgico verdadeiro (1) ou

    falso (0).

    Sintaxe: v1opv2 testa o valor lgico v1 em relao ao valor lgico v2, com a

    operao relacional op.

    Exemplos: 3=b verifica se a maior ou

    igual a b, resultando verdadeiro (1) ou falso (0).

    3.5 Constantes ou Variveis

    Alguns caracteres so constantes definidos pelo MATALAB. Estes valores

    podem ser alterados temporariamente atravs de atribuio.

    Constante pi

    Definio: a constante (3,1416...)

    Constantes i e j

    Propsito: caracteres reservados com a unidade imaginria 1 .

    Sintaxe: nmero seguido de i ou j, ou multiplicado por i ou j.

    Exemplos: 5+3i ou 5+3*i; 5+3j ou 5+ 3*j.

    ans

  • 20

    Definio: uma varivel cujo valor o resultado da ltima operao aritmtica

    realizada pelo MATLAB. Operaes de atribuio no so armazenadas em ans.

    Abreviatura para answer.

    3.5.1 Inf

    Definio: o resultado de uma operao aritmtica cujo valor ultrapassa a

    maior capacidade de representao do MATALAB. Por exemplo, diviso por

    zero, ou 1.7977e+308^ 1.7977e+308. Abreviatura para infinite.

    3.5.2 NaN

    Definio: o resultado de uma operao aritmtica indeterminada. Por

    exemplo, 0/0 Abreviatura para Not a Number.

    3.5.3 ieee

    Definio: verifica se o computador em que o MATLAB est sendo executado

    possui aritmtica padro IEEE. Os computadores IBM-PC e compatveis,

    Macintosh, estaes UNIX e Linux possuem aritmtica padro IEEE. Os

    computadores VAX e Cray normalmente no utilizam aritmtica IEEE. A funo

    retorna 1 se o computador tem aritmtica IEEE; caso contrrio, retorna 0.

    Examine tambm: eps; isnan; isinf; isfinite; flops.

    3.6 Recursos de Apoio da Tela de Comando do MATLAB

    A tela de comando do programa MATLAB apresenta uma srie de recursos que

    podem auxiliar o usurio. Entre estes recursos destacam-se:

    3.6.1 Menu File

  • 21

    Neste Menu possvel abrir um arquivo MATLAB j existente (open); iniciar um

    novo arquivo com extenso m (new), atravs do editor ASCII do MATLAB; executar um

    arquivo com comandos MATLAB (run script); imprimir arquivos e selees (print e print

    selection); carregar variveis de um arquivo (load workspace); salvar variveis do

    workspace (rea de trabalho) em um arquivo; monitorar a memria da rea de trabalho

    (show workspace); redefinir o caminho de diretrios do MATLAB (set path); alterar as

    configuraes da rea de trabalho, tais como cor de fundo, formato de variveis, etc

    (preferences).

    3.6.2 Menu Edit

    Aqui possvel cortar (cut), copiar (copy), colar (pate), limpar a tela da sesso

    de trabalho (clear session).

    Botes de Auxlio:

    1o boto da figura: Voltar - cancela a ltima alterao;

    2o boto da figura: Workspace browser - monitora as variveis e a memria da rea de

    trabalho;

    3o boto da figura: Path browser - monitora e redefine os diretrios do caminho do

    MATLAB;

    4o boto da figura: SIMULINK - invoca o programa SIMULINK;

    5o Ajuda em tempo real - fornece auxlio para todos os comandos do MATLAB (invoca

    a funo helpwin).

    A ordem destes botes pode ser alterada pelo usurio do MATLAB.

  • 22

    4 COMANDOS DE PROPSITO GERAL

    4.1 Comandos de Informao

    help

    Propsito: Ajuda em tempo real (on-line). O texto apresentado na tela da linha

    de comando.

    Sintaxe: help nome-da-funo.

    Descrio: fornece informaes sobre a funo especificada pelo nome-da-

    funo.

    Exemplo: help plot.

    helpwin

    Propsito: Ajuda em tempo real (on-line). O texto apresentado em uma janela

    de navegao separada.

    Sintaxe: helpwin.

    Descrio: aberta um janela com opes para escolha do nome e categoria da

    funo.

    ver

    Propsito: informa as verses do MATLAB, SIMULINK e toolboxes.

    Sintaxe: ver

    version

    Propsito: informa as verses do MATLAB

    Sintaxe: version

    demo

    Propsito: executa programas de demonstrao desenvolvidos em ambiente

    MATLAB.

    Sintaxe: demo.

    whatsnew

    Propsito: Ajuda em tempo real (on-line). O texto apresentado em uma janela

    de navegao separada.

  • 23

    Sintaxe: whatsnew tipo-de-funo.

    Descrio: apresenta as atualizaes dos comandos tipo-de-funo na tela da

    linha de comando.

    Exemplo: whatsnew MATLAB; whatsnew general.

    bench

    Propsito: executa um conjunto de funes MATLAB com a finalidade de avaliar

    o desempenho do processador atual utilizado em relao a outros

    processadores.

    Sintaxe: bench.

    4.2 Comandos de Operao com a Memria da rea de Trabalho (workspace)

    who

    Propsito: lista as variveis atuais.

    Sintaxe: who.

    whos

    Propsito: lista as variveis atuais, suas dimenses e memria que cada uma

    ocupa.

    Sintaxe: whos.

    clear

    Propsito: limpa completamente a memria, funo ou varivel.

    Sintaxe: clear; clear arg.

    Descrio: clear limpa toda a memria da rea de trabalho; clear arg exclui a

    funo ou varivel arg da memria da rea de trabalho.

    Exemplo: clear; clear x1.

    pack

    Propsito: desfragmenta a memria da rea de trabalho.

    Descrio: pack rene todas as variveis em um segmento ou pginas

    adjacentes na memria RAM com a finalidade de otimizar o uso da memria.

    Sintaxe: pack.

  • 24

    save

    Propsito: salva as variveis da memria da rea de trabalho em arquivo.

    Sintaxe: save fname; save fname v1 v2 ... vn.

    Descrio: save fname salva todas as variveis da rea de trabalho no arquivo

    cujo nome e caminho so descritos em fname. save fname v1 v2 ... vn salva

    apenas as variveis v1, v2 e vn.

    Exemplo: save a:\hoje; save c:\MATLAB\arq x y.

    load

    Propsito: carrega as variveis de um arquivo para a memria da rea de

    trabalho.

    Sintaxe: load fname; load fname v1 v2 ... vn.

    Descrio: load fname carrega todas as variveis do arquivo cujo nome e

    caminho so descritos em fname para a memria da rea de trabalho. laod

    fname v1 v2 ... vn carrega apenas as variveis v1, v2 e vn.

    Exemplo: load a:\hoje; load c:\MATLAB\arq x y.

    quit

    Propsito: encerra a sesso de trabalho do MATLAB

    Sintaxe: quit.

    4.3 Comandos de Operao com Funes e Comandos

    what

    Propsito: lista os nomes de arquivos de funes e comandos de um grupo

    especfico do MATLAB.

    Sintaxe: what nome; var=what(nome).

    Descrio: what nome lista todos os arquivos e funes do grupo descrito por

    nome. var=what(nome) cria uma estrutura cujos campos descrevem os diversos

    arquivos relacionados com o grupo definido por nome.

    Exemplo: what general; w=what(signal).

    type

    Propsito: lista o contedo de um arquivo de comandos do MATLAB.

    Sintaxe: type arq.

  • 25

    Exemplo: type multi.m; type c:\MATLAB\marisa\xtudo.m.

    edit

    Propsito: edita arquivo do MATLAB

    Sintaxe: edit; edit arq.

    Descrio: somente edit inicia a edio de um novo arquivo; edit arq abre a

    edio de um arquivo arq j existente.

    Exemplo: edit; edit figs.m.

    lookfor

    Propsito: busca a palavra-chave em todos os arquivos contidos no caminho do

    MATLAB.

    Sintaxe: lookfor palavra.

    Descrio: procura, em todos os arquivos do caminho, a palavra-chave contida

    na string palavra, e lista o nome dos arquivos nos quais existe a palavra-chave.

    Exemplo: lookfor matrix.

    Examine tambm os comandos: which; pcode; inmem; mex.

    4.4 Comandos de Operao com o Caminho de Diretrios

    path

    Propsito: verifica ou define o caminho de diretrios.

    Sintaxe: path; path=caminho; v=path.

    Descrio: path lista na tela da linha de comando o caminho atual.

    path=caminho define o caminho atual como sendo a string contida em caminho.

    v=path carrega a string correspondente ao caminho atual em v.

    Exemplo: path; path=c:\usuario\MATLAB; p1=path.

    addpath

    Propsito: adiciona diretrios ao caminho.

    Sintaxe: addpath nome.

    Descrio: adiciona o diretrio descrito na string nome ao caminho atual.

    Exemplo: addpath c:\user\pink.

  • 26

    rmpath

    Propsito: remove diretrios do caminho.

    Sintaxe: rmpath nome.

    Descrio: remove o diretrio descrito na string nome ao caminho atual.

    Exemplo: rmpath c:\user\pink.

    Examine tambm os comandos: editpath.

    4.5 Comandos de Operao com a Janela de Comando

    echo

    Propsito: habilita ou inibe a apresentao dos resultados de comando de um

    arquivo MATLAB na linha de comando.

    Sintaxe: echo on; echo off.

    Descrio: echo on habilita a apresentao e echo off desabilita.

    more

    Propsito: habilita ou inibe a paginao do texto na tela de comandos.

    Sintaxe: more on; more off.

    Descrio: echo on habilita a paginao e echo off desabilita.

    diary

    Propsito: salva todo o texto da sesso de trabalho em arquivo

    Sintaxe: diary on; diary off; diary(nome).

    Descrio: aps diary on todo texto que aparece na janela de comando

    tambm enviado para um arquivo nomeado automaticamente pelo MATLAB.

    diary off interrompe o salvamento em arquivo. diary(nome) salva o texto da

    janela de comando no arquivo cujo nome descrito pela string nome.

    Exemplo: diary on; diary off; diary(31-8-00).

    format

    Propsito: determina o formato no qual os dados sero expressos na janela de

    comando.

    Sintaxe: format opo.

  • 27

    Descrio: expressa os dados conforme opo. opo: 1) short ou em branco:

    formato ponto decimal com 5 dgitos; 2) long: formato ponto decimal com 15

    dgitos; 3) short e: formato ponto flutuante com 5 dgitos; 4) long: formato ponto

    flutuante com 15 dgitos; 5) short g: o MATALAB seleciona entre o formato ponto

    decimal com 5 dgitos ou ponto flutuante com 5 dgitos; 6) long g: o MATALAB

    seleciona entre o formato ponto decimal com 15 dgitos ou ponto flutuante com

    15 dgitos; 7) hex: hexadecimal; 8) +: apresenta o sinal + ou para os valores; 9)

    bank: formato bancrio com $ e centavos; 10) rat: aproxima para a frao mais

    prxima do valor a ser expresso.

    4.6 Comandos de Operao com o Sistema Operacional

    cd

    Propsito: altera o diretrio de trabalho atual.

    Sintaxe: cd diretrio.

    Exemplo: cd c:\MATLAB\usuario.

    pwd

    Propsito: exibe o diretrio de trabalho atual.

    Sintaxe: pwd.

    dir

    Propsito: lista os arquivos do diretrio atual.

    Sintaxe: dir.

    delete

    Propsito: exclui arquivo do diretrio.

    Sintaxe: delete arq.

    Exemplo: delete tarefa.m.

    dos

    Propsito: executa comando do MS-DOS.

    Sintaxe: dos comando.

    Exemplo: dos copy a:\antigo.m a:\novo.m.

  • 28

    computer

    Propsito: definir o tipo de computador em uso.

    Sintaxe: computer.

    Descrio: retorna uma string com o tipo do computador em uso.

    web

    Propsito: abrir pgina na internet ou arquivo html com o browser padro do

    sistema.

    Sintaxe: web arquivo; web endereo.

    Exemplo: web c:\paginas\info.htm; web http://www.mathworks.com.

    Examine tambm os comandos: getenv; unix; vms; realmax;

    realmin; clock; cputime; date; etime; tic; toc.

  • 29

    5 COMANDOS BSICOS PARA MANIPULAO DE MATRIZES

    zeros

    Propsito: cria uma matriz esparsa (composta de zeros).

    Sintaxe: zeros(n); zeros(n,m); zeros(size(a));

    Descrio: zeros(n) cria uma matriz quadrada composta de zeros; zeros(n,m)

    cria uma matriz n por m composta de zeros; zeros(size(a)) cria um matriz com as

    mesmas dimenses da matriz a, composta de zeros.

    Exemplo: zeros(4); zeros(2,3); zeros(size(a)).

    ones

    Propsito: cria uma matriz com elementos iguais a 1.

    Sintaxe: ones(n); ones(n,m); ones(size(a));

    Descrio: ones(n) cria uma matriz quadrada composta de elementos iguais a 1;

    zeros(n,m) cria uma matriz n por m composta de elementos iguais a 1;

    zeros(size(a)) cria um matriz com as mesmas dimenses da matriz a, composta

    de elementos iguais a 1.

    Exemplo: ones(4); ones(2,3); ones(size(a)).

    eye

    Propsito: cria uma matriz identidade ou matriz com diagonal 1.

    Sintaxe: eye(n); eye(n,m); ones(size(a));

    Descrio: eye(n) cria uma matriz quadrada composta de elementos iguais a 1

    na diagonal principal e demais elementos nulos; eye(n,m) cria uma matriz n por

    m composta de elementos iguais a 1 na diagonal principal e demais elementos

    nulos; eye(size(a)) cria um matriz com as mesmas dimenses da matriz a,

    composta de elementos iguais a 1 na diagonal principal e demais elementos

    nulos.

    Exemplo: eye(4); eye(2,3); eye(size(a)).

    rand

    Propsito: cria uma matriz com elementos gerados aleatoriamente.

    Sintaxe: rand(n); rand(n,m); rand(size(a));

  • 30

    Descrio: rand(n) cria uma matriz quadrada composta de elementos gerados

    aleatoriamente; rand(n,m) cria uma matriz n por m composta de elementos

    gerados aleatoriamente; rand(size(a)) cria um matriz com as mesmas dimenses

    da matriz a, composta de elementos gerados aleatoriamente.

    Exemplo: rand(4); rand(2,3); rand(size(a)).

    randn

    Propsito: o mesmo de rand, porm neste caso a distribuio segue o padro

    normal, enquanto rand segue padro uniforme.

    diag

    Propsito: extrai diagonais de matrizes e cria um vetor com estes elementos.

    Sintaxe: diag(m,k); diag(m);

    Descrio: diag(m) cria um vetor com a diagonal principal da matriz m. diag(m,k)

    cria um vetor com a k-sima diagonal acima (k>0) ou abaixo (k

  • 31

    size

    Propsito: retorna a dimenso de uma matriz ou estrutura.

    Sintaxe: size(a).

    Descrio: retorna um vetor com as dimenses da matriz ou estrutura a.

    length

    Propsito: retorna o comprimento de um vetor.

    Sintaxe: size(a).

    Descrio: retorna o comprimento do vetor a. Se a for matriz, size(a) retorna a

    mair dimenso de a.

    tril ou triu

    Propsito: extrai a matriz triangular inferior (tril) ou a matriz triangular superior

    (triu).

    Sintaxe: tril(a) ou triu(a); tril(a,k) ou triu(a,k).

    Descrio: extrai a matriz triangular superior (triu) ou inferior (tril) diagonal

    principal. Extrai a matriz triangular superior (triu) ou inferior (tril) k-sima linha

    acima (k>0) ou abaixo (k

  • 32

    6 FUNES MATEMTICAS ELEMENTARES

    abs

    Propsito: extrai o mdulo (valor absoluto) de um valor algbrico real ou

    complexo.

    Sintaxe: abs(arg).

    acos

    Propsito: determina o valor inverso (arco) do cosseno em radianos.

    Sintaxe: acos(arg).

    acosh

    Propsito: determina o valor inverso (arco) do cosseno hiperblico em radianos.

    Sintaxe: acosh(arg).

    angle

    Propsito: determina o ngulo em radianos de um nmero complexo.

    Sintaxe: angle(complexo).

    asin

    Propsito: determina o valor inverso (arco) do seno em radianos.

    Sintaxe: asin(arg).

    asinh

    Propsito: determina o valor inverso (arco) do asinh hiperblico em radianos.

    Sintaxe: asinh(arg).

    atan

    Propsito: determina o valor inverso (arco) da tangente em radianos.

    Sintaxe: atan(arg).

    atanh

    Propsito: determina o valor inverso (arco) da tangente hiperblico em radianos.

    Sintaxe: atanh(arg).

  • 33

    atan2

    Propsito: determina o valor inverso (arco) da tangente em radianos do ngulo

    de nmero complexo, nos quatro quadrantes.

    Sintaxe: atan2(parte-imag,parte-real)

    ceil

    Propsito: arredonda para o primeiro inteiro algebricamente superior.

    Sintaxe: ceil(arg).

    fix

    Propsito: arredonda para o inteiro mais prximo de zero.

    Sintaxe: fix(arg).

    round

    Propsito: arredonda para o inteiro mais prximo (arredondamento matemtico

    convencional).

    Sintaxe: round(arg).

    sign

    Propsito: retorna 1 se o argumento positivo e 0 se o argumento negado.

    Sintaxe: sign(arg).

    imag

    Propsito: extrai a parte imaginria de um complexo.

    Sintaxe: imag(complexo).

    real

    Propsito: extrai a parte real de um complexo.

    Sintaxe: real(complexo).

    conj

    Propsito: extrai o conjugado de um complexo.

    Sintaxe: conj(complexo).

    cos

    Propsito: calcula o cosseno de um arco em radianos.

  • 34

    Sintaxe: cos(arco).

    sin

    Propsito: calcula o seno de um arco em radianos.

    Sintaxe: sin(arco).

    tan

    Propsito: calcula a tangente de um arco em radianos.

    Sintaxe: tan(arco).

    cosh

    Propsito: calcula o cosseno hiperblico de um arco em radianos.

    Sintaxe: cosh(arco).

    sinh

    Propsito: calcula o seno hiperblico de um arco em radianos.

    Sintaxe: sinh(arco).

    tanh

    Propsito: calcula a tangente hiperblica de um arco em radianos.

    Sintaxe: tanh(arco).

    exp

    Propsito: calcula o valor de earg.

    Sintaxe: exp(arg).

    pow2

    Propsito: calcula o valor de 2arg.

    Sintaxe: pow2(arg).

    sqrt

    Propsito: calcula o valor da raiz quadrada de arg.

    Sintaxe: sqrt(arg).

    log

    Propsito: calcula o valor do logaritmo na base natural e (ln).

    Sintaxe: log(arg).

  • 35

    log10

    Propsito: calcula o valor do logaritmo na base 10.

    Sintaxe: log10(arg).

    log2

    Propsito: calcula o valor do logaritmo na base 2.

    Sintaxe: log2(arg).

    rem

    Propsito: retorna o resto inteiro de uma diviso de x por y.

    Sintaxe: rem(x,y).

    Examine tambm os comandos: sec; sech; asec; asech; csc; csch; acsc;

    acsch; cot; coth; acot; acoth; nextpow2; unwrap; isreal; cplxpair; mod.

  • 36

    7 COMANDOS DE CONTROLE GRFICO

    7.1 Grficos Bidimensionais

    plot

    Propsito: imprime o vetor em grfico bidimensional.

    Sintaxe: plot(x,y,cst)

    Descrio: imprime o vetor y na ordenada em relao ao vetor x na abcissa. x e

    y devem obrigatoriamente ter as mesmas dimenses. A string cst permite

    selecionar a cor (c=ymrcrgbwk), o tipo de smbolo (s=*.ox+sdv^ph), e o tipo de

    linha(t=--:-.--).

    Exemplo: plot(x,sin(x),m*-.) plota seno de x em cor magenta, com smbolos *

    para cada ponto e linha tracejada e pontilhada.

    No comando plot os vetores de ordenada e abscissa devem ter as

    mesmas dimenses.

    subplot

    Propsito: divide uma figura em vrios grficos.

    Sintaxe: subplot(n,m,p)

    Descrio: subplot(n,m,p) divide a figura em uma matriz nxm de grficos e

    seleciona o p-simo grfico. p contado da esquerda para a direita, continuando

    na linha de baixo.

    Exemplo: subplot(3,3,5) divide a figura em 9 grficos, distribudos em 3 linhas e

    3 colunas, e seleciona o grfico central.

    O comando subplot apenas seleciona um dos grficos da matriz nxm,

    mas o comando plot que executa a impresso.

    loglog

    Propsito: o mesmo que plot, porm agora as escalas de ordenadas e abscissas

    so do tipo logartmicas.

    Sintaxe: loglog(x,y,cst)

  • 37

    semilogx

    Propsito: o mesmo que plot, porm agora a escala da abscissa do tipo

    logartmica.

    Sintaxe: semilogx(x,y,cst)

    semilogy

    Propsito: o mesmo que plot, porm agora a escala da ordenada do tipo

    logartmica.

    Sintaxe: semilogy(x,y,cst)

    polar

    Propsito: desenha grfico em formato polar.

    Sintaxe: polar(ang,raio,cst)

    Descrio: imprime cada elemento do vetor raio em relao ao elemento

    correspondente do vetor ang (ngulo). A string cst permite selecionar a cor

    (c=ymrcrgbwk), o tipo de smbolo (s=*.ox+sdv^ph), e o tipo de linha(t=--:-.--).

    Ex.: polar((linspace(0:2*pi),4*ones(1,100)) plota uma circunferncia de raio 4.

    axis

    Propsito: controla a aparncia das escalas da abscissa e da ordenada.

    Sintaxe: axis([xmin xmax ymin ymax]).

    Descrio: ajusta a escala da abscissa para valores entre xmin e xmax, e a

    escala da ordenada para valores entre ymin e ymax.

    Exemplo: axis ([-3 4 0 10]) desenha o grfico com escalas de 3 a 4 para o eixo

    da abscissa e 0 a 10 para o eixo da ordenada.

    grid

    Propsito: traa uma grade sobre o plot atual.

    Sintaxe: grid.

    hold

    Propsito: retm o estado do plot atual de modo a permitir que o prximo grfico

    seja impresso sobre o atual. hold on liga o estado do comando e hold off desliga

    o estado do comando.

    Sintaxe: hold; hold on; hold off.

  • 38

    title

    Propsito: Cria texto de ttulo no plot atual.

    Sintaxe: title(texto).

    xlabel

    Propsito: Cria texto para o eixo da abcissa.

    Sintaxe: xlabel(texto).

    ylabel

    Propsito: Cria texto para o eixo da ordenada.

    Sintaxe: ylabel(texto).

    gtext

    Propsito: Cria texto para ser posicionado com o mouse.

    Sintaxe: gtext(texto).

    Examine tambm os comandos: plotyy; axes; box; legend; text; print;

    printopt; orient.

    7.2 Grficos Tridimensionais

    As funes de manipulao e controle de grficos em trs eixos e funes

    grficas mais avanadas so dadas no quadro a seguir:

    Examine os comandos: plot3d; fill3; contour; contour3; clabel; contourc;

    pcolor; quiver; image; mesh; meshc; meshz; surf; surfc; surfl; waterfall;

    slice; view; viewmtx; hidden; shading axis; caxis; colormap; title; xlabel;

    ylabel; zlabel; text; gtext; grid; cylinder; sphere; figure; gcf; clf close; gca;

    caxis; hold; line; patch; text; surface; image; uicontrol; uimenu; set; ger;

    reset; delete; drawnow; print; printop; moviein; getframe; movie; ginput;

    ishold.

  • 39

    8 OUTROS COMANDOS

    8.1 Funes Lgicas

    exist

    Propsito: verifica se uma varivel ou funo existe no caminho do MATLAB.

    Sintaxe: exist(arg).

    Descrio: exist(arg) retorna 1 se existir a varivel ou funo arg; caso contrrio

    retorna 0.

    Exemplo: exist(var1).

    any

    Propsito: verifica se um vetor possui um elemento diferente de zero.

    Sintaxe: any(vet).

    Descrio: any(vet) retorna 1 se existir um nico elemento diferente de zero no

    vetor vet; caso contrrio retorna 0.

    Exemplo: any(nomes).

    all

    Propsito: verifica se um vetor possui todos elementos diferentes de zero.

    Sintaxe: all(vet).

    Descrio: all(vet) retorna 1 se todos os elementos de vet forem diferentes de

    zero; caso contrrio retorna 0.

    Exemplo: all(nomes).

    find

    Propsito: encontra os ndices dos elementos no-nulos de uma matriz.

    Sintaxe: find(mat).

    Exemplo: find(rand(3)).

    isnan

    Propsito: verifica se h elementos do tipo NaN em uma matriz.

    Sintaxe: isnan(mat).

  • 40

    Descrio: isnan(vet) retorna uma matriz onde os elementos so 1 na posio

    onda h um elemento NaN na matriz original e 0 nas demais posies.

    Exemplo: isnan(mat).

    isinf

    Propsito: verifica se h elementos do tipo inf em uma matriz.

    Sintaxe: isinf(mat).

    Descrio: isinf(mat) retorna uma matriz onde os elementos so 1 na posio

    onda h um elemento inf na matriz original e 0 nas demais posies.

    Exemplo: isinf(mat).

    finite

    Propsito: verifica se h elementos finitos em uma matriz

    Sintaxe: finite(mat).

    Descrio: finite(mat) retorna uma matriz onde os elementos so 1 na posio

    onda h um elemento diferente de NaN ou de Inf na matriz original e 0 nas

    demais posies.

    Exemplo: finite(mat).

    ischar

    Propsito: verifica se o argumento uma cadeia de caracteres (string).

    Sintaxe: ischar(arg).

    Descrio: ischar(arg) retorna 1 se arg for uma cadeia de caracteres; caso

    contrrio retorna 0.

    Exemplo: ischar(nome) retornar 1.

    Examine tambm os comandos: isieee; isempty; issparse.

    8.2 Funes de Controle de Fluxo de Programao

    if, else, elseif e end

    Propsito: testar condio e determinar sentenas a serem executadas.

    Sintaxe:

  • 41

    IF exp1

    stat1

    ELSEIF exp2

    stat2

    ELSE

    stat3

    END

    Descrio: testa exp1. Se exp1 for verdadeira executa as sentenas em stat1 e

    vai para end; caso contrrio, testa exp2. Se exp2 for verdadeira executa as

    sentenas em stat2 e vai para end; caso contrrio executa stat3.

    Exemplo:

    if I == J

    A(I,J) = 2;

    elseif abs(I-J) == 1

    A(I,J) = -1;

    else

    A(I,J) = 0;

    end

    for, end

    Propsito: cria, incrementa e testa ndice de controle para execuo de

    sentenas.

    Sintaxe: FOR var = expr, stat1, stat2,..., statn END

    Descrio: enquanto a varivel var for inferior ao limite estabelecido, as

    sentenas stat1, stat2 at statn sero executadas.

    Exemplo:

    FOR I = 1:N,

    FOR J = 1:N,

    A(I,J) = 1/(I+J-1);

    END

    END

    while, end

    Propsito: testa a expresso de controle para execuo de outras sentenas.

  • 42

    Sintaxe:

    WHILE exp

    stats

    END

    Descrio: enquanto a expresso exp for verdadeira, as sentenas stats sero

    executadas.

    Exemplo:

    E = 0*A; F = E + eye(size(E)); N = 1;

    while norm(E+F-E,1) > 0,

    E = E + F;

    F = A*F/N;

    N = N + 1;

    end

    swtch, end

    Propsito: testa expresso de controle e seleciona um caso para executar.

    Sintaxe:

    SWITCH switch_expr

    CASE case_expr,

    stat1, ..., stat1n

    CASE {case_expr1, case_expr2, case_expr3,...}

    stat2, ..., stat2n

    ...

    OTHERWISE,

    stat3, ..., stat3n

    END

    Descrio: Se switch_expr for igual a case_expr, ento as sentenas stat1 at

    stat1n sero executadas, e terminado o comando. Se switch_expr for igual a

    case_expr1 ou case_expr2 ou case_expr3 ..., ento as sentenas stat2 at

    stat2n sero executadas, e terminado o comando. Se switch_expr for diferente

    de todos as case_exprs anteriores, ento as sentenas stat3 at stat3n sero

    executadas, e terminado o comando.

  • 43

    Exemplo:

    switch lower(METHOD)

    case {'linear','bilinear'}, disp('Method is linear')

    case 'cubic', disp('Method is cubic')

    case 'nearest', disp('Method is nearest')

    otherwise, disp('Unknown method.')

    end

    break

    Propsito: encerra a execuo de comandos for ou while quando so

    encontrados.

    Sintaxe: break.

    input

    Propsito: exibe mensagem na tela e d ao usurio um prompt para entrada de

    dados.

    Sintaxe: input(texto); input(texto,s).

    Descrio: input(texto) exibe o texto na tela da linha de comando e retorna o

    valor digitado at que seja pressionado enter. input(texto,s) utilizado para

    entrada de strings.

    Exemplo: id=input(Digite sua idade) guarda o nmero digitado em id;

    nom=input(Digite o seu nome, s) guarda a string digitada em nom.

    disp

    Propsito: exibe texto na tela de comando.

    Sintaxe: disp(texto).

    keyboard

    Propsito: invoca o teclado a partir de um arquivo MATLAB.

    Sintaxe: keyboard.

    pause

    Propsito: gera pause na execuo de um arquivo MATALB.

    Sintaxe: pause; pause(n); pause on; pause off.

  • 44

    Descrio: pause interrompe a execuo at que o usurio aperte alguma tecla.

    Pause(n) interrompe a execuo por n segundos. Pause on (off) liga (desliga) o

    modo de pausa dos comandos subseqentes.

    Exemplo: pause; pause(5); pause on; pause off.

    Examine tambm os comandos: return, eval; feval; evalin; builtin;

    assignin; run; script functio; global; mfilename; lists exist; isglobal;

    nargchk; nargin; nargout; varargin; varargout; inputname; error;

    warning; lasterr; errortrap; fprintf; sprintf; uimenu; uicontrol; dbstop.

    8.3 Funes de Controle de Baixo Nvel

    fopen

    Propsito: abrir arquivo para leitura e/ou escrita.

    Sintaxe: fopen(nome-do-arq,permisso)

    Descrio: abre arquivo com o nome especificado para as operaes descritas

    em permisso.

    Exemplo: fopen(novo.m,r) abre o arquivo novo.m para leitura.

    fclose

    Propsito: fechar arquivo.

    Sintaxe: fopen(nome-do-arq).

    fopen

    Propsito: abrir arquivo para leitura e/ou escrita.

    Sintaxe: fopen(nome-do-arq,permisso)

    Descrio: abre arquivo com o nome especificado para as operaes descritas

    em permisso.

    Exemplo: fopen(novo.m,r) abre o arquivo novo.m para leitura.

    Examine tambm os comandos: fread; fwrite; fscanf; fprintf; fgetl;

    fgets; ferror; fseek; ftell; sprintf; sscanf.

  • 45

    8.4 Funes Especializadas: Matemticas, Matriciais, lgebra Linear

    So funes de clculos algbricos com matrizes e clculos de lgebra linear.

    Examine os comandos: cond; norm; rcond; rand; det; trace; null; orth; rref;

    chol; lu; qr; nnls; pinv; lscov; poly; hess; qz; rsf2csf; cdf2rddf; schur;

    balance; svd; expm; expm1; expm2; expm3; logm; log2m; sqrtm; funm;

    speye; sprandn; sprandsym; spdiags; sparse; full; spconvert; nnz;

    nonzeros; nzmax; spones; spalloc; issparse; spfun; spy; gplot; colmmd;

    symmmd; symrcm; colperm; tandperm; dmperm; normest; condest;

    sprank; symbfact; spparms; spaugment.; compan; hadamard; hankel; hilb;

    invhilb; pascal; rosser; toeplitz; vander; wilkinson.

    8.5 Funes de Integrao, Interpolao e Tratamento de Dados

    So funes teis para soluo de equaes diferenciais; interpolao de curvas

    e tratamento de pontos.

    Examine os comandos: roots; poly; polyval; polyvalm; residue; polyfit;

    polyfit; polyder; conv; deconv; interp1; intep2; interpft; griddata; ode23;

    ode45; quad; quad8; fmin; fmins; fzero; fplot.

    8.6 Funes de Controle de Cores, Imagens e Caracteres

    So funes teis para o controle de cores, manipulao de imagens, animao e

    controle de grficos.

    Examine os comandos: colormap; caxis; shading; hsv; gray; hot; cool;

    bone; copper; pink; flag; hsv2rgb; rgb2hsv; brighten; spinmap; rgbplot;

    surfl; pecular; diffuse; surfnorm; sound; saxis; auwrite; auread; mu2lin;

    lin2mu; string; abs; setstr; str2mat; strcomp; upper; lower; num2str;

    int2str; str2num; sprintf; sscanf; hex2num; hex2dec; dec2hex.

  • 46

    9 PROGRAMANDO EM ARQUIVOS .m

    Podemos elaborar programas utilizando instrues assemelhadas aos

    comandos das linguagens procedurais, lanando dos arquivos .m do MATLAB.

    Para isto basta criar um arquivo com extenso .m no diretrio /work ou /temp

    do seu computador.

    9.1 Exemplos de Aplicao de Programa '.m'

    Exemplo 9.1: Programa raizes.m, que calcula as razes de uma equao do 2

    grau.

    % Objetivo: Calcular raizes de uma equao do 2o.grau

    % Prof. Baleeiro

    disp(' ==== Entre com a, b e c ==== '); a = input(' Coeficiente de x^2 '); b = input(' Coeficiente de x '); c = input(' Termo independente de x '); if a == 0. disp(' ==== A equacao nao e do segundo grau ==== '); a = input(' Coeficiente de x^2 - a 0 '); end delta = b^2-4.*a*c; delta if delta == 0. ch = 0; end if delta < 0. ch = -1; end if delta > 0. ch = 1; end x(1) = (-b + sqrt(delta))/(2.*a); x(2) = (-b - sqrt(delta))/(2.*a); x switch ch case 0, disp(' Raizes reais e iguais.') case -1, disp(' Raizes complexas conjugadas.') otherwise,disp(' Raizes reais e desiguais.') end % Fim

  • 47

    Para executar este programa preciso apenas digitar no ambiente do MATLAB

    (isto , no prompt) o nome do programa sem a extenso: >>raizes < ENTER >

    As razes de qualquer polinmio podem ser encontradas de maneira mais direta

    no ambiente de trabalho do MATLAB. O comando utilizado denominado "roots", que

    tem o formato a seguir:

    >>roots([A B C]) < ENTER >

    Onde A coeficiente do termo x^2, B o coeficiente do termo x e C o termo

    independente.

    Por exemplo, as razes da equao do 2o x^2 - 5x + 6 = 0 so:

    Um outro exemplo de clculo da razes de um polinmio:

    Ou seja, as razes do polinmio x^3-6x^2+11x-6 = 0 so: 1, 2 e 3.

    Obs.: O comando poly faz a operao inversa do comando roots, ou seja,

    tendo-se as razes, obtm-se o polinmio correspondente. Assim,

    poly([1 2 3])

    ans = 1 -6 11 -6 (polinmio x^3 - 6x^2 + 11x - 6 = 0)

    roots([1 -6 11 -6]) ans = 3.0000 2.0000 1.0000

    roots([1 -5 6])

    ans = 3 2

  • 48

    Exemplo 9.2: Um outro exemplo de implementao de um cdigo .m no MATLAB

    mostrado a seguir em que a soluo de um sistema algbrico linear obtida pela

    aplicao do mtodo iterativo de Jacobi. Denominaremos este programa de jacobi.m.

    % Metodo de Jacobi para solucionar Ax = b

    % Prof. Baleeiro

    A = [6 -1 0;-1 4 1;0 1 6]

    b = [-1; 1 ; 2]

    [n,n] = size(A);

    x = zeros(n,1);

    r = zeros(n,1); % vetor de residuos

    tol = 1e-2;

    % Matriz de iteracao:

    D = diag(diag(A))

    L = tril(A)-D;

    U = triu(A)-D;

    E = -inv(D)*(L + U);

    F = inv(D)*b;

    % Autovalores de E

    eig(E)

    k = 0;

    maior = inf;

    while maior > tol

    x = E*x + F;

    r = A*x-b;

    maior = norm(r,inf) % norma infinita do vetor r

    pause

    k = k + 1;

    end;

    x

    k

  • 49

    Para compreender o cdigo mostrado anteriormente, segue uma breve

    descrio do mtodo iterativo de Jacobi para soluo de bAx = . O mtodo iterativo de

    Jacobi quando aplicado para resolver um sistema de equaes lineares algbricas

    simultneas, do tipo bAx = baseia-se numa partio da matriz dos coeficientes, da

    seguinte forma DULA ++= , onde L e U so matrizes triangulares inferior e superior

    obtidas de A , respectivamente, excluindo-se os elementos da diagonal, e D a matriz

    composta apenas dos elementos da diagonal da matriz A (observe que L , U e D no

    so matrizes resultantes da fatorao de A , trata-se apenas de uma partio).

    Dessa forma, o sistema original pode ser reescrito como a seguir:

    ,)(

    FExx

    bxULDx

    bAx

    +=++=

    =

    de modo que,

    bDFULDE 11 ),( =+= .

    Designando E com a matriz de iterao, )(1 ULDE += , dado )0(x e uma

    tolerncia tol , o processo iterativo consiste em construir aproximaes do vetor

    soluo x do sistema algbrico, conforme a equao de iterao mostrada a seguir:

    FExx kk +=+ )()1( , para ,3,2,1,0=k .

    O processo iterativo deve continuar enquanto o critrio de convergncia no for

    alcanado. Uma forma que pode ser adequada para verificar a convergncia calcular

    a norma-infinita do vetor de resduos, bAxr kk = ++ )1()1( , isto , se tolr k

    + )1( ,

    ento a )(kx a uma aproximao aceitvel para solucionar bAx = . Uma condio

    para convergncia do mtodo de Jacobi que o maior mdulo dos autovalores da

    matriz E seja inferior a 1.

    Os passos do algoritmo do mtodo de Jacobi para soluo de sistemas bAx =

    so apresentados a seguir:

  • 50

    A = [-1, 2, 0; 1/2, 9, 3; 2, 4, 5] A = -1.0000 2.0000 0 0.5000 9.0000 3.0000 2.0000 4.0000 5.0000 b = [3; -2; 7] b = 3 -2 7 x = A\b x = -6.1923 -1.5962 5.1538

    Dados A , b , tol e )0(x

    Calcule D diag(diag(A)), L , tril(A) D, U triu(A) D

    )(1 ULDE +=

    bDF 1=

    Verifique se 1|)(| tol faa

    FExx kk ++ )()1( , maior |)(| )1( bAxmximo k + , 1+ kk

    Fim enquanto

    Sada x e k

    Exemplo 9.3: Soluo de sistema de equaes algbricas lineares

    =

    72

    3

    54239021

    3

    2

    1

    21

    x

    x

    x

    A soluo do exemplo 9.3 facilmente obtida informando ao MATLAB, no

    prprio prompt, a matriz A e o vetor independente b . A soluo x procurada para o

    sistema obtida com o comando x = A\b, como a seguir.

  • 51

    10 MATEMTICA SIMBLICA

    Exemplo 10.1: Soluo de integral definida

    dx

    x +1

    0 121

    O exemplo 10.1, para ser resolvido, requer que seja informado ao MATLAB que

    h uma varivel x , que deve ser tratada como um dado simblico. Isto feito atravs

    do comando:

    Os comandos seguintes mostram a finalizao da soluo do exemplo 10.1:

    Realmente, o valor resultante da integrao da funo 1

    1)(

    2 +=

    xxf entre 0 e 1

    de fato 4

    .

    Exemplo 10.2: Sistema massa-mola. Este sistema ser, tambm, analisado usando

    o Simulink, na seo 11 deste texto.

    Fig. 10.1: Sistema massa-mola.

    syms x

    int(1/(x^2 + 1),0,1) ans = 1/4*pi

    x

    m

    F m

    0

  • 52

    As equaes do sistema massa-mola so dadas na seo 11 e, assim, passa-se

    diretamente ao programa .m desenvolvido e os resultados mais importantes.

    Selecionou-se para este exemplo os grficos de energia versus deslocamento e

    velocidade versus deslocamento, que sero comparados com os resultados

    equivalentes, quando da utilizao do Simulink. Observar que, no presente resultado, a

    velocidade mostrada apenas no sentido do deslocamento negativo para o positivo. A

    velocidade no sentido inverso (que mostrada no modelo do Simulink) negativa.

    % Sistema massa-mola % Prof. Jos Wilson k =input('constante de elasticidade da mola (N/m)Ex.:700= '); xmax=input('deslocamento mximo da mola xmax (cm);Ex.: 20= '); m =input('massa do bloco ligado mola (g); Ex.:500= '); xmax = xmax/100; m = m/1000; x = [-xmax:0.001:xmax]; Etotal = (1/2)*k*(xmax^2); % Energia total F = -k*x; % Fora na mola Ep = (1/2)*k*(x.^2); % Energia potencial Ec = Etotal - Ep; % Energia cintica - Conservao de energia v = sqrt(2*Ec./m); % Velocidade da massa-Conservao de energia vmax = sqrt(2*Etotal/m); % Velocidade mxima figure(1) plot(x*100,Ep,'r') hold on plot(x*100,Ec,'k') plot(x*100,Etotal,'m') axis([-xmax*100 xmax*100 0 Etotal]) xlabel('deslocamento (cm)') ylabel('energia cintica, potencial e total (J)') grid on hold off figure(2) plot(x*100,v) axis([-xmax*100 xmax*100 0 vmax]) xlabel('deslocamento (cm)') ylabel('velocidade da massa (m/s)') grid on

  • 53

    Fig. 10.2: Energia Cintica, Potencial e Total versus Deslocamento

    Fig. 10.3: Velocidade versus Deslocamento

    Exemplo 10.3: Lanamento de projtil. Neste exemplo entra-se com os dados de

    altura inicial, velocidade inicial, posio horizontal inicial e ngulo de lanamento. O

    programa calcula o tempo transcorrido at o projtil atingir o solo, a velocidade no

    momento em que toca o solo e a altura mxima atingida.

    -20 -15 -10 -5 0 5 10 15 200

    2

    4

    6

    8

    10

    12

    14

    deslocamento (cm)

    ener

    gia

    cin

    tica,

    pot

    enci

    al e

    tota

    l (J)

    Energia Potencial

    Energia Cintica

    Energia Total

    -20 -15 -10 -5 0 5 10 15 200

    1

    2

    3

    4

    5

    6

    7

    deslocamento (cm)

    velo

    cida

    de d

    a m

    assa

    (m/s

    )

  • 54

    Fig. 10.4: Lanamento de projtil

    VO VOY

    VOX

    h

    d dO

    hO

    % Lanamento de projtil % Prof. Jos Wilson ho = input('Altura inicial ho (m) Ex.: 40 = '); vo = input('velocidade inicial vo (m/s) Ex.: 25 = '); alfa = input('ngulo de lanamento alfa (grau) Ex.: 45 = '); do = input('posio inicial do projtil (m) Ex.: 0 = '); alfa = alfa*pi/180; vxo = vo*cos(alfa); vyo = vo*sin(alfa); g = -9.8; % Acelerao da gravidade h = [0.5*g vyo ho]; % Para clculo do tempo mximo tlimites = roots(h); % Clculo do tempo limite - tem 2 valores if tlimites(1) > 0 tmax = tlimites(1); else tmax = tlimites(2); end t = [0:0.01:tmax]; vx = vxo; vy = vyo + g*t; thmax = abs(vyo/g); % tempo para atingir altura maxima d = do + vxo*t; h = ho + vyo*t + 0.5*g.*t.^2;

  • 55

    Fig. 10.5: Altura do projtil versus alcance horizontal

    A altura mxima, a distncia mxima e o tempo decorrido at atingir o solo so: hmax = 55,9 m dmax = 91,6 m tmax = 5,18 s

    hmax = ho + vyo*thmax + 0.5*g*thmax^2; % altura maxima vmax = vyo + g*tmax; % velocidade maxima dmax = do + vxo*tmax; % distancia maxima alcancada figure(1) plot(d,h) axis([0 dmax 0 hmax]) xlabel('distncia horizontal (m)') ylabel('altura (m)') grid on figure(2) plot(t,h) axis([0 tmax 0 hmax]) xlabel('tempo (s)') ylabel('altura (m)') grid on figure(3) plot(t,d) axis([0 tmax 0 dmax]) xlabel('tempo (s)') ylabel('distncia horizontal (m)') grid on

    0 10 20 30 40 50 60 70 80 900

    10

    20

    30

    40

    50

    distncia horizontal (m)

    altu

    ra (m

    )

  • 56

    10.1 Uso da Matemtica Simblica

    O MATLAB possui um Toolbox que permite ao usurio operar com matemtica

    simblica. Sabemos que variveis numricas so usadas para armazenar valores

    numricos (e.g., x = 2) e vetores de caracteres so usados para armazenar textos (e.g.,

    s = Jonas). O Toolbox de Matemtica Simblica usa objetos simblicos para

    representar variveis e operaes (e.g., x = sym( x )). Neste tipo de aplicao no

    necessrio que as variveis tenham um valor numrico predefinido.

    A matemtica simblica consiste da resoluo de equaes simblicas (isto ,

    na forma literal) e da execuo de operaes de clculo diferencial/integral e lgebra

    por meio da aplicao de regras conhecidas e identidades a determinados smbolos,

    exatamente como voc aprendeu a resolv-las nos cursos de clculo e lgebra.

    Exemplo 10.4: Obter, de forma literal, a derivada em relao a x da funo f(x)

    dada a seguir:

    bxaxxf += 2)(

    necessrio, em primeiro lugar, informar ao MATLAB que x, a, b e f no so

    objetos simblicos, ou seja, no possuem valores numricos. Ento:

    Em seguida, define-se a funo e utiliza-se o comando diff para concluir a

    operao simblica de derivao.

    syms x a b f

    f = a*x^2 + b*x

    f = a*x^2+b*x diff(f,x)

    ans = 2*a*x+b

  • 57

    Exemplo 10.5: Outro exemplo (mais complexo) do uso da matemtica simblica do

    MATLAB. Clculo da rea interna de uma elipse dada no sistema de coordenadas xy

    pela equao:

    12

    2

    2

    2=+

    b

    y

    a

    x

    Deseja-se obter uma frmula para calcular sua rea interna A dados a e b . A

    integral mostrada a seguir usada no clculo dessa rea.

    dxxaab

    Aa

    =0

    224

    A soluo deste problema conhecida dos estudantes que fizeram cursos de

    clculo diferencial e integral. O resultado A=ab. Utilize a Toolbox de Matemtica

    Simblica para comprovar este resultado. No caso, voc dever lanar mo do

    comando int, que calcula integral de uma funo dada em intervalo definido.

    10.2 Grficos em Duas Dimenses

    Embora existam vrias formas para se fazer grficos, nesta seo vamos nos ater

    apenas exemplificao do emprego do comando plot. Esse comando j foi

    utilizado em alguns exemplos anteriores.

    Exemplo 10.6: Grfico em duas dimenses

    Esse exemplo cria 30 pontos no intervalo 22 x para formar o eixo

    horizontal do grfico e cria o vetor y contendo a exponencial 2xe dos pontos em x. O

    x = linspace(-2,2,30); y = exp(-x.^2); plot(x,y)

  • 58

    comando plot abre uma janela grfica, ajusta os eixos para acomodar os dados,

    marca os pontos e conecta-os a linhas retas. O resultado ilustrado na Fig. 10.6.

    Fig. 10.6: Sada grfica obtida com os comandos indicados anteriormente.

    10.3 Grficos em Trs Dimenses

    Para elaborar grficos tridimensionais o MATLAB possui diversos comandos

    poderosos. Sugerimos que voc tente as seqncias de comandos propostas nos

    exemplos que seguem.

    Exemplo 10.7: Use do comando plot3 para desenhar uma hlice, de acordo com a

    seqncia:

    -2 -1.5 -1 -0.5 0 0.5 1 1.5 20

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1

    t = linspace(0, 10*pi); plot3(sin(t),cos(t),t)

  • 59

    x = -7.5:.5:7.5; y = x; [X,Y] = meshgrid(x,y); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; mesh(X,Y,Z)

    Exemplo 10.8: Uso do comando mesh para grficos tridimensionais. Use a

    seqncia de comandos para desenhar uma superfcie.

    Fig. 10.7: Sada grfica obtida com a seqncia de comandos do exerccio 3.

  • 60

    11 SIMULINK

    O SIMULINIK um Programa de Simulao dinmica de sistemas a partir de

    seu modelo no espao de estados, do seu modelo no domnio da freqncia ou do seu

    modelo no domnio do tempo.

    O simulink iniciado digitando-se simulink na linha de comando do MATLAB,

    ou ainda selecionando-se o boto de incio do SIMULINK. Uma vez iniciado

    apresentada a tela da figura a seguir:

    Fig. 11.1: Tela Inicial do Simulink

    Fig. 11.2: Funes disponveis para a classe linear do Simulink.

  • 61

    Os diversos blocos de simulao podem ser arrastados para o arquivo, com a

    finalidade de montar o modelo para simulao. Cada classe de funes possui uma

    janela prpria (caixa), veja por exemplo os blocos disponveis para as funes da

    classe linear na figura anterior.

    A seguir so dados alguns exemplos de emprego do Simulink em problemas de

    Matemtica, Fsica, Circuitos Eltricos, Controle de Processos e Outros.

    Exemplo 11.1: Equao Diferencial de Primeira Ordem

    Considere .,),( RR = tutuu Seja a equao diferencial de primeira ordem

    em )(tu , com valor inicial conhecido, .1)0( =u

    02 =+ utdtdu

    (11.1)

    Analiticamente fcil mostrar que uma soluo dessa equao diferencial :

    22

    )()0()( tt etueutu == (11.2)

    Vamos resolver a equao diferencial (11.1) utilizando o Simulink e, ao final,

    obteremos a resposta na forma grfica.

    Soluo:

    PASSO 1: Inicialmente escreve-se a equao (11.1) de uma forma mais adequada

    para diagrama de blocos. Transpondo os termos, chega-se forma indicada

    em (11.3):

    = dtutu 2 (11.3)

    Ao fator 2 chamamos de ganho; o integrando resultado de um produto de duas

    funes, t e u . Portanto, a resposta u a resultante da sada de um integrador

    multiplicado pelo ganho 2.

  • 62

    PASSO 2: A partir da janela mostrada na Figura 11.1, selecionamos os blocos

    necessrios para expressar a relao (11.3).

    Fig. 11.3: Diagrama de blocos para resolver o Exemplo 11.1

    A condio inicial informada ao bloco integrador. O eixo dos tempos

    representado pelos blocos Clock e To Workspace. Em ambos os blocos To

    Workspace preciso definir o nmero de pontos e o tamanho do passo numrico

    (neste exemplo, tomamos 5000 e 0.01, respectivamente).

    PASSO 3: Para executar o arquivo criado, definido pelo diagrama de blocos, nos cones

    da mesma janela, pressionamos Simulation e, em seguida, Start.

    Fig. 11.4: Para executar o arquivo de blocos.

    PASSO 4: Para visualizar o resultado, no prompt do MATLAB, digitamos o comando:

    A sada grfica da resposta ttu )( como ilustra a Fig. 11.5.

    plot(t,u)

  • 63

    Fig. 11.5: Grfico de ttu )( para 0t .

    Finalizamos, desse modo, a soluo da equao diferencial (11.1), que resultou

    na representao grfica da funo 2te para 0t .

    Exemplo 11.2: Sistema Massa-Mola

    Fig. 11.6: Representao do Sistema Massa-Mola

    0 2 4 6 8 100

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1

    x

    m

    F m

    0

  • 64

    Equaes bsicas da Fsica:

    Acelerao: 2

    2

    dt

    xddtdv

    a == ( 11.4 )

    Velocidade: == adtdtdx

    v ( 11.5 )

    Deslocamento: = vdtx ( 11.6 )

    Equaes bsicas do Sistema massa-mola:

    Fora: makxF == 2

    2

    dt

    xdmkx = x

    mk

    dt

    xda == 2

    2 ( 11.7 )

    Energia potencial: 221

    kxE p = ( 11.8 )

    Energia cintica : 221

    mvEc = ( 11.9 )

    Verifica-se das equaes que a acelerao, no sistema massa-mola,

    diretamente proporcional ao deslocamento 'x'. O fator de proporcionalidade a

    constante '-k/m'. Essa a informao inicial para comear o modelo dado na Fig. 11.7.

    Fig. 11.7: Modelo do Simulink para o Sistema Massa-Mola

    Para a simulao do sistema necessrio fornecer um valor inicial para um dos

    dois blocos de integrao. Essa informao ser, no caso, o limite para a varivel de

    sada. Por exemplo, desejando-se limitar o deslocamento 'x' entre os valores -20 cm

    (-0.2 m) e 20 cm, fixa-se em 0.2 o valor inicial da segunda integral. Uma outra

    x va

    v

    velocidade

    t

    tempo

    x

    posio

    ac

    acelerao

    s

    1

    Integrator1s

    1

    Integrator

    k/2

    m/2

    -k/m

    Ep

    En. Potencial

    Ec

    En. Cinetica

    Clock

  • 65

    informao fundamental o valor da constante de proporcionalidade 'k' e o valor da

    massa 'm'. Esses valores podem ser digitados diretamente no prompt (rea de trabalho

    do MATLAB), como mostrado a seguir:

    As figuras que seguem so resultantes do modelo da Fig. 11.7.

    Fig. 11.8: Energia cintica e potencial versus deslocamento

    Fig. 11.9: Energia cintica e potencial versus velocidade

    -0.2 -0.15 -0.1 -0.05 0 0.05 0.1 0.15 0.20

    5

    10

    15

    posio (m)

    Ene

    rgia

    Cin

    tic

    a e

    Pot

    enci

    al (J

    )

    Energia Cintica

    Energia Potencial

    -8 -6 -4 -2 0 2 4 6 80

    5

    10

    15

    velocidade (m/s)

    Ene

    rgia

    Cin

    tic

    a e

    Pot

    enci

    al (J

    )

    Energia Cintica

    Energia Potencial

    k = 700;

    m = 0.5;

  • 66

    Fig. 11.10: Velocidade versus deslocamento

    Exemplo 11.3: Circuito RC Srie

    Considere o circuito eltrico da Fig. 11.11, que possui um resistor e um capacitor

    em srie alimentados por uma fonte constante. O capacitor possui uma tenso inicial

    Vv 10)0( = e deseja-se obter a resposta ttv )( para .0t

    Fig. 11.11: Circuito eltrico RC srie com uma fonte de tenso contnua.

    -0.2 -0.15 -0.1 -0.05 0 0.05 0.1 0.15 0.2-8

    -6

    -4

    -2

    0

    2

    4

    6

    8

    velo

    cida

    de (m

    /s)

    posio

  • 67

    Modelagem Matemtica do Circuito

    A modelagem matemtica do circuito obtida aplicando-se a 2a Lei de Kirchhoff

    ao percurso fechado, e usando a forma genrica e , para expressar tenso:

    0= vve R

    Por outro lado, sabemos relacionar a tenso no resistor e a tenso no capacitor

    com a corrente que os atravessam, )(ti :

    )(tRivR =

    dtdv

    Cti =)( 0)( = vtRie ou 0= vdtdv

    RCe

    Assim, a equao diferencial geral fica:

    eRC

    vRCdt

    dv 11 =+

    Substituindo os valores de R = 1k e C = 1mF e VEe 5== na equao

    anteriormente mostrada, resulta na equao mostrada a seguir:

    5=+ vdtdv

    onde 10)0( =v . Soluo do Circuito Utilizando o Simulink

    Para utilizar o Simulink devemos expressar a equao diferencial da seguinte

    maneira:

    = dtveRCv )(

    1

    A expresso acima conseguida facilmente apenas isolando o termo dtdv e

    depois aplicando a integrao (que a operao inversa da derivao). Essa forma

  • 68

    ideal para a simulao usando o Simulink. Constri-se ento o modelo mostrado na

    Fig. 11.12.

    Fig. 11.12: Diagrama de blocos do Simulink para o circuito eltrico da Fig. 11.11

    Fig. 11.13: Sada grfica ttv )( para 0t para o circuito eltrico da Fig. 11.11.

    0 2 4 6 8 105

    5.5

    6

    6.5

    7

    7.5

    8

    8.5

    9

    9.5

    10

  • 69

    12 EXERCCIOS RESOLVIDOS

    01) Considere a seguinte equao diferencial: )(3232122

    2tuy

    dtdy

    dt

    yd =++ . Obter a

    soluo y(t) supondo todas as condies iniciais iguais a zero, usando a transformada

    Laplace.

    A transformada Laplace :

    ssYssYsYs

    32)(32)(12)(2 =++

    A soluo para )(sY :

    sssssssY

    3212

    32

    )3212(

    32)(

    232 ++=

    ++=

    Resolver a equao diferencial utilizando a funo residue do MATLAB.

    Soluo:

    >> numy = 32

    >> deny = [1 12 32 0]

    >> [r p k] = residue(numy,deny)

    O resultado obtido o seguinte:

    r =

    1

    -2

    1

    p =

    -8

    -4

    0

    k =

    []

    que se traduz em:

  • 70

    )8(1

    )4(21

    )(+

    ++

    =sss

    sY

    )21()( 84 tt eety += .

    02) O movimento da massa, designado por )(ty , descrito pela equao diferencial:

    ( ) ( ) ( ) ( )trtkydt

    tdyb

    dt

    tydM =++

    2

    2

    onde:

    M = massa em kg,

    b = forca de atrito (amortecimento viscoso),

    k = constante de mola de uma mola ideal,

    r = fora em Newton.

    A resposta dinmica livre, )(ty , do sistema

    )21(21

    )0()(

    +

    = tnsen

    tney

    ty

    onde:

    = relao de amortecimento = kM

    b

    2

    n = freqncia natural do sistema = Mk

    e 1cos= .

    Fazendo-se )0(y = 0.15 m, M = 1kg, k = 2, para 1=b , simule no MATLAB para obter o

    grfico referente a resposta natural do sistema e verifique que a resposta

    subamortecida.

    Soluo:

    >> y0 = 0.15;

    >> wn = sqrt(2);

    >> quisi = 1/(2*sqrt(2*1));

    >> c1 = (y0/sqrt(1-quisi^2));

    >> teta = acos(quisi);

    >> t=[0:0.1:10];

    >> c2 = exp(-quisi*wn*t);

    >> c3 = sin(wn*sqrt(1-quisi^2)*t+teta);

    >> y=c1*c2.*c3;

    >> plot(t,y)

  • 71

    O grfico da resposta natural do sistema obtido com o MATLAB para os parmetros

    dados mostrado na Fig. 12.1.

    Fig. 12.1: Sada grfica tty )( para 0t .

    03) Dada a funo de transferncia, obtenha o que se pede:

    a) calcular zeros e plos;

    b) exibir a funo de transferncia;

    c) obter o mapa dos zeros e plos.

    20030

    7010)(

    2 +++=ss

    ssG

    Soluo:

    >> numg = [10 70];

    >> zeros = roots(numg)

    >> deng = [1 30 200]

    >> polos = roots(deng)

    >> tfout(numg,deng)

    >> sys = zp(zeros,polos,1);

    >> pzmap(sys)

  • 72

    04) Um sistema dinmico linear representado no espao de estados pelas seguintes

    equaes matriciais:

    DuCxy

    BuAxx

    +=+=

    Obtenha a representao no espao de estados sob a forma de variveis de fase das

    seguintes funes de transferncia usando a funo tf2ss do MATLAB:

    97

    12)(

    21 +++=ss

    ssT

    Soluo:

    >> num=[2 1]

    >> den=[1 7 9]

    >> [A,B,C,D]=tf2ss(num,den)

    As matrizes resultantes so:

    A =

    -7 -9

    1 0

    B =

    1

    0

    C =

    2 1

    D =

    0

    05) Sejam as seguintes funes de transferncia nos blocos em cascata:

    )14)(2)(5()4)(2(

    )(++

    =sss

    sssGR(s)

    U(s)Y(s)

    25001

    )(s

    ssH

    +=

    Use a funo series do MATLAB para transform-las em uma s.

  • 73

    Soluo;

    >> n1=[1 -2]

    >> n2=[1 -4]

    >> ng=conv(n1,n2)

    >> d1=[1 5]

    >> d2=[1 2]

    >> d3=[1 -14]

    >> dg=conv(d1,conv(d2,d3))

    >> nh=[1 1]

    >> dh=[500 0 0]

    >> [n,d]=series(ng,dg,nh,dh)

    A funo de transferncia resultante dos dois blocos em cascata a seguinte:

    2345

    23

    70000440003500500

    825

    ssss

    sss

    ++

    .

    06) Analise a seqncia de comandos do MATLAB apresentada a seguir.

    a) extraindo e inserindo

    A = [ 1 3 4; -1 3 0; 6 -1 2]

    C = [1 + i, 1 - i; 2i, 1 i]

    b = [1; 3; -1]

    A(:,2)

    A(1,:)

    A(2,3)

    M = [A,b]

    M(end)

    transpose(C) % diferente de C' se C for complexa

    C'

    A(3:6)

    A(:,2) = [0; 0; 0] % insere o vetor da direita no lugar da

    coluna 2

  • 74

    b) criando matrizes

    >> D = ones(3)

    >> Z = eye(3)

    >> R = rand(3)

    c) operaes sobre matrizes e sobre elementos de matrizes

    >> trace(A) % soma algbrica dos elementos da diagonal de A

    >> [m,n] = size(A)

    >> [L,U,P] = lu(A) % obtem a fatorao PLU de A

    >> chol(A) % somente para matriz definida positiva

    d) decomposio espectral

    Y = [4+i, -1+i, -3-2i;-1+i, 3-i, -2+i;-3-2i, -2+i, 5+i]

    [P,D] = eig(Y)

    W = P*D*P^-1

    Y-W

    Z = inv(Y)

    disp(' o produto tem que resultar na matriz identidade');

    Z*Y

    H = P^-1;

    B = (D^-1)*H;

    U = P*B

    Z-U

    07) Obtenha uma raiz da funo unidimensional 1)( += xexf x com estimativa inicial

    8.0)0( =x .

    Soluo:

  • 75

    >> fzero('exp(-x)-x+1',0.8) % obtem um zero da funcao

    08) Dada a funo de transferncia

    11

    )()(

    )(+

    ==ssR

    sCsT ,

    determine a resposta do sistema ao degrau unitrio, s

    sR 1)( = .

    Soluo:

    >> clf

    >> numg = [0 1];

    >> deng = [1 1];

    >> G = tf(numg,deng)

    >> step(G)

    >> title(' Amplitude versus tempo ')

    pause

    A resposta como mostrada na Fig.12.2.

    Fig. 12.2: Sada grfica )(tc com entrada )()( tutr = , para 0t .

  • 76

    09) Obtenha 5 termos do desenvolvimento em Srie de Taylor da funo xxf cos)( = .

    Soluo:

    >> syms x

    >> taylor(cos(x),5)

    ans =

    1-1/2*x^2+1/24*x^4

    10) Ao final de sua seo de trabalho no prompt salve-a com o comando save em um

    arquivo com extenso .mat.

    Soluo:

    >> save hoje.mat

    Dessa forma,o comando save salva o workspace em um arquivo .mat.

    Em seguida, utilize o comando clear all para limpar o contedo da memria. Atravs

    do comando load hoje.mat possvel carregar o contedo da memria permitindo a

    retomada do trabalho que estava sendo realizado.

    11) Elabore um programa em arquivo .m que utilize a function do MATLAB.

    Soluo:

    function [f] = fun2(a,b,x) % em arquivo .m separado

    global f;

    f = (b/a)*sqrt(a^2 - x.^2);

    return;

    % o conteudo a seguir em arquivo .m separado

    global f;

    a = input(' Valor de a: ');

    b = input(' Valor de b: ');

    N = input(' No. de simulacoes: ');

    k = 0;

  • 77

    for j = 1:N,

    x = a*rand; y = b*rand;

    fun2(a,b,x);

    if y

  • 78

    13 EXERCCIOS PROPOSTOS

    01) Dada a matriz 33 , simtrica e definida positiva,

    =610141016

    A , e dado o vetor

    de termos independentes,

    =

    211

    b ,

    a) use o comando chol(A)e obtenha a fatorao Cholesky da matriz A ;

    b) verifique que CCA T= usando o comando transpose;

    c) a partir dos fatores Cholesky de A , calcule a soluo Txxxx ][ 321= de bAx = .

    02) Dada a matriz literal 33 ,

    +=

    da

    adaa

    ada

    A

    0

    0, e dado o vetor de termos

    independentes, tambm literal,

    +=

    0a

    da

    b , utilize os recursos da matemtica simblica

    para obter a soluo Txxxx ][ 321= .

    Primeiro aplique a funo inv(A) para obter x . Em seguida, empregue as funes

    simplify e pretty para melhorar a visualizao da resposta.

    03) Dados

    =321112

    231A e

    =457

    b , utilize o comando rref sobre a matriz

    aumentada para obter forma escalonada reduzida e mostre que o sistema bAx =

    incompatvel. Para maior clareza, sugere-se que, antes de empregar o comando rref,

    declare os clculos na forma de fraes usando format rat.

    04) Determine o zero da funo transcendental xexf x = 4)( utilizando a funo

    fzero com estimativa inicial 0.1. Confira no grfico atravs de

  • 79

    >> ezplot('exp(-4*x)-x',0,1).

    0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

    -1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    x

    exp(-4*x)-x

    05) Dada a equao diferencial 0)(2)(

    3)(2 =++ tx

    dttdx

    dttxd

    , com 1)0( =x e 0)0( =dt

    dx.

    Utilize o comando dsolve para obter a soluo )(tx . Em seguida, visualize o grfico

    da resposta obtida, )(tx , no intervalo 20 t .

    06) Dados os binmios 1+x , 2x e 4+x . Multiplique-os usando conv. A partir do

    polinmio que resultou da multiplicao calcule as razes usando roots.

    07) Desejamos calcular a soluo analtica do seguinte sistema de equaes

    =++=+

    =+

    1)(21

    1

    22

    2

    22

    ba

    baxy

    yx

    .

    Para tal, utilize o comando solve:

    >> [b,x,y]=solve('x^2+y^2=1','1 +

    2*x*y=(a + b)^2','a^2 + b^2=1').

    As solues esperadas so: ax = , by = ou ax = , by = .

  • 80

    [x,y] = meshgrid(-2:.2:2, -2:.2:2);

    z = x .* exp(-x.^2 - y.^2);

    [px,py] = gradient(z,.2,.2);

    contour(z), hold on, quiver(px,py), hold off

    08) Sabemos que a derivada primeira da funo )()( xtgxf = )(sec1 2 xdxdf += , sendo

    )cos(1)sec( xx = . Verifique este fato usando o comando diff('sin(x)/cos(x)')

    seguido logo aps pelo comando simplify(ans).

    09) Calcule a rea sobe a curva da funo 21

    4)(

    xxf

    += no intervalo 10 x . Use o

    comando int com limites de integrao definidos.

    10) No Curso de Clculo Diferencial e Integral, o professor ensina que a seguinte

    integral indefinida

    )(22 a

    xtgarcab

    dxxa

    b =+

    pode ser solucionada aplicando substituio trigonomtrica. Comprove o resultado

    mostrado anteriormente utilizando matemtica simblica e o comando int sem limites

    de integrao.

    11) Utilize o comando pretty(diff(1/a*atan(x/a)*b,x)) e verifique que o

    resultado do exerccio 10 est correto.

    12) Um importante conceito associado com a derivada de funes escalares

    n dimensionais o gradiente. Digite a seqncia de instrues no prompt do

    MATLAB:

    Para entender melhor o que foi calculado com as instrues anteriores utilize

    surf(x,y,z).

  • 81

    14 BIBLIOGRAFIA

    [1] HANSELMAN, Duane e LITTLEFIELD, Bruce. "MATLAB 5 Verso do Estudante,

    Guia do Usurio, Makron Books, So Paulo, 1999. 413 p. ISBN: 85-346-1058-4.

    [2] ALVES, Antnio Csar Baleeiro. Notas de Aulas do Curso de Circuitos Eltricos da

    EEEC/UFG.

    [3] RESNICK, Robert e HALLIDAY, David, "Fsica 1," 3a ed., Livros Tcnicos e

    Cientficos Editora S.A., Rio de Janeiro, 1981, ISBN: 85-216-0076-3.

    [4] CHAPMAN, S. J. Programao em MATLAB para engenheiros. Thomson Pione