Apostila de MATLAB Pet Ele

download Apostila de MATLAB Pet Ele

of 102

Transcript of Apostila de MATLAB Pet Ele

  • 5/25/2018 Apostila de MATLAB Pet Ele

    1/102

  • 5/25/2018 Apostila de MATLAB Pet Ele

    2/102

    Sumrio

    1 Apresentao 51.1 Soluo de Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    1.1.1 Enunciado do Problema . . . . . . . . . . . . . . . . . . . . . . 51.1.2 Descrio Entrada/Sada . . . . . . . . . . . . . . . . . . . . . 51.1.3 Exemplo Manual . . . . . . . . . . . . . . . . . . . . . . . . . . 61.1.4 Soluo MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . 71.1.5 Testando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    1.2 Apresentao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.2.1 Ambiente de Trabalho . . . . . . . . . . . . . . . . . . . . . . . 101.2.2 Editor de Linhas de Comando . . . . . . . . . . . . . . . . . . . 10

    2 Introduo 132.1 Introduo a Matrizes Simples . . . . . . . . . . . . . . . . . . . . . . 132.2 Elementos de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3 Declarao de Variveis . . . . . . . . . . . . . . . . . . . . . . . . . . 162.4 Informaes sobre a rea de Trabalho . . . . . . . . . . . . . . . . . . 172.5 Nmeros e Expresses Aritmticas. . . . . . . . . . . . . . . . . . . . . 172.6 Nmeros e Matrizes Complexas . . . . . . . . . . . . . . . . . . . . . . 182.7 Formatao de Sada . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.8 Utilizao do comando help . . . . . . . . . . . . . . . . . . . . . . . . 202.9 Utilizao do comando lookfor. . . . . . . . . . . . . . . . . . . . . . . 21

    2.10 Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Manipulao de Matrizes e Vetores 23

    3.1 Operaes com Matrizes. . . . . . . . . . . . . . . . . . . . . . . . . . 233.1.1 Transposio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.1.2 Adio e Subtrao . . . . . . . . . . . . . . . . . . . . . . . . 243.1.3 Multiplicao . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.1.4 Diviso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.1.5 Potenciao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    3.2 Operaes Elemento a Elemento (Conjuntos) . . . . . . . . . . . . . . 253.2.1 Adio e Subtrao . . . . . . . . . . . . . . . . . . . . . . . . 25

    3.2.2 Multiplicao e Diviso . . . . . . . . . . . . . . . . . . . . . . 263.2.3 Potenciao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    3.3 Matrizes Elementares . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.3.1 Gerao de Vetores . . . . . . . . . . . . . . . . . . . . . . . . 263.3.2 Matriz Identidade . . . . . . . . . . . . . . . . . . . . . . . . . 273.3.3 Matriz Composta por Elementos Unitrios . . . . . . . . . . . . 283.3.4 Matriz Nula . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.3.5 Matriz Aleatria . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    3.4 Elementos de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.5 Manipulao de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . 30

    2

  • 5/25/2018 Apostila de MATLAB Pet Ele

    3/102

    3.5.1 Matriz Diagonal ou Diagonal de uma Matriz . . . . . . . . . . . 303.5.2 Matrizes Triangulares . . . . . . . . . . . . . . . . . . . . . . . 313.5.3 Redimensionamento de Matrizes. . . . . . . . . . . . . . . . . . 313.5.4 Rotao dos Elementos da Matriz . . . . . . . . . . . . . . . . 32

    4 Funes 33

    4.1 Funes Escalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.2 Funes Vetoriais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.3 Funes Matriciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    5 Polinmios 35

    6 Anlise Polinomial 376.1 Avaliao do polinmio . . . . . . . . . . . . . . . . . . . . . . . . . . 376.2 Comando polyval. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376.3 Operaes Aritmticas . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    6.3.1 Soma e subtrao . . . . . . . . . . . . . . . . . . . . . . . . . 386.3.2 Multiplicao. . . . . . . . . . . . . . . . . . . . . . . . . . . . 396.3.3 Diviso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    6.4 Razes de polinmios. . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    7 Grficos 427.1 Grficos X-Y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    7.1.1 Acessrios para os Grficos . . . . . . . . . . . . . . . . . . . . 447.1.2 Nmeros Complexos . . . . . . . . . . . . . . . . . . . . . . . . 46

    7.2 Grficos Polares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467.3 Grficos 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    8 Programao 518.1 Arquivo.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518.2 Operadores Lgicos e Relacionais . . . . . . . . . . . . . . . . . . . . . 51

    8.2.1 Operadores Relacionais . . . . . . . . . . . . . . . . . . . . . . 528.2.2 Operadores Lgicos . . . . . . . . . . . . . . . . . . . . . . . . 52

    8.3 Comandos For, While e If . . . . . . . . . . . . . . . . . . . . . . . . . 538.3.1 Ciclo For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548.3.2 Comando If . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558.3.3 Ciclo While. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    8.4 Declarando Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    9 Sistemas de Equaes Lineares 589.1 Interpretao grfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589.2 Soluo usando operao com matrizes . . . . . . . . . . . . . . . . . . 599.3 Diviso de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609.4 Matriz inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    3

  • 5/25/2018 Apostila de MATLAB Pet Ele

    4/102

    10 Clculo 6110.1 Zeros de Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6110.2 Minimizao de Funes . . . . . . . . . . . . . . . . . . . . . . . . . . 6110.3 Limites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6210.4 Limites esquerda e direita . . . . . . . . . . . . . . . . . . . . . . . 6310.5 Integrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    10.5.1 Soluo Simblica . . . . . . . . . . . . . . . . . . . . . . . . . 6310.5.2 Soluo Numrica . . . . . . . . . . . . . . . . . . . . . . . . . 64

    10.6 Diferenciao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6710.6.1 Derivao por expresses de diferenas . . . . . . . . . . . . . . 6810.6.2 Comando diff. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6910.6.3 Derivadas de ordem superior. . . . . . . . . . . . . . . . . . . . 7010.6.4 Derivadas Trigonomtricas: . . . . . . . . . . . . . . . . . . . . 71

    11 Ajuste de Curvas 7211.1 Ajuste de Curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

    11.2 Interpolao Unidimensional . . . . . . . . . . . . . . . . . . . . . . . . 7312 Transformadas 76

    12.1 Funes Degrau e Impulso . . . . . . . . . . . . . . . . . . . . . . . . . 7612.2 Transformada de Laplace . . . . . . . . . . . . . . . . . . . . . . . . . 7712.3 Transformada de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . 7712.4 Transformada Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7812.5 Exerccios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

    12.5.1 Exerccio 1: Sistemas Lineares . . . . . . . . . . . . . . . . . . . 7812.5.2 Exerccio 2: Equaes Diferenciais e Transformadas . . . . . . . 7912.5.3 Exerccio 3: Transformada de Fourier . . . . . . . . . . . . . . . 81

    13 SIMULINK 8513.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

    13.1.1 Diagrama de Blocos . . . . . . . . . . . . . . . . . . . . . . . . 8613.1.2 Smbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

    13.2 Conhecendo o Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . 8713.2.1 Iniciando o Simulink . . . . . . . . . . . . . . . . . . . . . . . . 8713.2.2 Construindo e analisando um modelo simples . . . . . . . . . . . 8813.2.3 Exemplo: Modelo de um processo biolgico. . . . . . . . . . . . 89

    13.3 Principais blocos do Simulink e suas funes . . . . . . . . . . . . . . . 95

    13.3.1 Principais Fontes(Sources): . . . . . . . . . . . . . . . . . . . . 9713.3.2 Principais blocos usados na modelgem de sistemas dinmicos . . 9713.3.3 Verificao do modelo . . . . . . . . . . . . . . . . . . . . . . . 9813.3.4 Blocos de sadas(Sinks) . . . . . . . . . . . . . . . . . . . . . . 9813.3.5 Criando blocos de sub-sistemas . . . . . . . . . . . . . . . . . . 9813.3.6 Blocos condicionais . . . . . . . . . . . . . . . . . . . . . . . . 9913.3.7 Personalizando o modelo e manipulando Blocos . . . . . . . . . 99

    14 Referncias Bibliogrficas 102

    4

  • 5/25/2018 Apostila de MATLAB Pet Ele

    5/102

    1Apresentao

    1.1 Soluo de ProblemasA soluo de problemas parte essencial no somente dos cursos de engenharia, mas

    tambm dos cursos de Matemtica, Fsica, Qumica e Cincia da Computao. Logo, importante uma base slida em soluo de problemas. Tambm de grande auxlio umembasamento suficiente para trabalhar em todas estas reas, para que no tenhamosque aprender uma tcnica para problemas de matemtica, e uma tcnica diferente paraproblemas de fsica, e assim por diante.

    O processo ou metodologia para resoluo de problemas que usaremos ao longo dotexto possui cinco passos:

    1. Enunciar o problema claramente.2. Descrever a informao de entrada e sada.3. Trabalhar o problema manualmente.4. Desenvolver uma soluo MATLAB.5. Testar a soluo usando uma variedade de grupo de dados.

    Descreveremos cada um dos passos usando o exemplo do clculo da distncia entredois pontos em um plano.

    1.1.1 Enunciado do Problema

    O primeiro passo enunciar o problema claramente. extremamente importante queo enunciado seja conciso para evitar desentendimentos. Para este exemplo, o enunciadodo problema :

    Calcule a distncia em linha reta entre dois pontos num plano.

    1.1.2 Descrio Entrada/Sada

    O segundo passo descrever cuidadosamente a informao que dada para resolver oproblema e ento identificar os valores a serem calculados. Estes itens representam a en-trada e a sada para o problema e agregadamente podem ser chamados entrada/sada,ou I/0. Para muitos problemas, til usar um diagrama que mostra a entrada e asada. Algumas vezes, este tipo de diagrama chamado de caixa preta porque noestamos definindo para este ponto todos os passos para determinar a sada, mas es-tamos mostrando a informao que usada para calcular a sada. Para este exemplo,poderamos usar o diagrama na Figura 1.

    5

  • 5/25/2018 Apostila de MATLAB Pet Ele

    6/102

    Figura 1: Diagrama I/0

    1.1.3 Exemplo Manual

    O terceiro passo trabalhar o problema manualmente ou com uma calculadora, us-ando um pequeno grupo de dados. um passo muito importante e no deve ser ignoradopor mais simples que seja o problema. um item no qual voc trabalha os detalhes dasoluo do problema. Se voc no pode pegar um simples grupo de nmeros e calculara sada (seja manualmente ou com uma calculadora), ento voc no est pronto paraexecutar o prximo passo; voc deve reler o problema e talvez consultar material dereferncia. Uma vez que pode trabalhar o problema de um simples grupo de dados,ento voc est pronto para desenvolver um algoritmo ou um esboo passo a passo dasoluo. Este esboo convertido para os comandos MATLAB para que possamos usaro computador para fazer todos os clculos. O exemplo manual para este exemplo mostrado a seguir:

    Suponha que os pontos p1 e p2 tenham as seguintes coordenadas:

    p1 = (1, 5)

    p2 = (4, 7)

    Queremos calcular a distncia entre dois pontos, que a hipotenusa de um tringuloretngulo, conforme mostra a Figura 2. Usando o Teorema de Pitgoras, podemos cal-cular a distncia d com a seguinte equao:

    d=S21 + S

    22

    d=

    (4 1)2 + (7 5)2

    d=

    13

    d= 3.61

    6

  • 5/25/2018 Apostila de MATLAB Pet Ele

    7/102

    Figura 2: Triangulo retngulo

    1.1.4 Soluo MATLABNo prximo captulo, falaremos sobre os comandos MATLAB. Contudo da soluo

    voc pode ver que os comandos so muito similares s equaes que foram usadas noexemplo manual. O sinal de percentagem usado para anteceder comentrios que ex-plicam os comandos MATLAB.

    %

    % Este programa calcula e imprime

    % distncia, em linha reta, entre dois pontos.p1 = [1,5]; % ponto 1 inicial

    p2 = [4,7]; % ponto2 inicial

    d = sqrt (sum ((p2-p1).^2)) % calcular distncia

    1.1.5 Testando

    O passo final em nosso processo de soluo de problemas testar a soluo. Primeira-mente, devemos testar a soluo com os dados do exemplo manual, j que calculamos

    a soluo. Quando os comandos MATLAB na soluo so executados, o computadormostra a seguinte sada:

    d = 3.6056

    Esta sada coincide com o valor que calculamos no exemplo manual. Se a soluoMATLAB no coincidir com o exemplo manual, devemos rever ambas solues a fimde encontrar o erro. Uma vez que a soluo trabalha com o exemplo manual, devemostambm test-la com vrios grupos de dados para certificar que a soluo vlida paraoutras sries de dados.

    7

  • 5/25/2018 Apostila de MATLAB Pet Ele

    8/102

    1.2 Apresentao

    O MATLAB R pode ser usado como uma linguagem de programao ou como umaferramenta de clculo interativa. Em ambos os casos, o ambiente MATLAB permite arealizao de clculos, visualizao de resultados e desenvolvimento de algoritmos usandouma sintaxe muito prxima da notao matemtica usual.

    O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo defuncionamento. Todas as variveis so definidas de forma matricial, o que faz comque este ambiente seja ideal para resolver problemas de clculo envolvendo matrizes evetores.

    Um arquivo de programa MATLAB recebe a extenso .m e, por isso, tambm chamado de m-file ou arquivo .m. Ele pode ser criado e/ou modificado no editor prpriodo MATLAB - MATLAB Editor/Debugger - que possui caractersticas que auxiliambastante na edio de programas como auto-colorizao de palavras de acordo com asintaxe e interao com o ambiente de clculo do MATLAB. Existem tambm os arquivos.mat que so arquivos binrios que contm as variveis da Workspace. Estes arquivos

    so gerados indo emFile-> Save Workspace -> nomedoarquivo.mat

    importante diferenciar, portanto, arquivos .m dos arquivos .mat. Os arquivos .mcontm uma srie de comandos que, ao serem chamados no Workspace, so executados.J os arquivos .mat contm somente as variveis e os seus valores armazenados.

    Uma das grandes virtudes do MATLAB que todas as suas funes so escritas emm-files, sendo que algumas delas podem ser modificadas e vrias outras criadas. Estefato possibilitou a criao de diversos conjuntos de funes especficas para determi-nadas reas, como controle, anlise de sinais, finanas, entre outras. Estes conjuntos de

    funes, ou de m-files, so chamados de toolbox.Toolboxes direcionados para diversas reas so distribudos pela The MathWorksInc. - empresa que desenvolve o software MATLAB (http://www.mathworks.com) - einmeros outros so desenvolvidos em todo o mundo, com e sem reconhecimento daMathWorks, e podem geralmente ser encontrados na internet.

    Um dos toolboxes desenvolvidos pela MathWorks chamado Simulink. Ele umaferramenta interativa para desenvolvimento, simulao e anlise de sistemas dinmicosatravs da criao de modelos baseados em diagramas de blocos. Conjuntos de blocospodem ser usados para modelar sistemas especficos. Esses conjuntos de blocos sochamados Blocksets.

    Assim como ocorre com os toolboxes, blocksets direcionados a vrias reas so tam-bm desenvolvidos em todo o mundo. Para ilustrar a vastido do campo de aplicao doMATLAB, abaixo segue uma pequena listagem de toolboxes e blocksets desenvolvidospela MathWorks.

    Aerospace BlocksetBiblioteca que utiliza os fundamentos do SIMULINK para prover ferramentas espe-

    cializadas para o desenvolvimento de ferramentas de modelagem, integrao e simulaode aeronaves, naves espaciais, msseis sistemas de propulso ou subsistemas.

    Bioinformatics Toolbox

    8

  • 5/25/2018 Apostila de MATLAB Pet Ele

    9/102

    Aplicativo MATLAB que possui ferramentas especializadas para anlise de genoma,visualizao e normalizao de micro vetores e anlise das propriedades de protenas.

    Communications BlocksetAplicativo SIMULINK composto por cerca de 150 blocos do SIMULINK dedicados

    s reas de desenvolvimento de projeto, simulao e anlise de sistemas de comunicao

    digitais e analgicos.

    Control System ToolboxAplicativo MATLAB para rea de modelagem e anlise de sistemas automticos de

    controle. Este Toolbox permite modelar, simular e analisar sistemas contnuos e discre-tos, com mltiplas entradas e mltiplas sadas (MIMO).

    Data Acquisition ToolboxAplicativo MATLAB composto por funes para importao de dados obtidos a par-

    tir de placas de aquisio de dados.

    Curve Fitting ToolboxAplicativo MATLAB de ajuste de curvas. Este Toolbox permite modelar, simular e

    analisar sofisticados mtodos de ajuste de curvas de forma prtica e flexvel.

    Financial ToolboxAplicativo MATLAB para rea financeira (estudo de preos, clculo de juros e inves-

    timentos, anlise de derivativos e otimizao de portiflios).Statistics e Optimization Toolboxes so necessrios para o funcionamento do Finan-

    cial Toolbox.

    Image Processing ToolboxAplicativo MATLAB para rea de processamento de imagens (estudo, tratamento e

    anlise de sinais analgicos/digitais transformados em imagens grficas). Signal Pro-cessing Toolbox necessrio para o funcionamento deste Toolbox.

    Mapping ToolboxAplicativo MATLAB composto por funes para tratamento de mapas e informaes

    cartogrficas (por exemplo: coordenadas cartogrficas, deformaes, representaes tri-dimensionais).

    Partial Differential Equation ToolboxAplicativo MATLAB composto por funes para resoluo de equaes diferenciais

    parciais em espao bidimensional utilizando mtodo de elementos finitos.

    Statistics ToolboxAplicativo MATLAB para rea de estatstica, incluindo alm de ferramentas estats-

    ticas bsicas de anlise de dados, recurso de modelagem e anlise estatstica de modeloslineares e no-lineares.

    SimMechanics

    9

  • 5/25/2018 Apostila de MATLAB Pet Ele

    10/102

    Biblioteca de blocos do SIMULINK que possibilita a modelagem e simulao de sis-temas mecnicos, tais como: componentes mecnicos (corpos e juntas), simulao demovimentos, etc.

    1.2.1 Ambiente de TrabalhoQuando o MATLAB inicializado, trs janelas so exibidas: a Workspace, a Com-

    mand History e a Janela de Comando (Command Window). Na aba Workspace aparecemas variveis, seu tamanho e valor atual, as variveis so arrays onde cada elemento tem8 bytes e podem ser editadas utilizando o Array Editor atravs de um clique duplo nonome da varivel. Na janela Command History so armazenados todos os comandos jutilizados, sendo que estes podem ser reescritos na Command Window apenas utilizandoas teclas UP e DOWN do teclado, sem necessidade de serem digitados novamente. Porsua vez, a Janela de Comando a parte principal do MATLAB, onde sero escritos oscdigos, funes e demais comandos. Nessa janela, o prompt padro (>>) exibido

    na tela e, a partir deste ponto, o MATLAB espera as instrues do utilizador. Paraintroduzir uma pequena matriz, por exemplo, utiliza-se:

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

    Colocam-se colchetes em torno dos dados e separam-se as linhas por ponto e vrgula.Quando se pressiona a tecla o MATLAB responde com:

    A =

    1 2 3

    4 5 6

    7 8 7

    Para inverter esta matriz, utiliza-se:

    >> B = inv(A)

    B =-2.1667 1.6667 -0.5000

    2.3333 -2.3333 1.0000

    -0.5000 1.0000 -0.5000

    1.2.2 Editor de Linhas de Comando

    As setas para cima e para baixo do teclado podem ser usadas para navegar entrecomandos usados anteriormente, para nova execuo ou reedio. No caso de pretender

    10

  • 5/25/2018 Apostila de MATLAB Pet Ele

    11/102

    efetuar o clculo de:

    log

    tan

    5

    Introduz-se na janela de comando:

    >> log (sqt(tan(pi/5)))

    Como para calcular a raiz quadrada o comando certo sqrt, o MATLAB respondecom uma mensagem de erro:

    ??? Undefined function or variable sqt.

    O comando com a resposta apropriada seria:

    >> log (sqrt(tan(pi/5)))

    ans=

    -0.1597

    NOTA: Todas as funes que utilizam algum tipo de ngulo em seus argumentos

    interpretam tal ngulo como sendo em radianos.

    O Matlab possui diversas variveis predefinidas, incluindo pi, Inf, NaN, i e j. Trsexemplos so mostrados abaixo:

    > > z = 3 + 4 * i

    z =

    3.0000 + 4.0000i

    >> Inf

    ans =Inf

    >> 0/0

    Warning: Divide by zero.

    ans =

    NaN

    O termo NaN significa, em ingls, Not-a-Number (smbolo de indeterminao) eresulta de operaes de valor indeterminado. Inf representa+e pi representa . Avarivel i =

    1 usada para representar nmeros complexos. A varivel j =

    1

    11

  • 5/25/2018 Apostila de MATLAB Pet Ele

    12/102

    pode ser usada em vez de i nas operaes aritmticas com nmeros complexos poraqueles que a preferem. Estas variveis predefinidas podem ser redefinidas. claroque elas podem ser redefinidas intencionalmente a fim de liberar o nome da varivelpara outros usos. Por exemplo, pode-se querer usar i como inteiro e reservar j paraa aritmtica com nmeros complexos. Seja cauteloso e deixe estes nomes de variveispredefinidas intocados, pois h uma infinidade de nomes alternativos que podem ser

    usados. As variveis predefinidas podem ser realocadas aos seus valores default usandoo comando clear nome da varivel (por exemplo, clear pi).

    12

  • 5/25/2018 Apostila de MATLAB Pet Ele

    13/102

    2Introduo

    O MATLAB trabalha essencialmente com um tipo de objeto: uma matriz numricaretangular podendo conter elementos complexos. Observa-se que um escalar umamatriz de dimenso 1x1 e que um vetor uma matriz que possui somente uma linha ouuma coluna.

    2.1 Introduo a Matrizes Simples

    As matrizes podem ser introduzidas no MATLAB de diferentes modos:- Introduzida na Janela de Comando (lista explcita de elementos).- Geradas por comandos e funes.- Criadas em arquivos .m.- Carregadas a partir de um arquivo de dados externo.

    O mtodo mais fcil de introduzir pequenas matrizes no MATLAB utilizando umalista explcita. Os elementos de cada linha da matriz so separados por espaos embranco ou vrgulas e as colunas separadas por ponto e vrgula, colocando-se colchetesem volta do grupo de elementos que formam a matriz com o objetivo de limit-la. Porexemplo, introduzindo-se a expresso:

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

    A =

    1 2 3

    4 5 6

    7 8 7

    A matriz A guardada na memria RAM do computador, ficando armazenada parauso posterior. As matrizes podem, tambm, ser introduzidas linha a linha, o que indi-cado para matrizes de grande dimenso. Por exemplo:

    A=

    [ 1 2 3

    4 5 6

    7 8 7 ]

    Outra maneira para introduzir matrizes no MATLAB atravs de um arquivo noformato texto com extenso .m. Por exemplo, se um arquivo chamado matriz.mcontiver estas trs linhas de texto:

    13

  • 5/25/2018 Apostila de MATLAB Pet Ele

    14/102

    A=

    [ 1 2 3

    4 5 6

    7 8 7 ]

    Ento a expresso matriz ler o arquivo e introduzir a matriz A.

    >>matriz

    O comando load pode ler matrizes geradas pelo MATLAB e armazenadas em arquivosbinrios ou matrizes geradas por outros programas armazenadas em arquivos ASCII. As-sim, para ler um arquivo .mat chamado matriz.mat segue-se a seguinte estrutura: loadmatriz.mat, e as variveis salvas no arquivo binrio matriz.mat sero carregadas na

    Workspace.

    NOTA: Em todos os exemplos, m e n so inteiros positivos.

    Para especificar um nico elemento da matriz utilizam-se os ndices referentes aonmero de linha e nmero de coluna entre parnteses da matriz onde se encontra oelemento: A(m,n).

    Outra forma de gerar matrizes atravs de ciclos for. Por exemplo, para gerar umamatriz M com i linhas e j colunas, a seguinte estrutura pode ser utilizada:

    >> for i = 1:3,

    for j = 1:3,

    M(i,j) = i+j;

    end

    end

    E obtemos como resultado a matriz:

    >> M

    M =

    2 3 4

    3 4 5

    4 5 6

    OBS: o ndice das matrizes comea em 1, no em 0.

    14

  • 5/25/2018 Apostila de MATLAB Pet Ele

    15/102

    2.2 Elementos de Matrizes

    Os elementos das matrizes podem ser quaisquer expresses do MATLAB. Por exem-plo:

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

    -1.3000 1.4142 23.0400

    Um elemento individual da matriz pode ser referenciado com ndice entre parnteses.Continuando o exemplo:

    >> x(6) = abs(x(1))

    x =

    -1.3000 1.4142 23.0400 0 0 1.3000

    Nota-se que a dimenso do vetor x aumentada automaticamente de 1x3 para 1x6de modo a acomodar o novo elemento, e que os elementos indefinidos do intervalo soestabelecidos como zero.

    Matrizes de maior dimenso podem ser construdas a partir de pequenas matrizes.Por exemplo, pode-se anexar outra linha matriz A usando:

    >> r= [ 10 11 12];>> A= [A;r]

    A =

    1 2 3

    4 5 6

    7 8 7

    10 11 12

    Nota-se que o vetor r no foi listado porque ao seu final foi acrescentado ;.

    Podem ser extradas matrizes pequenas da matriz original utilizando :.Por exemplo:

    >> A = A(1:3,:)

    A =

    1 2 3

    4 5 6

    7 8 7

    15

  • 5/25/2018 Apostila de MATLAB Pet Ele

    16/102

    Seleciona da linha 1 at a linha 3 e todas as colunas da matriz A atual.

    2.3 Declarao de Variveis

    O MATLAB uma linguagem de expresses. As expresses usadas so interpretadas

    e avaliadas pelo sistema. As declaraes no MATLAB so freqentemente da forma:

    >> variavel = expressao

    Ou simplesmente:

    >> expressao

    As expresses so compostas de operadores e outros caracteres especiais, de funese dos nomes das variveis. As avaliaes das expresses produzem matrizes, que soento mostradas na tela e atribudas s variveis para uso futuro. Se o nome da varivele o sinal de igualdade = so omitidos, a varivel com o nome ans, que representa apalavra answer (resposta), automaticamente criada. Por exemplo, introduzindo aexpresso:

    >> 1900/81

    ans=23.4568

    Se o ltimo caractere da declarao um ponto e vrgula, ;, a impresso na tela suprimida, mas a tarefa realizada. Esse procedimento usado em arquivos comextenso .m e em situaes onde o resultado uma matriz de grandes dimenses e hinteresse em apenas alguns dos seus elementos.

    Se a expresso to grande que no cabe em apenas uma linha, pode-se continuara expresso na prxima linha usando um espao em branco e trs pontos, ..., ao finaldas linhas incompletas. Por exemplo:

    >> s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 ...

    - 1/8 + 1/9 - 1/10 + 1/11 - 1/12 + 1/13;

    Calcula o resultado da srie, atribuindo o somatrio varivel s, mas no imprime oresultado na tela.

    As variveis e funes podem ser formadas por um conjunto de letras, ou por umconjunto de letras e nmeros, onde somente os primeiros 19 caracteres do conjunto so

    identificados. O MATLAB faz distino entre letras maisculas e minsculas,

    16

  • 5/25/2018 Apostila de MATLAB Pet Ele

    17/102

    assim a e A no so as mesmas variveis, exceto para os argumentos do comandohelp . Todas as funes devem ser escritas em letras minsculas: inv(A) calcula ainversa de A, mas INV(A) uma funo indefinida.

    2.4 Informaes sobre a rea de Trabalho

    Os exemplos de declaraes mostrados nos itens acima criaram variveis que soarmazenadas na rea de Trabalho do MATLAB. Executando:

    >> who

    Obtm-se uma lista das variveis armazenadas na rea de Trabalho:

    Your variables are:A B a n s r s x

    que mostra as seis variveis geradas nos exemplos, incluindo ans.Observe que o comando who est em letras minsculas. Todo comando no MATLAB

    deve ser inserido dessa forma.Uma informao mais detalhada que indica a dimenso de cada uma das variveis

    correntes obtida com whos, que para o exemplo produz:

    >> whosName Size Bytes Class

    A 4x3 96 double array

    B 3x3 72 double array

    ans 3x3 72 double array

    r 1x3 24 double array

    s 1x1 8 double array

    x 1x3 24 double array

    Grand total is 37 elements using 296 bytes

    Cada elemento de uma matriz real requer 8 bytes de memria, assim a matriz A dedimenso 4x3 faz uso de 96 bytes e todas as variveis utilizadas um total de 296 bytes.

    2.5 Nmeros e Expresses Aritmticas

    A notao decimal convencional, com ponto decimal opcional e o sinal negativo, usada para nmeros. A potncia de dez pode ser includa como um sufixo. A seguir so

    17

  • 5/25/2018 Apostila de MATLAB Pet Ele

    18/102

    mostrados alguns exemplos de nmeros aceitos:

    3 -99 0.000019.637458638 1.602E-20 6.06375e23

    As expresses podem ser construdas atravs dos operadores aritmticos usuais e dasregras de precedncia:

    1 Potenciao2 / Diviso direita2 \ Diviso esquerda3 * Multiplicao4 + Adio4 - Subtrao

    Deve-se notar que existem dois smbolos para diviso: as expresses 1/4 e 4\1 pos-suem o mesmo valor numrico, isto , 0.25.

    So usados parnteses na sua forma padro para alterar a procedncia usual dosoperadores aritmticos.

    2.6 Nmeros e Matrizes Complexas

    Os Nmeros Complexos so permitidos em todas as operaes e funes no MAT-

    LAB. Os nmeros complexos so introduzidos utilizando as funes especiais i ou j quecorrespondem parte imaginria de um nmero complexo. Por exemplo:

    >> z= 3 + 4*i

    ou

    >> z= 3 + 4*j

    Sabendo que um nmero complexo constitudo por uma parte real Re e por umaparte imaginria Im, tal que:

    z = Re + Im*i

    ele pode ser expresso na forma:

    18

  • 5/25/2018 Apostila de MATLAB Pet Ele

    19/102

    >> z= r*exp(i*theta)

    em que:

    >> r = abs(z)

    >> theta = angle(z)*180/pi

    As seguintes declaraes mostram dois caminhos convenientes para se introduzir ma-trizes complexas no MATLAB:

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

    ou

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

    Ambas produzem o mesmo resultado.Se quisermos determinar a parte real da matriz A usamos a funo real(A), j a parte

    imaginria pode ser visualizada com a funo imag(A) como pode ser visualizado abaixo:

    >> real(A)

    ans =

    1 2

    3 4

    >> imag(A)

    ans =

    5 6

    7 8

    2.7 Formatao de Sada

    O formato numrico exibido na tela pode ser modificado utilizando o comando for-mat, que afeta somente o modo como as matrizes so mostradas, e no como elas socalculadas ou guardadas (o MATLAB efetua todas as operaes em dupla preciso).

    Se todos os elementos da matriz so inteiros exatos, a matriz mostrada num for-mato sem qualquer ponto decimal. Por exemplo:

    19

  • 5/25/2018 Apostila de MATLAB Pet Ele

    20/102

    >> x = [-1 0 1]

    x =

    - 1 0 1

    Se pelo menos um dos elementos da matriz no inteiro exato, existem vrias pos-sibilidades de formatar a sada. O formato padro, chamado de formato short, mostraaproximadamente 5 dgitos significativos ou usam notao cientfica. Para modificar oformato da sada, devemos inserir o comando format. A tabela abaixo mostra os princi-pais formatos:

    short 5 dgitos significativosshort e 5 dgitos significativos em notao cientfica

    long 15 dgitos significativoslong e 15 dgitos significativos em notao cientfica

    hex em sistema hexadecimalrat em formato de nmero racional

    bank duas casas aps a vrgula+ Mostra o sinal do nmero sem o seu valor,

    a parte imaginria do nmero ignorada

    Com o formato short e long, se o maior elemento da matriz superior a 1000 ouinferior a 0.001, aplicado um fator de escala comum para que a matriz completa sejamostrada. Por exemplo:

    >> X = 1e20*x

    X =

    1.0e+020 *

    1.3333 0 0.0000

    Com o comando format + os smbolos +, -, e espao em branco so mostra-dos, respectivamente para representar elementos positivos, elementos negativos e zeros.

    2.8 Utilizao do comando help

    O MATLAB possui um comando de ajuda: help, que fornece informaes sobre amaior parte dos tpicos:

    >> help

    Para obter informaes sobre um tpico especfico, referir help tpico. Por exemplo,

    20

  • 5/25/2018 Apostila de MATLAB Pet Ele

    21/102

    >> help plot

    fornece uma lista de todos os comandos relacionados com grficos bidimensionais.A mesma sintaxe usada para obter informaes sobre um comando especfico.

    Temos como usar, alm da linha de comando, o boto F1, que chama o MATLABhelp, que se localiza nos tpicos de ajuda

    2.9 Utilizao do comando lookfor

    Embora o comando help fornea permita-lhe conseguir uma ajuda, ele pode noser a maneira mais conveniente, a menos que voc saiba o tpico exato sobre o qualnecessita de informaes.

    Para isso, o comando lookforfornece ajuda fazendo uma busca em toda primeira

    linha dos tpicos de ajuda e retornando aqueles que contm as palavras-chave que vocespecificou. O mais importante que a palavra-chave no precisa ser um comando MAT-LAB. Por exemplo, faz-se uma busca por funes relacionadas palavra-chave "fourier":

    FFT Discrete Fourier transform.

    FFT2 Two-dimensional discrete Fourier Transform.

    FFTN N-dimensional discrete Fourier Transform.

    IFFT Inverse discrete Fourier transform.

    IFFT2 Two-dimensional inverse discrete Fourier transform.

    IFFTN N-dimensional inverse discrete Fourier transform.lookfor laplace

    DFTMTX Discrete Fourier transform matrix.

    SPECGRAM Spectrogram using a Short-Time Fourier Transform (STFT).

    TDAFDFT Transform-domain adaptive filter using discrete Fourier

    transform.

    FFT Quantized Fast Fourier Transform.

    FREQS Laplace-transform (s-domain) frequency response.

    2.10 FunesAs potencialidades do MATLAB residem no seu extenso conjunto de funes. O

    MATLAB possui um grande nmero de funes intrnsecas que no podem ser alteradaspelo utilizador. Outras funes esto disponveis numa biblioteca externa distribudacom o programa original (MATLAB TOOLBOX), que so na realidade arquivos com aextenso .m criados a partir das funes intrnsecas. As categorias gerais de funesmatemticas disponveis no MATLAB incluem:

    - Matemtica elementar;- Funes especiais;

    21

  • 5/25/2018 Apostila de MATLAB Pet Ele

    22/102

    - Matrizes elementares;- Matrizes especiais;- Decomposio e fatorao de matrizes;- Anlise de dados;- Polinmios;- Soluo de equaes diferenciais;

    - Equaes no-lineares e otimizao;- Integrao numrica;- Processamento de sinais;- Entre outras

    As sees subseqentes mostram mais detalhadamente as diferentes categorias defunes. Qualquer informao adicional sobre os contedos das diversas categoriaspoder ser encontrado no arquivo de ajuda de cada funo obtido digitando o comandohelpna janela de comando.

    22

  • 5/25/2018 Apostila de MATLAB Pet Ele

    23/102

    3Manipulao de Matrizes e Vetores

    3.1 Operaes com MatrizesO MATLAB possui dois tipos diferentes de operaes aritmticas. As operaes arit-

    mticas matriciais so definidas pelas regras da lgebra Linear. As operaes aritmticascom arrays (conjuntos) so efetuadas elemento por elemento. O caractere de ponto dec-imal . distingue as operaes matriciais das operaes com arrays. No entanto, comoas operaes matriciais e com arrays so iguais para a soma e para a subtrao, o parde caracteres .+ e .- no usado para estas.

    As operaes com matrizes no MATLAB so as seguintes:- Transposio;- Adio;- Subtrao;- Multiplicao;- Diviso direita;- Diviso esquerda;- Potenciao.

    A seguir cada uma destas operaes apresentada com maior detalhe.

    3.1.1 Transposio

    O caractere apstrofo ( ) indica a transposta de uma matriz, por exemplo:

    >> B = A % A varivel B recebe a matriz transposta de A

    Se Z for uma matriz complexa, Z ser a matriz conjugada complexa transposta.

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

    Z = 1.0000+ 5.0000i 2.0000+ 6.0000i

    3.0000+ 7.0000i 4.0000+ 8.0000i

    >>Z1 = Z

    Z1 =

    1.0000- 5.0000i 3.0000- 7.0000i

    2.0000- 6.0000i 4.0000- 8.0000i

    Para obter simplesmente a transposta deZdeve-se usarZ., como mostra o exemplo:

    23

  • 5/25/2018 Apostila de MATLAB Pet Ele

    24/102

    >>Z2 = Z.

    Z2 =

    1.0000+ 5.0000i 3.0000+ 7.0000i

    2.0000+ 6.0000i 4.0000+ 8.0000i

    Caso desejar apenas a matriz complexa conjugada de Z deve-se usar Z.

    >> Z3 = Z.

    Z3 =

    1.0000 - 5.0000i 2.0000 - 6.0000i

    3.0000 - 7.0000i 4.0000 - 8.0000i

    3.1.2 Adio e Subtrao

    A adio e a subtrao de matrizes so indicadas, respectivamente, por + e -.As operaes so definidas somente se as matrizes possurem as mesmas dimenses.

    A adio e a subtrao tambm so definidas se um dos operadores for um escalar,ou seja, uma matriz 1x1. Neste caso, o escalar adicionado ou subtrado de todos oselementos do outro operador. Por exemplo:

    > > y = [ 1 2 ; 3 8 ] - 1

    y =

    0 1

    2 7

    3.1.3 Multiplicao

    A multiplicao de matrizes indicada por *. A multiplicao x*y definidasomente se a segunda dimenso de x for igual primeira dimenso de y.

    Naturalmente, um escalar pode multiplicar ou ser multiplicado por qualquer matriz.Por exemplo:

    >> x=[-1; 0; 2];

    >> pi*x

    ans=

    -3.1416

    0

    6.2832

    24

  • 5/25/2018 Apostila de MATLAB Pet Ele

    25/102

    Se os tamanhos das matrizes forem incompatveis para a operao matricial, sergerada uma mensagem de erro, com exceo do caso de operaes entre escalares ematrizes (para adio, subtrao, diviso e multiplicao).

    3.1.4 Diviso

    A diviso de matrizes requer especial ateno, pois existem dois smbolos para divisode matrizes no MATLAB \ e /". SeAfor uma matriz inversvel quadrada e b for umvetor coluna (ou linha) compatvel, ento A\b e b/A correspondero respectivamente multiplicao esquerda e direita da matriz b pela inversa da matriz A, ou inv(A)*be b*inv(A), mas o resultado obtido diretamente:

    X = A\b a soluo de A*X = bX = b/A a soluo de X*A = b

    Deve-se ter o cuidado de observar as dimenses das matrizes que esto envolvidas

    na operao, o nmero de colunas de A deve ser igual ao nmero de linhas de b emA\b, j em b/A o nmero de linhas de A deve ser igual ao nmero de colunas de b emA\b. A diviso direita definida em termos da diviso esquerda por:

    b/A = (A\b)

    3.1.5 Potenciao

    A expresso Apeleva A p-sima potncia e definida se A matriz quadradae p um escalar. Sep um inteiro maior do que um, a potenciao calculada comomltiplas multiplicaes.

    Se A uma matriz e a um escalar, aA calcula o escalar elevado matriz Afazendo uso dos autovalores e autovetores.

    NOTA:XA, sendoX e A matrizes, apresenta erro.

    3.2 Operaes Elemento a Elemento (Conjuntos)

    O termo operaes com conjuntos utilizado quando as operaes aritmticas sorealizadas entre os elementos que ocupam as mesmas posies em cada matriz (elementopor elemento). As operaes com conjuntos so efetuadas como as operaes usuais,utilizando-se os mesmos caracteres ( * , / ,

    \, e ) precedidos por um

    ponto . ( .* , . /, .\, . e . ).

    3.2.1 Adio e Subtrao

    Para a adio e a subtrao, as operaes com conjuntos e as operaes com matrizesso iguais. Deste modo os caracteres + e - so empregados do mesmo modo econsiderando as mesmas restries de utilizao.

    25

  • 5/25/2018 Apostila de MATLAB Pet Ele

    26/102

    3.2.2 Multiplicao e Diviso

    A multiplicao de conjuntos indicada por .*. SeA e B so matrizes com asmesmas dimenses, entoA.*Bindica um conjunto cujos elementos so simplesmenteo produto dos elementos individuais de A e B. As expressesA./Be A.\Bformam umconjunto cujos elementos so simplesmente os quocientes dos elementos individuais de

    Ae B. Assim:

    >> a=[1 2 3];

    >> b=[2 4 6];

    >> x=a./b >> x=b./a

    x = x =

    0.5000 0.5000 0.5000 2 2 2

    3.2.3 Potenciao

    A potenciao de conjuntos indicada por .. A seguir so mostrados algunsexemplos utilizando os vetores x e y. A expresso:

    A potenciao pode usar um escalar:

    >> x=[1 2 3];

    >> a=x.^3

    a =

    1 8 2 7

    Ou a base pode ser um escalar:

    >> 2.^x

    ans =

    2 4 8

    3.3 Matrizes Elementares

    Alm das j descritas, o MATLAB dispe de diversas funes que permitem a rpidaelaborao de matrizes padro, dentre elas:

    3.3.1 Gerao de Vetores

    O caractere dois pontos, :, permite a gerao de vetores no MATLAB. A declarao:

    26

  • 5/25/2018 Apostila de MATLAB Pet Ele

    27/102

    >> x = 1 : 5

    Gera um vetor linha contendo os nmeros de 1 a 5 com incremento unitrio. Pro-duzindo:

    x =

    1 2 3 4 5

    Outros incrementos, diferentes da unidade podem ser utilizados, como seja o casodo seguinte exemplo que impe um incremento de pi/4.

    >> y = 0 : pi/4 : pi

    y =

    0 0.7854 1.5708 2.3562 3.1416

    Tambm so possveis incrementos decrescentes (negativos).Pode-se, tambm, gerar vetores linearmente espaados fazendo uso da funo linspace.

    Por exemplo,

    >> k = linspace (0, 1, 6)

    k =0 0.2000 0.4000 0.6000 0.8000 1.0000

    Cria um vetor linearmente espaado de 0 a 1, contendo 6 elementos.Ao pretender-se um espaamento logartmico desde o valor inicial 10x1 at ao valor

    final 10x2 do vetor composto por k elementos, a funo a utilizar ser:

    >> logspace (x1 , x2 , k)

    A exceo para essa funo quando x2 = .Caso isso ocorra, os k pontos estaroespaados desde 10x1 at .

    3.3.2 Matriz Identidade

    De modo a construir uma matriz identidade (quadrada ou com dimenso n x m, afuno a utilizar dada por):

    27

  • 5/25/2018 Apostila de MATLAB Pet Ele

    28/102

    >> eye(m,n)

    3.3.3 Matriz Composta por Elementos Unitrios

    No caso de ser necessrio a obteno de uma matriz composta apenas por elementosunitrios, temos que:

    >> ones(m,n)

    3.3.4 Matriz Nula

    Para efetuar qualquer tipo de manipulao matricial, poder ser til a construo deuma matriz composta por elementos nulos:

    >> zeros(n,m)

    3.3.5 Matriz Aleatria

    A elaborao de testes a qualquer programa desenvolvido no MATLAB, ou parautilizao de um outro qualquer modo, poder fazer uso de matrizes compostas pornmeros aleatrios uniformemente distribudos no intervalo entre 0 e 1. A funo querealiza esta operao :

    >> rand(m,n)

    onde m representa o nmero de linhas e n o nmero de colunas da matriz desejada.No caso de se pretender uma distribuio normal dos nmeros aleatrios, com mdia

    zero, varincia um e desvio padro um, a funo a ser utilizada ser:

    >> randn(m,n)

    Cabe salientar que em uma distribuio normal, 68% dos valores esto compreendidosentre 1 e 1.

    O comando magic(n) cria uma matriz quadrada integral de dimenses n x n (linhase colunas tm a mesma soma).

    28

  • 5/25/2018 Apostila de MATLAB Pet Ele

    29/102

    >>x=magic(4)

    3.4 Elementos de Matrizes

    Um elemento individual da matriz pode ser indicado incluindo os seus subscritos en-tre parnteses. Por exemplo, dada a matriz A:

    A =

    1 2 3

    4 5 6

    7 8 9

    A declarao:

    >> A(3,3) = A(1,3) + A(3,1)

    A =

    1 2 3

    4 5 6

    7 8 1 0

    Um subscrito pode ser um vetor. Se X e V so vetores, ento X(V) :

    [X(V(1)), X(V(2)), .... X(V(n))].

    Para as matrizes, os subscritos vetores permitem o acesso s submatrizes contnuase descontnuas. Por exemplo, suponha que A uma matriz 10x10.

    29

  • 5/25/2018 Apostila de MATLAB Pet Ele

    30/102

    A =

    1 2 3 4 5 6 7 8 9 10

    11 12 13 14 15 16 17 18 19 20

    21 22 23 24 25 26 27 28 29 30

    31 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 50

    51 52 53 54 55 56 57 58 59 60

    61 62 63 64 65 66 67 68 69 70

    71 72 73 74 75 76 77 78 79 80

    81 82 83 84 85 86 87 88 89 90

    91 92 93 94 95 96 97 98 99 100

    >> A(1:5,7:10)

    ans =

    7 8 9 10

    17 18 19 20

    27 28 29 30

    37 38 39 40

    47 48 49 50

    uma submatriz 5x4 que consiste nas primeiras cinco linhas e nas ltimas quatrocolunas.

    Utilizando os dois pontos no lugar de um subscrito denota-se todos elementos dalinha ou coluna. Por exemplo,

    >> A(1:2:5,:)

    ans =

    1 2 3 4 5 6 7 8 9 10

    21 22 23 24 25 26 27 28 29 30

    41 42 43 44 45 46 47 48 49 50

    uma submatriz 3x10 que consiste da primeira, terceira e quinta linhas e todascolunas da matriz A.

    3.5 Manipulao de MatrizesDo mesmo modo, esto implementadas no cdigo diversas funes que permitem a

    manipulao e construo de matrizes genricas.

    3.5.1 Matriz Diagonal ou Diagonal de uma Matriz

    Se x for um vetor, diag(x) ser a matriz diagonal com x na diagonal;

    30

  • 5/25/2018 Apostila de MATLAB Pet Ele

    31/102

    >> x=[1 2 3 1 -1 4];

    >> diag(x)

    ans =

    1 0 0 0 0 0

    0 2 0 0 0 00 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 for uma matriz quadrada, ento diag(A) ser um vetor cujos componentes soos elementos da diagonal de A.

    >> A=[3 11 5; 4 1 -3; 6 2 1]A =

    3 1 1 5

    4 2 - 3

    6 2 1

    >> diag(A)

    ans =

    3

    2

    1

    3.5.2 Matrizes Triangulares

    O cdigo possui duas funes que permitem a extrao das matrizes riangular supe-rior e triangular inferior de uma matriz quadrada. So elas, espectivamente:

    triu(A);

    tril(A);

    3.5.3 Redimensionamento de Matrizes

    Dada a matriz A composta por m linhas e n colunas A(m,n), esta poder ser red-imensionada, atravs do comando reshape (A,n,m), desde que o produto de mxn semantenha constante.

    31

  • 5/25/2018 Apostila de MATLAB Pet Ele

    32/102

    >>A(m,n)

    >> B = reshape(A,n,m)

    >> A=[1 2 3; 4 5 6]

    A =

    1 2 34 5 6

    >> B=reshape(A,3,2)

    B =

    1 5

    4 3

    2 6

    3.5.4 Rotao dos Elementos da Matriz

    Os elementos da matriz A podero ser rodados 90o no sentido anti-horrio (ou ro-dados k*90o) atravs do uso da funo:

    >>rot90(A,k)

    A =

    1 2 3

    4 5 6

    >> rot90(A,1)

    ans =3 6

    2 5

    1 4

    32

  • 5/25/2018 Apostila de MATLAB Pet Ele

    33/102

    4Funes

    4.1 Funes EscalaresAlgumas funes no MATLAB operam essencialmente sobre escalares, mas operam

    sobre cada elemento se aplicadas a uma matriz. As funes escalares mais comuns so:

    exp Exponencial;ebs Valor absoluto;log Logaritmo natural;log10 Logaritmo base 10;sqrt Raiz quadrada;

    sin Seno;asin Arco seno;cos Coseno;acos Arco Coseno;tan Tangente;atan Arco Tangente;round Arredondamento ao inteiro mais prximo;floor Arredondamento ao inteiro mais prximo na direo de menos infinito;ceil Arredondamento ao inteiro mais prximo na direo de mais infinito;rem Resto da diviso;

    sign Para cada elemento de x, sign(x) retorna 1 se o elemento maiorque zero, 0 se igual a zero e -1 se ele menor que zero

    4.2 Funes Vetoriais

    Opera com elementos de colunas desejadas, caso seja desejado operar com linhas aoinvs de colunas deve-se transpor a matriz e ento oper-la com a sua coluna que antesera sua linha. Abaixo esto alguns exemplos de funes:

    max Valor mximo dos elementos de cada coluna;sum Soma dos elementos de cada coluna;median Valor mediano dos elementos de cada coluna;any Devolve 1 se qualquer elemento da coluna for diferente de 0;min Valor mnimo dos elementos de cada coluna;prod Produto dos elementos de cada coluna;all Devolve 1 se todos os elementos de cada coluna forem diferentes de 0;sort Organizao dos elementos da coluna por ordem decrescente de valor;std Desvio padro dos elementos de cada coluna.

    33

  • 5/25/2018 Apostila de MATLAB Pet Ele

    34/102

    4.3 Funes Matriciais

    Uma boa aplicao do MATLAB suas funes matriciais. Dentre as mais usadasesto essas:

    eig Valores prprios e vetores prprios;chol Fatorizao de Choleskysvd Decomposio em fator singular;inv Inversa;lu Fatorizao triangular LU;qr Fatorizao ortogonal QR;hess Forma de Hessenberg;schur Decomposio de Schur;expm Matriz Exponencial;sqrtm Matriz de raiz quadrada;poly Polinmio caracterstico;det Determinante;size Tamanho;norm Norma 1, Norma 2, Norma F, Norma Infinita;cond Nmero de condio na norma 2;rank Nmero de linhas linearmente independentes.

    Vamos dar um exemplo para ilustrar algumas funes:

    P = [ 1 0 0 ; 0 2 2 ; 2 3 1 ]

    P =

    1 0 0

    0 2 2

    2 3 1

    inv(P)

    ans =

    1.0000 0 0

    -1.0000 -0.2500 0.5000

    1.0000 0.7500 -0.5000

    poly(P)

    ans =1 - 4 - 1 4

    size(P)

    ans =

    3 3

    det(P)

    ans =

    -4

    34

  • 5/25/2018 Apostila de MATLAB Pet Ele

    35/102

    5Polinmios

    Embora o MATLAB no permita trabalhar diretamente com polinmios, dispe deum conjunto de funes dedicadas sua manipulao.Os polinmios so representados no MATLAB por vetores linhas que contm os

    coeficientes das sucessivas potncias do polinmio ordenados por ordem significativa de-crescente. Vamos ilustrar com um exemplo:

    p = [1 -6 -72 -27]

    p =

    1 -6 -72 -27

    x=roots(p)x =

    12.1229

    -5.7345

    -0.3884

    p=poly(x)

    p =

    1.0000 -6.0000 -72.0000 -27.0000

    No exemplo acima definimos um polinmio qualquer p sendo (p= s36s272s27)a seguir calculamos suas razes atravs do comando roots e na seqncia pegamos osresultados das razes e aplicamos a funopolychegando novamente no polinmio inicialp.

    vlido relembrar de uma importante observao caso o nosso polinmio inicialtivesse um coeficiente diferente de 1 para o maior grau (s3) quando aplicssemos afuno poly sobre as razes o novo polinmio seria com coeficiente 1 para o maior grau,o que no mudaria nada pois uma equao em que um lado tem um polinmio p e deoutro zero, logo podemos multiplicar ambos os lados por qualquer varivel.

    x2 + 2x+ 4 = 0

    ax2 + 2ax+ 4a= 0

    ax2 + 2ax+ 4a= 0

    Alm das duas operaes j citadas h ainda as bsicas, soma, subtrao, multipli-cao e diviso. Soma e subtrao faz-se normalmente sem maiores problemas, paramultiplicao usa-se conv e para a diviso deconv.

    35

  • 5/25/2018 Apostila de MATLAB Pet Ele

    36/102

    Exemplo:

    p=[3 2 1] %definindo um primeiro polinmio

    p =

    3 2 1

    q=[4 3 1] %definindo um segundo polinmio

    q =

    4 3 1

    M=conv(p,q) %efetuando a multiplicao entre

    %os dois polinmios

    M =

    12 17 13 5 1

    [d,r]=deconv(M,q) %vamos dividir a multiplicao feita

    %anteriormente, por o polinmio q e isto

    %dever resultar no polinmio p, a varivel

    %r corresponde ao resto que nesse caso, ser 0d =

    3 2 1

    r =

    0 0 0 0 0

    36

  • 5/25/2018 Apostila de MATLAB Pet Ele

    37/102

    6Anlise Polinomial

    Este captulo traz uma srie de comandos no MATLAB para a anlise polinomial.Primeiro vamos discutir meios de avaliar os polinmios e como trabalhar o seu compor-tamento. Uma aplicao deste conceito est na modelagem da altitude e velocidadede um balo. A seguir definiremos as razes dos polinmios. Polinmios normalmenteaparecem em aplicaes da Engenharia e na Cincia em geral porque eles constituemainda bons modelos para representar sistemas fsicos.

    6.1 Avaliao do polinmio

    Como exemplo vamos tomar o seguinte polinmio:

    f(x) = 3x4 0.5x3 +x 5.2Se x assumir valores escalares, podemos escrever:

    fx = 3*x ^4 - 0.5*x ^3 + x - 5.2;

    Se x for um vetor ou uma matriz devemos escrever:

    fx = 3* x .^4 - 0.5* x .^3 + x - 5.2;

    onde o tamanho da matriz f ser o mesmo da matriz x.

    6.2 Comando polyval

    Este comando possui dois argumentos. O primeiro argumento contm os coeficientesdo polinmio em questo e o segundo argumento contm a matriz para a qual desejamosavaliar o polinmio.

    Exemplo 1

    a = [3,-0.5,0,1,-5.2];

    f = polyval(a,x);

    37

  • 5/25/2018 Apostila de MATLAB Pet Ele

    38/102

    Esses comandos tambm podem ser combinados em um s:

    f = polyval([3,-0.5,0,1,-5.2],x);

    O tamanho de f ter que ser igual ao tamanho de x, seja ele um escalar, vetor oumatriz.

    Supondo que queiramos o valor da funo g(x) =x5 + 3x3 2.5x2 2.5para xno intervalo de [0,5]:

    x:0:0.025:5;

    a = [-1,0,3,-2,5,0,-2.5];

    g = polyval(a,x)

    Quando x for um escalar ou um vetor, polyval consegue calcular o valor da funooperando elemento por elemento. Mas quando x for uma matriz usa-se o comandopolyvalm:

    fx = 3* x .^4 - 0.5* x .^3 + x - 5.2;

    sendo a matriz x, uma matriz quadrada.

    6.3 Operaes Aritmticas

    Podemos trabalhar com polinmios armazenando seus coeficientes em vetores, etrabalhar apenas com estes vetores.

    6.3.1 Soma e subtrao

    Para somar ou subtrair polinmios basta somar ou subtrair seus respectivos coefi-

    cientes. O MATLAB no apresenta um comando especfico par somar polinmios. Asoma ou subtrao padro funciona se ambos os vetores polinomiais forem do mesmotamanho. Somemos os polinmios a seguir:

    g(x) =x4 3x2 x+ 2.4

    h(x) = 4x3 2x2 + 5x 16som(x) =g(x) +h(x)

    sub(x) =g(x) h(x)

    38

  • 5/25/2018 Apostila de MATLAB Pet Ele

    39/102

    6.3.2 Multiplicao

    A multiplicao polinomial efetuada por meio do comando conv (que faz a con-voluo entre dois conjuntos). A multiplicao de mais de dois polinmios requer o usorepetido de conv.

    m = conv(g,h)

    6.3.3 Diviso

    No MATLAB a diviso de polinmios feita atravs do comando deconv:

    [q,r] = deconv(g,h)

    Esse resultado nos diz que g dividido por h nos d o polinmio de quociente q e restor.

    6.4 Razes de polinmios

    Achar as razes de um polinmio, isto , os valores para os quais o polinmio iguala zero, um problema comum em muitas reas do conhecimento, como por exemplo,achar as razes de equaes que regem o desempenho de um sistema de controle de umbrao robtico, ou ainda equaes que demonstram a arrancada ou freada brusca de umcarro, ou analisando a resposta de um motor, e analisando a estabilidade de um filtrodigital.

    Se assumirmos que os coeficientes (a1, , ...) de um polinmio so valores reais,poderemos encontrar razes complexas. Se um polinmio fatorado em termos lineares,fica fcil de identificar suas razes, igualando cada termo a zero.

    Um exemplo consiste no polinmio:

    f(x) =x2 +x

    6

    que ao ser fatorado se torna:

    f(x) = (x 2)(x+ 3)

    As razes da equao so os valores de x para os quais a funo f(x) igual a zero,ou seja, x = 2 e x = -3.

    No grfico, as razes so valores onde a funo corta o eixo x. Um polinmio doterceiro grau tem exatamente trs razes que podem ser:

    - trs razes reais;

    - trs razes iguais;

    39

  • 5/25/2018 Apostila de MATLAB Pet Ele

    40/102

    - uma raiz real e duas razes iguais;- uma raiz real e um par conjugado de razes complexas.

    Se a funo f(x) for um polinmio de grau n, ela ter exatamente n razes. Estas nrazes podem conter mltiplas razes ou razes complexas.

    No MATLAB, um polinmio representado por um vetor linha dos seus coeficientes

    em ordem decrescente. Observe que os termos com coeficiente zero tm de ser includos.Dada esta forma, as razes do polinmio so encontradas usando-se o comando rootsdo MATLAB. J que tanto um polinmio quanto suas razes so vetores no MATLAB,o MATLAB adota a conveno de colocar os polinmios como vetores linha e as razescomo vetores coluna. Para ilustrar este comando vamos determinar as razes do seguintepolinmio:

    f(x) =x3 2x2 3x+ 10

    No MATLAB:

    p = [1,-2,-3,10];

    r = roots(p)

    Lembrando que estes comandos podem ser dados de um s vez:

    r = roots([1,-2,-3,10]);

    Os valores das razes sero: 2 + i, 2 - i e -2.Agora, dadas as razes de um polinmio, tambm possvel construir o polinmio

    associado. No MATLAB, o comando poly encarregado de executar essa tarefa.Onde o argumento do comando poly o vetor contendo as razes do polinmio que

    desejamos determinar.Exemplo 2Sejam as razes de um polinmio -1, 1 e 3. Determinar este polinmio.No MATLAB:

    a = poly ([-1,1,3]);

    Exemplo 3Determine as razes dos seguintes polinmios e plote seu grfico, com seu eixo apro-

    priado, com o objetivo de verificar se o polinmio atravessa o eixo x bem nos locais dasrazes.

    a. f(x) =x3

    5x2 + 2x+ 8

    40

  • 5/25/2018 Apostila de MATLAB Pet Ele

    41/102

    b. g(x) =x2 + 4x+ 4c. h(x) =x5 + 3x4 11x3 + 27x2 + 10x 24d. i(x) =x5 3x3 + 4x2 1

    41

  • 5/25/2018 Apostila de MATLAB Pet Ele

    42/102

    7Grficos

    A construo de grficos no MATLAB mais uma das potencialidades do sistema.Atravs de comandos simples pode-se obter grficos bidimensionais ou tridimensionaiscom qualquer tipo de escala e coordenada. No MATLAB existe uma vasta biblioteca decomandos grficos.

    7.1 Grficos X-Y

    Comandos de gerao de grficos bidimensionais:

    plot Grfico linear.

    loglog Grfico em escala logartmica.semilogx Grfico em escala semi-logartmica (eixo x).semilogy Grfico em escala semi-logartmica (eixo y).

    fill Desenhar polgono 2D.polar Grfico em coordenadas polar.bar Grfico de barras.

    stem Grfico de seqncia discreta.stairs Grfico em degrau.

    errorbar Grfico do erro.hist Histograma.

    rose Histograma em ngulo.compass Grfico em forma de bssola.feather Grfico em forma de pena.

    fplot Grfico da funo.comet Grfico com trajetria de cometa.

    Se Y um vetor, plot(Y) produz um grfico linear dos elementos de Y versus o ndicedos elementos de Y. Por exemplo, para exibir os nmeros [0.0, 0.48, 0.84, 1.0, 0.91, 0.6,0,14], basta introduzir o vetor e executar o comando plot:

    >> Y = [0.0, 0.48, 0.84, 1.0, 0.91, 0.6, 0.14];

    >> plot(Y)

    O MATLAB pode tambm exibir mltiplas linhas em apenas um grfico. Exis-tem duas maneiras, a primeira resulta no uso de apenas dois argumentos, como emplot(X,Y), ondeX e/ouY so matrizes. Ento:

    Se Y uma matriz e X um vetor, plot(X,Y) exibe sucessivamente as linhas oucolunas de Y versus o vetor X.

    42

  • 5/25/2018 Apostila de MATLAB Pet Ele

    43/102

    Se X uma matriz e Y um vetor, plot(X,Y) exibe sucessivamente as linhas oucolunas de X versus o vetor Y.

    Se X e Y so matrizes com mesma dimenso, plot(X,Y) exibe sucessivamente ascolunas de X versus as colunas de Y.

    Se Y uma matriz, plot(Y) exibe sucessivamente as colunas de Y versus o ndicede cada elemento da linha de Y.

    O segundo mtodo (e mais fcil) de exibir grficos com mltiplas linhas faz uso docomando plot com mltiplos argumentos. Vamos explor-lo em um exemplo mais detal-hado. Primeiramente, preparemos os dados, escolhendo o domnio e as funes a seremmostradas:

    >> x = 0:0.3:30;

    >> y1 = exp(-.01*x).*sin(x);

    >> y2 = exp(-.05*x).*sin(.7*x);

    >> y3 = exp(-.1*x).*sin(.5*x);

    Escolhamos uma janela para traar o grfico:

    >> figure(1)

    O comando figure abre uma janela grfica intitulada Figure No.1". Este comando

    opcional; se no for utilizado, o MATLAB abrir uma janela grfica padro. Agorautilizaremos a funo plot para plotar os trs grficos na mesma janela:

    >>h = plot ( x , y1 , b+: , x , y2 , ro- , x , y3 , gx-. );

    O terceiro, o sexto e o nono argumento representam a seqncia de propriedades:cor, ponto e trao. Em ro-. temos uma linha vermelha com cada ponto representadopor um crculo e o espao entre ele preenchido por ponto-e-trao.

    Observa-se que h uma referncia ao grfico plotado (neste caso, h um vetor de

    referncias). Atravs do comando set, aps os grficos terem sido desenhados, possvelalterar os tipos de linhas, marcadores e cores para as curvas. Por exemplo, poderamosfazer:

    >> set(h,LineWidth,2,LineStyle,--)

    >> set(h,Color,r)

    Se desejssemos alterar apenas uma das curvas, passaramos para o comando set

    um elemento do vetor (h(2), por exemplo).

    43

  • 5/25/2018 Apostila de MATLAB Pet Ele

    44/102

    Vejamos resumidamente os principais tipos de linhas e cores:

    7.1.1 Acessrios para os Grficos

    Definamos agora os limites dos eixos, pelo comando axis. Linhas em grade podemser ativadas pela propriedade grid:

    >> axis([0 20 -1 1]);

    >> grid on

    Para adicionarmos anotaes no grfico, como identificao dos eixos, ttulo e leg-enda, usamos os seguintes comandos:

    Eixos:

    >> xlabel(Tempo); ylabel(Amplitude);

    Legenda e ttulo:

    >> legend(h,Primeiro,Segundo,Terceiro); title(Resposta no

    Tempo);

    Obs.: Se dois grficos tiverem sido adicionados separadamente em uma janela grfica,o argumento de referncia no utilizado no comando legend.

    E eis o grfico resultante:Para plotar mais de um grfico na mesma janela, tm-se trs opes. A primeira foi

    utilizada no exemplo anterior, que seria usar um nico comando com vrios argumentos.

    A segunda ativar a propriedade hold, que permite a insero de dois ou mais grficos,

    44

  • 5/25/2018 Apostila de MATLAB Pet Ele

    45/102

    Figura 3: Resultante

    inserindo os comando separadamente.

    >> hold on

    Dessa forma, os grficos sero sobrepostos em uma mesma janela grfica. No en-tanto, se no desejarmos mais essa funo ativa, basta digitar:

    >> hold off

    E por ltima opo temos o comando subplot, que divide uma janela grfica em

    vrias janelas no seu interior.

    >>subplot(2,2,3)

    Este comando divide a janela grfica em uma matriz 2x2 (4 elementos portanto) eprepara o terceiro elemento (linha 2, coluna 1) para receber futuros grficos.

    45

  • 5/25/2018 Apostila de MATLAB Pet Ele

    46/102

    7.1.2 Nmeros Complexos

    Quando os argumentos a exibir so complexos, a parte imaginria ignorada, excetoquando dado simplesmente um argumento complexo. Para este caso especial exibidaa parte real versus a parte imaginria. Ento, plot(Z), quando Z um vetor complexo, equivalente a plot(real(Z),imag(Z)).

    >> Z=[1+i*1;3+i*3;5+i*5;7+i*10;9+i*15];

    >> plot(real(Z),imag(Z))

    7.2 Grficos Polares

    Grficos polares so teis quando valores so representados por ngulo e grandeza(magnitude). Por exemplo, se medirmos a intensidade luminosa ao redor de uma fonte

    de luz, podemos representar a informao com um ngulo fixando eixos e magnituderepresentando intensidade.

    Coordenadas Polares: Um ponto representado em coordenadas polares por umangulo e uma magnitude r. O valor de varia geralmente entre 0 e 2. A magnitude um valor positivo que representa a distncia do eixo que fornece o angulo at o ponto.

    polar(theta,r): Este comando generaliza grficos polares com ngulo(em radiano)e magnitude r correspondente.

    Exemplo: Os comando para a construo do grfico da figura abaixo:

    >> theta = 0:2*pi / 100 : 2*pi;

    >> r = theta / (2*pi);

    >> polar(theta,r);

    Transformao retangular / polar ; polar / retangular: As vezes, devido a praticidade interessante transformarmos coordenadas de um sistema para outro.

    As equaes abaixo relacionam os sistemas polar e retangular:polar / retangular =x = r cos q ; y = r sin q ;retangular / polar =r =x2 +y2 ; q = atan (y/x);

    7.3 Grficos 3DA rede de superfcie pode ser gerada por um conjunto de valores em uma matriz.

    Cada ponta na matriz representa o valor da superfcie que corresponde ao ponto na tela.Para gerar um arquivo que representa uma superfcie 3D, primeiramente calculamoso conjunto dos valores de x e y que representam as variveis independentes e depoiscalculamos os valores de z que representam os valores da superfcie. O comando noMATLAB para plotar grficos 3D mesh(z).

    O comando meshgrid tem os argumentos do vetor x e y, ou seja transforma o domnioespecificado pelos vetores x e y em vetores que podem ser usados em clculos de funes

    46

  • 5/25/2018 Apostila de MATLAB Pet Ele

    47/102

    Figura 4: Grfico em coordenadas polares

    de 2 variveis e construo de grfico 3D.

    Exemplo: Gerar o grfico 3D da funo -0.5 < x < 0.5 ; -0.5 < y < 0.5 ;f(x, y) =z= 1 x2 y21 =|x2 +y2 +z2|

    Soluo:

    [xgrid,ygrid]=meshgrid(-0.5:0.1:0.5,-0.5:0.1:0.5);

    z=sqrt(abs(1 - xgrid.^2 - ygrid.^2));

    mesh(z);

    47

  • 5/25/2018 Apostila de MATLAB Pet Ele

    48/102

    Figura 5: Grfico em 3D

    Estes so alguns dos comandos de exibio de grficos tridimensionais e de contornos:

    plot3 Exibio do grfico em espao 3D.fill3 Desenhar polgono 3D.comet3 Exibir em 3D com trajetria de cometa.contour Exibir contorno 2D.contour3 Exibir contorno 3D.clabel Exibir contorno com valores.quiver Exibir gradiente.mesh Exibir malha 3D.meshc Combinao mesh/contour.surf Exibir superfcie 3D.surfc Combinao surf/contour.surfil Exibir superfcie 3D com iluminao.slice Plot visualizao volumtrica.cylinder Gerar cilindro.sphere Gerar esfera.

    Quando geramos redes de superfcie 3D podemos querer escolher a posio de visoque ser definida com os termos azimuth ( rotao horizontal) e vertical elevation queespecifica os graus (rotao vertical ).

    48

  • 5/25/2018 Apostila de MATLAB Pet Ele

    49/102

    Exemplo: Rotao horizontal:f(x, y) =z= 1 x2 y21 =|x2 +y2 +z2|

    Soluo:

    >> [xgrid,ygrid] = meshgrid(-0.5:0.1:0.5;-0.5:0.1:0.5);

    >> z=sqrt(abs(1 - xgrid.^2 - ygrid.^2));

    >> mesh(z,[-37.5,0]);

    Figura 6: Grfico em 3D, Rotao horizontal

    49

  • 5/25/2018 Apostila de MATLAB Pet Ele

    50/102

    Exemplo: Rotao vertical:f(x, y) =z= 1 x2 y21 =|x2 +y2 +z2|

    Soluo:

    >> [xgrid,ygrid]=meshgrid(-0.5:0.1:0.5;-0.5:0.1:0.5);

    >> z=sqrt(abs)1 - xgrid.^2 - ygrid.^2));

    >> mesh(z,[-37.5,-30]);

    Figura 7: Grfico em 3D, Rotao vertical

    50

  • 5/25/2018 Apostila de MATLAB Pet Ele

    51/102

    8Programao

    8.1 Arquivo.mOs comandos do MATLAB so normalmente introduzidos atravs da janela de co-

    mando, onde uma nica linha de comando introduzida e processada imediatamente.O MATLAB , no entanto, capaz tambm de executar seqncias de comandos ar-mazenadas em arquivos.

    Os arquivos que contm as declaraes do MATLAB so chamados arquivos .m,e consistem em seqncias de comandos normais do MATLAB, possibilitando incluiroutros arquivos .m escritos no formato texto (ASCII).

    Para editar um arquivo texto na janela de comando do MATLAB selecione New M-File para criar um novo arquivo ou Open M-File para editar um arquivo .m j existente,a partir do menu File.

    Os arquivos podem, tambm, ser editados fora do MATLAB utilizando qualquereditor de texto. Para isso, basta salvar os arquivos com a extenso .m.

    Para executar um programa do tipo M-File, deve-se selecionar Run Script, tambma partir do menu File.

    Existem alguns comandos e declaraes especiais para serem usadas nos arquivos.Alguns comandos importantes para se trabalhar com arquivos.m so:

    % Usado para inserir comentrios no texto;

    clear Apaga todo os dados da memria;input Usado quando se deseja adicionar um dadoao problema pela janela de comando;

    pause Causa uma pausa na execuo do programaat que uma tecla seja digitada;

    clc Limpa a janela de comandofigure(n) Mostra a janela grfica de nmero n;close all Fecha todas as janelas grficas.

    8.2 Operadores Lgicos e Relacionais

    Os operadores usados para a comparao de duas matrizes com as mesmas dimensesso expressos por:

    51

  • 5/25/2018 Apostila de MATLAB Pet Ele

    52/102

    8.2.1 Operadores Relacionais

    Smbolo Descrio< Menor Maior

    >= Maior ou igual== Igual= Diferente

    A comparao feita entre os pares de elementos correspondentes e o resultado uma matriz composta de nmeros um(1) e zero(0), representando respectivamenteverdadeiro e falso.

    Por exemplo:

    2 + 2 ~ = 4

    ans =

    0

    Observao: Apenas os operadores == e = testam tanto a parte real como aimaginria, os demais, apenas a parte real.

    x=5; y=3*(x= =3)

    y =

    0 x=5; y=3*(x= =5)

    y =

    3

    x=5; y=3*(x~ =5)

    y =

    0

    x=5; y=3*(x~ =3)

    y =

    3

    8.2.2 Operadores Lgicos

    Smbolo Descrio& AND| OR NOTxor XOR

    Esses operadores operam da mesma forma que os operadores relacionais, dando como

    52

  • 5/25/2018 Apostila de MATLAB Pet Ele

    53/102

    resposta verdadeiro ou falso. Exemplo:

    INPUTS AND OR XORA B & | xor0 0 0 0 0

    0 1 0 1 11 0 0 1 11 1 1 1 0

    A = [ 1 0 1

    0 0 0

    1 1 1 ]

    A =

    1 0 1

    0 0 0

    1 1 1

    B= [ 0 1 0

    0 0 1

    -1 10 0]

    B =

    0 1 0

    0 0 1

    1 1 0

    A&B

    ans =0 0 0

    0 0 0

    1 1 0

    Note que foi aplicado o operador lgico AND e esse comparou cada elemento damatriz A com cada elemento da matriz B, sendo que sua resposta pode ser apenas 0 ou1. Sendo que qualquer nmero diferente de 0, inclusive os negativos, considerado 1pois o MATLAB trabalha na linguagem binria.

    Os operadores lgicos possuem a precedncia mais baixa relativamente aos oper-

    adores aritmticos e relacionais.A precedncia entre os operadores lgicos se d da seguinte maneira:

    NOT Maior precednciaAND e OR Tm igual precedncia aps NOT

    8.3 Comandos For, While e If

    Os comandos FOR, WHILE e IF controlam o fluxo e especificam a ordem e a estruturade clculo do programa. No MATLAB estes comandos so semelhantes aos usados na

    53

  • 5/25/2018 Apostila de MATLAB Pet Ele

    54/102

    linguagem de programao C, mas com uma estrutura diferente. Nas prximas seesdeste captulo apresentaremos a estrutura de tomada de decises IF e os dois comandospara gerar loops no MATLAB: o comando FOR e o comando WHILE.

    8.3.1 Ciclo For

    O ciclo for controlador de fluxo mais simples usado na programao MATLAB.Analisando a expresso:

    for i=1:5,

    x(i)=i^2;

    end

    Pode-se notar que o ciclo for dividido em trs partes:

    i =1 realizado antes do ciclo comear.

    Testando a condio que controla o ciclo (i

  • 5/25/2018 Apostila de MATLAB Pet Ele

    55/102

    8.3.2 Comando If

    Esta instruo permite que executemos um comando se a expresso lgica ver-dadeira e um diferente comando se a expresso falsa. A forma geral do comando ifcombinada instruo else mostrada a seguir:

    if expressogrupo de comandos Aelsegrupo de comandos Bend

    A seguir apresentado um exemplo do uso da declarao if no MATLAB. Voc podefaz-lo na janela de comando ou ainda atravs do mtodo .m novamente.

    for i = 1:5,for j = 1:5,

    if (i == j)

    A(i,j)=2;

    else if (abs(i-j) == 1)

    A(i,j) = -1;

    else

    A(i,j) = 0;

    end

    end

    end

    end

    A

    A =

    2 -1 0 0 0

    -1 2 -1 0 0

    0 -1 2 -1 0

    0 0 -1 2 -1

    0 0 0 -1 2

    Neste exemplo fizemos o uso do comando if, sendo que utilizamos, o que normal,um dentro de outro. Sempre lembrando que no uso do comando if devemos ter umaseqncia que executa caso a condio seja verdadeira e outra que no requerida, maspode-se ter tambm, que execute um outro processo caso a condio seja falsa (else).Aps o ciclo, pediu-se o valor da varivel A para sabermos se realmente o comandofuncionou.

    8.3.3 Ciclo While

    No ciclo while apenas a condio testada. Vamos fazer um exemplo agora utilizandoo arquivo.m:

    55

  • 5/25/2018 Apostila de MATLAB Pet Ele

    56/102

    Primeiro abra o menu File v em New e em seguida seleciona M-fileAgora na janela correspondente ao M-File escreva o seguinte comando:

    a=1;b=15;

    while a

  • 5/25/2018 Apostila de MATLAB Pet Ele

    57/102

    linha abaixo igualamos a funo f ao corpo da funo hema. E por ltimo temos a nossavarivel de entrada que o x, que representa as horas. Pronto, agora basta salvar essearquivo com o nome idntico da funo hema, aps isso vamos janela de comandoprincipal e chamamos pela nova funo:

    hema(8640)

    f =

    1

    ans =

    1

    No caso, est digitado exatamente o valor de um ano em horas, portanto aresposta 1.

    57

  • 5/25/2018 Apostila de MATLAB Pet Ele

    58/102

    9Sistemas de Equaes Lineares

    9.1 Interpretao grficaA interpretao grfica necessria para soluo a sistemas de equaes lineares

    ocorrente freqentemente em problemas de engenharia. H vrios mtodos existentespara solucionar sistemas de equaes, mas eles envolvem operaes demoradas comgrande oportunidade de erro. Entretanto temos que entender o processo para que pos-samos corrigir e interpretar os resultados do computador. Uma equao linear com duasvariveis, semelhante a 2x - y = 3, define uma linha reta e escrita na forma y = mx+ b, onde m o coeficiente angular e b o coeficiente linear. Podemos escrever y =2x - 3. Se tivermos 2 equaes lineares, elas podem representar 2 diferentes retas quese interceptam em um mesmo ponto, ou elas podem representar 2 retas paralelas quenunca se interceptam ou ainda podem representar a mesma reta. Estas possibilidadesso vistas na Figura8.

    Figura 8: (a) - Retas que se interceptam,(b) - Retas paralelas,(c) - Retas iguais

    Equaes que representam duas retas que se interceptam podem ser facilmente iden-tificadas porque possuem diferentes coeficientes angulares.

    Exemplo:

    58

  • 5/25/2018 Apostila de MATLAB Pet Ele

    59/102

    y= 2x 3 y=x+ 3Equaes que representam duas retas paralelas possuem o mesmo coeficiente angular

    e coeficientes lineares diferentes.

    Exemplo:

    y = 2x 3 y= 2x+ 1Equaes que representam a mesma reta so equaes com mesmo coeficiente an-

    gular e mesmo coeficiente linear.

    Exemplo:

    y = 2x 3 3y= 6x 9Se a equao linear contm 3 variveis x, y, z ento ela representa um plano em

    espao tridimensional.

    Se tivermos duas equaes com trs variveis, elas podem representar dois planosque se interceptam em uma linha, ou podem representar dois planos paralelos ou aindapodem representar o mesmo plano.

    Essas idias podem ser estendidas para mais de trs variveis, porm se torna difcila visualizao desta situao. Em muitos sistemas de engenharia estamos interessadosem determinar se existe uma soluo comum para sistemas de equaes. Se a soluocomum existe ento podemos determin-la. Vamos discutir dois mtodos para soluode sistemas de equao usando MATLAB.

    9.2 Soluo usando operao com matrizes

    Considerando o sistema seguinte de trs equaes com trs incgnitas:

    3x+ 2y z= 10x+ 3y+ 2z= 5x y z=1

    Podemos reescrever os sistemas de equaes usando as seguintes matrizes:

    A = 3 2 -1 x = x B = 10

    -1 3 2 y 5

    1 -1 -1 z -1

    Usando multiplicao de matrizes, o sistemas de equaes pode ser escrito na forma:

    Ax = B

    59

  • 5/25/2018 Apostila de MATLAB Pet Ele

    60/102

    9.3 Diviso de matrizes

    No MATLAB, um sistema de equaes simultneas pode ser resolvido usando divisode matrizes. A soluo da equao da matriz Ax = B pode ser calculada usando divisoA\B.

    Exemplo: Ax = B

    A = [3, 2, -1; -1, 3, 2; 1, -1, -1];

    B = [10; 5; -1];

    x = A \ B ;

    O vetor x contm os seguintes valores -2; 5; -6. Para confirmar se os valores de xesto corretos podemos multiplicar A*x e veremos que o resultado ser B.

    9.4 Matriz inversa

    O sistema de equaes pode ser resolvido usando matriz inversa. Por exemplo as-sumimos que A, x, B so matrizes definidas a seguir:

    A = 3 2 -1 x = x B = 10

    -1 3 2 y 5

    1 -1 -1 z -1

    EntoA x= B . Suponha que multiplicamos ambos os lados da equao da matrizporA1ento temos:

    A1 Ax =A1 B

    MasA1 A igual a matriz identidade I, ento temos:

    I x= A1 Boux= A1

    B;

    No MATLAB podemos calcular essa expresso usando o comando:

    X = inv(A)*B;

    60

  • 5/25/2018 Apostila de MATLAB Pet Ele

    61/102

    10Clculo

    10.1 Zeros de FunesO MATLAB encontra zeros de funes usando o comando fzero. A funo, da qual

    deseja-se encontrar os zeros, deve ser definida em um arquivo .m como definido previ-amente. Considere a seguinte funo f (x) = sin(x) - cos(x). A funo func1 entoescrita:

    function f = func1(x);f = sin(x) - cos(x);

    A raiz pode ser determinada usando o comando fzero no comand window do MAT-LAB ou no interior de um arquivo .m.

    >> fzero(func1,1)

    ans =

    0.7854

    Note que o segundo argumento, 1, um chute inicial para o clculo da raiz. Notetambm que o valor do ngulo x que satisfaz f (x) = 0 est em radianos (0.7854 radianos

    = 45 graus). No entanto, existem outros valores de x para os quais f (x) = 0, isto , afuno f (x) tem outras razes. Dando o chute inicial 3, por exemplo, tem-se

    >> fzero(func1,3)

    ans =

    3.9270

    ou, em graus, 225. Este comando pode ser utilizado com qualquer outra funoescrita no MATLAB.

    Os dois zeros calculados anteriormente podem ser verificados no grfico da funo.

    >> fplot(func1,[0 2*pi]);grid;

    10.2 Minimizao de Funes

    Continuando o exemplo anterior, a localizao do ponto de mnimo da funofunc1(x) no intervalo de -1 a 2pi obtido da seguinte maneira, a partir do uso da

    61

  • 5/25/2018 Apostila de MATLAB Pet Ele

    62/102

    Figura 9: Verificao grfica dos zeros da funo

    funo fminbnd.

    >> [xmin ymin] = fminbnd(func1,0,2*pi)

    xmin =

    5.49778788018538

    ymin =

    -1.41421356237271

    10.3 Limites

    Para efetuar uma operao com limites no MATLAB, o comando que se deve dar: limit(f(x),x,a) onde f(x) a funo que se quer achar o limite, x a varivel e a onmero no qual o x est tendendo (xa).

    Exemplo: Achar o limite abaixo:

    limx2

    1 +x2

    1x2

    >> syms x

    >> limit(((1+x^2)/(1-x^2)),x,2)

    ans=

    -5/3

    62

  • 5/25/2018 Apostila de MATLAB Pet Ele

    63/102

    10.4 Limites esquerda e direita

    Para calcular limites esquerda e direita, o comando : limit(f(x),x,a,left) elimit(f(x),x,a,right), onde left e right so os comandos para clacular esquerdae direita, respectivamente.

    Exemplo: Achar os limites abaixo:

    limx1

    x+ 1

    (x 1)3

    limx3+

    x

    x 3

    >> syms x

    >> limit((x/(x-3)),x,3,right)

    ans=inf

    >> limit(((x+1)/(x-1)^3),x,1,left)

    ans =

    -inf

    10.5 Integrao

    10.5.1 Soluo SimblicaNa integrao de funes, o comando que o MATLAB reconhece para tal operao

    int(f(x)).Exemplo: Integrar as funes abaixo:

    x(1 x)2dx

    2x4 3x3 + 5

    7x2 dx

    Utilizando o comando acima explicado:

    63

  • 5/25/2018 Apostila de MATLAB Pet Ele

    64/102

    >> syms x

    >> f=((x^1/2)*(1-x)^2);

    >> int(f)

    ans =

    1/8*x^4-1/3*x^3+1/4*x^2

    >> f=(((2*x^4)-(3*x^3)+5)/(7*x^2));

    >> int(f)

    ans =

    2/21*x^3-3/14*x^2-5/7/x

    Integrais Definidas As integrais definidas podem ser calculadas com o comandoint(f(x),a,b), onde a o limite inferior e b, o limite superior da integral.

    Exemplos:

    20

    2x

    (x 3)2dx

    10

    (1 2x 3x2)dx

    >> syms x

    >> int(((2*x)/(x-3)^2),0,2)

    ans =

    4-2*log(3)

    >> int((1-2*x-3*x^2),0,1)

    ans =

    -1

    10.5.2 Soluo Numrica

    As integrais definidas podem ser aproximadas usando a regra de Simpson com ocomando quad ou usando a regra trapezoidal com o comando trapz. Os dois comandostrabalham de maneira bem diferente.

    Regra Trapezoidal Quando a rea sob a curva pode ser representada por trapziose o intervalo [a,b], dividido em n partes iguais, a rea aproximada poder ser calculadaatravs da seguinte frmula:

    Kt = b a

    2n

    (f(x0) + 2f(x1) +...+ 2f(xn1) +f(xn))

    64

  • 5/25/2018 Apostila de MATLAB Pet Ele

    65/102

    onde os valores de xi representam os pontos no final da cada trapzio e x0 = ae xn = b. A estimativa da integral melhora quando usarmos um maior nmero decomponentes ( como por exemplo trapzios), para aproximar a rea sob a curva, poisquanto menor for o intervalo da funo a curva tende a uma reta.

    O comando trapz aproxima a integral usando os pontos da funo definidos pelousurio. Assim, para usar este comando primeiro deve-se definir os vetores x, no inter-

    valo [a, b], e f, os valores da funo correspondentes aos valores definidos no vetor x.Considere, por exemplo, a seguinte integral.

    I= 10

    2xex2

    dx

    A aproximao para esta integral pode ser calculada atravs do seguinte programa:

    function I = Integral(dx);

    x = 0:dx:1;

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

    I = trapz(x,y);

    Este programa cria um vetor x de a = 0 at b = 1, com incremento dx definido pelousurio, calcula os valores de f (x) nestes pontos e usa o comando trapz para aproximara integral de f (x). O clculo da integral feito no MATLAB, usando a recm-definidafuno Integral, da seguinte maneira.

    >> integral(.1)

    ans =

    0.6298

    Para um dx menor.

    >> integral(.02)

    ans =

    0.6320

    Observe que as aproximaes da integral para dx = 0.1 e dx = 0.02 so diferentes.De fato, usando o incremento menor dx= 0.02aproxima-se melhor a rea sob a curvaf(x). O valor exato desta integral

    Iexato = 1 exp (1)ou, calculando no MATLABI= 0.63212055882856.

    A figura seguinte mostra graficamente a funo para dx= 0.1e para dx= 0.02. A

    rea sob a curva a integral definida da funo f(x).

    65

  • 5/25/2018 Apostila de MATLAB Pet Ele

    66/102

    Figura 10: Integral - rea abaixo da curva

    Observando o grfico da funo, fcil imaginar porque a diminuio do incrementodx melhora a aproximao da integral. No entanto, na prxima seo, um mtodo maiseficiente para o clculo da integral apresentado.

    Regra de Simpson O comando quad permite que se calcule a integral I usando aRegra de Simpson. A sintaxe deste comando a seguinte:

    quad(fc,a,b,tol)

    Entre os argumentos, fc um arquivo.m em que se define a funo da qual se quercalcular a integral, a e b so os limites de integrao e tol a tolerncia de erro exigidapara a aproximao da integral. Mostra-se mais adiante que, quanto menor a tolernciade erro exigida, mais preciso o clculo da integral.

    Primeiro cria-se o programa func2.m que define a funo f (x).

    function y=func2(x)

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

    O clculo da integral I pode ser efetuado usando a tolerncia usual que de 103.Neste caso, desnecessrio definir tol no comand window.

    >> quad(func2,0,1)

    ans =

    0.63212053454568

    66

  • 5/25/2018 Apostila de MATLAB Pet Ele

    67/102

    Calculando agora com uma tolerncia de 108.

    >> quad(func2,0,1,1e-8)

    ans =

    0.63212055882677

    Note que, comparando-se com o valor exato apresentado na seo anterior, quandose diminui a tolerncia melhora-se a aproximao da integral.

    Regra de Newton-Cotes O comando quad8 usa uma forma adaptada da regra deNewton-Cotes. Este comando funciona melhor em certas funes com certos tipos desingularidades como, por exemplo:

    k= 1

    0

    xdx

    Lembrando que uma singularidade um ponto no qual uma funo ou sua derivadano definida ou tende para o infinito.

    Tanto quad8 quanto quad8 escrevem na tela uma mensagem quando detectam umasingularidade, mas ainda assim o valor estimado da integral retornado.

    Exerccio:

    Seja a funo f(x) =|x|. Resolva as integrais abaixo usando o MATLAB e comparecom os resultados obtidos a mo.

    a. int[0.6,0.5] f(x) dx

    b. int[0.5,-0.5] f(x) dx

    c. int[0.0,-1.0] f(x) dx

    10.6 Diferenciao

    A derivada de uma funo f em um ponto pode ser descrita graficamente comoa inclinao da reta que tangencia a funo naquele ponto. Pontos da funo onde aderivada zero so chamados pontos crticos. So pontos onde a tangente representadapor uma linha horizontal e que, por isso, definem o local de mximo e de mnimoda funo. Podemos perceber ao analisar uma determinada funo num determinadointervalo que o sinal da derivada pode mudar, e, se esse sinal muda, significa que dentrodeste intervalo existe local de mximo e local de mnimo. Podemos tambm analisaruma funo pela sua derivada segunda. De modo que, se a derivada segunda de umponto crtico positiva, ento o valor da funo naquele ponto significa um local demnimo. Da mesma forma, se a derivada segunda de um ponto crtico negativa, entoa funo possui um local de mximo.

    67

  • 5/25/2018 Apostila de MATLAB Pet Ele

    68/102

    10.6.1 Derivao por expresses de diferenas

    As tcnicas de diferenciao numrica estimam a derivada de uma funo em umponto xk atravs da aproximao da inclinao da reta tangente curva neste pontousando valores que a funo assume em pontos perto de xk . Essa aproximao podeser feita de vrios modos.

    Assim, dependendo dos pontos, temos trs tcnicas:

    A derivada segunda pode ser achada atravs da frmula:

    f

    (x) =f(xk)

    f(xk

    1)

    xk (xk 1)