APOSTILA MATLAB

Embed Size (px)

Citation preview

  • Introduo ao MATLAB

    2

    1. Apresentao...................................................................................................5 1.1. Soluo de Problemas ...................................................................................... 5

    1.1.1. Enunciado do Problema ............................................................................ 5 1.1.3. Exemplo Manual ......................................................................................... 6 1.1.4. Soluo MATLAB ....................................................................................... 7 1.1.5. Testando ...................................................................................................... 7

    1.2. Apresentao...................................................................................................... 8 1.2.1. Ambiente de Trabalho.............................................................................. 10 1.2.2. Editor de Linhas de Comando ................................................................ 11

    2. Introduo......................................................................................................13 2.1. Introduo a Matrizes Simples....................................................................... 13 2.2. Elementos de Matrizes.................................................................................... 14 2.3. Decarao de Variveis .................................................................................. 15 2.4. Informaes sobre a rea de Trabalho ........................................................ 16 2.5. Nmeros e Expresses Aritmticas .............................................................. 17 2.6. Nmeros e Matrizes Complexas ................................................................... 18 2.7. Formatao de Sada ...................................................................................... 19 2.8. Utilizao do Help (Ajuda) .......................................................................... 20 2.9. Funes ............................................................................................................. 20

    3. Manipulao de Matrizes e Vetores......................................................................21 3.1 . Operaes com Matrizes ......................................................................... 21

    3.1.2 Adio e Subtrao ............................................................................. 22 3.1.3 Multiplicao ......................................................................................... 22 3.1.4 Diviso ................................................................................................... 23 3.1.5 Potenciao .......................................................................................... 23 3.2 Operaes Elemento a Elemento (Conjuntos) ................................... 23 3.2.1 Adio e Subtrao ............................................................................. 23 3.2.2 Multiplicao e Diviso ....................................................................... 24 3.2.3 Potenciao .......................................................................................... 24

    3.3. Matrizes Elementares...................................................................................... 24 3.3.1 Gerao de Vetores ............................................................................ 24 3.3.2 . Matriz Identidade ............................................................................... 25 3.3.3 Matriz Composta por Elementos Unitrios ...................................... 25 3.3.4 Matriz Nula ............................................................................................ 25 3.3.5 Matriz Aleatria .................................................................................... 26

    3.4 Elementos de Matrizes ............................................................................... 26 3.5 Manipulao de Matrizes............................................................................ 27

    3.5.1 Matriz Diagonal ou Diagonal de uma Matriz ......................................... 27 3.5.2 Matrizes Triangulares.......................................................................... 28 3.5.3 Redimensionamento de Matrizes...................................................... 28 3.5.4 Rotao dos Elementos da Matriz .................................................... 29

    4. Funes..........................................................................................................30 4.1 Funes Escalares ...................................................................................... 30 4.2. Funes Vetoriais ............................................................................................ 30

    Sumrio

  • Introduo ao MATLAB

    3

    4.3 Funes Matriciais....................................................................................... 31 5. Polinmios......................................................................................................33 6. Grficos..........................................................................................................35

    6.1 Grficos X-Y ................................................................................................... 35 6.1.1 Acessrios para os Grficos .............................................................. 37 6.1.2 Nmeros Complexos........................................................................... 38

    6.2 Grficos Polares ................................................................................................ 39 6.3. Grficos 3D ....................................................................................................... 39

    7. Programao..................................................................................................43 7.1 Arquivo.m ........................................................................................................... 43 7.2 Operadores Lgicos e Relacionais ........................................................... 44

    7.2.1 Operadores Relacionais ..................................................................... 44 7.2.2 Operadores Lgicos ............................................................................ 44

    7.3. Comandos For While - If............................................................................. 46 7.3.1. Comando If ........................................................................................... 46 7.3.2. Ciclo For ................................................................................................ 47 7.3.3 Ciclo While ............................................................................................ 48

    7.4. Declarando Funes ....................................................................................... 48 8. Sistemas de Equaes Lineares....................................................................56

    8.1. Interpretao grfica ................................................................................... 56 8.2. Soluo usando operao com matrizes................................................. 58 8.3. Diviso de matrizes ..................................................................................... 58

    9. Cculo............................................................................................................61 9.1. Zeros de Funes ........................................................................................ 61 9.2. Minimizao de Funes........................................................................... 62 9.3. Limites ........................................................................................................... 62 9.4. Limites esquerda e direita.................................................................... 62

    10. Integrao Numrica....................................................................................64 10.1. Integrais..................................................................................................... 64 10.2. Integrais Definidas ................................................................................... 64 10.3. Integrais Definidas (outros mtodos).................................................... 65

    10.2.1 Regra Trapezoidal ............................................................................... 65 10.2.2 Regra de Simpson ............................................................................... 66 10.2.3 Regra de Newton-Cotes ..................................................................... 67

    11. Diferenciao Numrica...............................................................................70 11.1. Derivao por expresses de diferenas............................................. 70 11.2. Comando diff ............................................................................................ 71 11.3. Derivadas Superiores.............................................................................. 72 11.4. Derivadas Trigonomtricas: ................................................................... 72

    12. Ajuste de Curvas..........................................................................................73 12.1. Ajuste de Curvas............................................................................................ 73 12.2. Interpolao Unidimensional.................................................................. 74

    13. Anlise Polinomial........................................................................................78 13.1. Avaliao do polinmio ........................................................................... 78 13.2. Comando polyval ..................................................................................... 78 13.3. Operaes Aritmticas........................................................................... 79

    13.3.1 Soma e subtrao ................................................................................... 79 13.3.2. Multiplicao............................................................................................ 80

  • Introduo ao MATLAB

    4

    13.3.3. Diviso...................................................................................................... 80 13.4. Razes de polinmios .............................................................................. 81

    15. Transformadas.............................................................................................84 15.1. Funes Degrau e Impulso .................................................................... 84 15.3. Transformada de Fourier ........................................................................ 85 15.4. Transformada Z........................................................................................ 85

    16. SIMULINK....................................................................................................86 16.1. Introduo ....................................................................................................... 88

    16.1.1. Diagrama de Blocos............................................................................... 88 16.1.2. Smbolos .................................................................................................. 90

    16.2. Conhecendo o SIMULINK ............................................................................ 90 16.2.1. Acessando o SIMULINK........................................................................ 90 16.2.2. Construindo um Modelo Simples ......................................................... 91

    16.3. Construindo Modelos no SIMULINK......................................................... 104 16.3.1 - Elementos de Modelos....................................................................... 104 16.3.2. Manipulando Blocos............................................................................. 105 16.3.3. Fontes..................................................................................................... 105

    16.3.3.1. Fontes Comuns ............................................................................. 107 16.3.4. Importando do MATLAB (From Workspace Block)......................... 108

    16.3.4.1. Importando Arquivos Gerados no MATLAB (From File Input Block) ....... 110 16.3.5. Dispositivos de Sada .......................................................................... 110 16.3.6. Osciloscpio (Scope) ........................................................................... 110

    16.3.6.1. Ferramenta Zoom na tela do Osciloscpio ............................... 112 16.3.6.2. Propriedades do Osciloscpio .................................................... 113

    16.3.7. Grfico XY ............................................................................................ 114 16.3.8. Configurando a Simulao.................................................................. 115

    16.3.8.1. Solver Page.................................................................................... 116 16.3.9. Executando uma Simulao ............................................................... 117

    16.4. Exemplos Prticos ....................................................................................... 118 16.4.1. Viso geral do Simulink ....................................................................... 118 16.4.2. Simulando um salto de bungee jumping........................................... 123

    Apndice A. Lista de Exerccios.......................................................................126 Referncias Bibliogrficas................................................................................127

  • Introduo ao MATLAB

    5

    1. Apresentao

    1.1. Soluo de Problemas A 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 um embasamento suficiente para trabalhar em todas estas reas, para que no tenhamos que aprender uma tcnica para problemas de matemtica, e uma tcnica diferente para problemas de fsica, e assim por diante. A tcnica de soluo de problemas que apresentamos trabalhos para problemas de engenharia e pode ser seguida de perto para resolver problemas em outras reas; mas, supe-se que estamos usando o MATLAB para ajudar a resolv-los.

    O processo ou metodologia para resoluo de problemas que usaremos ao longo do texto 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 entre dois pontos em um plano.

    1.1.1. Enunciado do Problema

    O primeiro passo enunciar o problema claramente. extremamente importante que o enunciado seja conciso para evitar desentendimentos. Para este exemplo, o enunciado do 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 o problema e ento identificar os valores a serem calculados. Estes itens representam a entrada 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 a sada. Algumas vezes, este tipo de diagrama chamado de caixa preta porque no estamos definindo para este ponto todos os passos para determinar a sada, mas estamos mostrando a informao que usada para calcular a sada. Para este exemplo, poderamos usar o diagrama na figura 1.1.

    Soluo de Problemas

  • Introduo ao MATLAB

    6

    1.1.3. Exemplo Manual

    O terceiro passo trabalhar o problema manualmente ou com uma calculadora, usando um pequeno grupo de dados. um passo muito importante e no deve ser ignorado por mais simples que seja o problema. um item no qual voc trabalha os detalhes da soluo do problema. Se voc no pode pegar um simples grupo de nmeros e calcular a sada (seja manualmente ou com uma calculadora), ento voc no est pronto para executar o prximo passo; voc deve reler o problema e talvez consultar material de referncia. 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 da soluo. Este esboo convertido para os comandos MATLAB para que possamos usar o 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 tringulo retngulo, conforme mostra a figura 1.2. Usando o Teorema de Pitgoras, podemos calcular a distncia d com a seguinte equao:

    21 ssd +=

    ( ) ( )22 5714 +=d

    13=d

    61,3=d

  • Introduo ao MATLAB

    7

    1.1.4. Soluo MATLAB

    No prximo captulo, falaremos sobre os comandos MATLAB. Contudo, da soluo voc pode ver que os comandos so muito similares s equaes que foram usadas no exemplo manual. O sinal de percentagem usado para anteceder comentrios que explicam os comandos MATLAB.

    1.1.5. Testando

    O passo final em nosso processo de soluo de problemas testar a soluo. Primeiramente, devemos testar a soluo com os dados do exemplo manual, j que calculamos a soluo. Quando os comandos MATLAB na soluo so executados, o computador mostra a seguinte sada:

    d = 3.6056

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

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

  • Introduo ao MATLAB

    8

    1.2. Apresentao

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

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

    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 prprio do MATLAB - MATLAB Editor/Debugger - que possui caractersticas que auxiliam bastante na edio de programas como auto-colorizao de palavras de acordo com a sintaxe 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 em File => Save Workspace => nomedoarquivo.mat. importante diferenciar, portanto, arquivos .m dos arquivos .mat. Os arquivos .m contm 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 em m-files, sendo que algumas delas podem ser modificadas e vrias outras criadas. Este fato possibilitou a criao de diversos conjuntos de funes especficas para determinadas 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 MathWorks Inc. empresa que desenvolve o software MATLAB (http://www.mathworks.com) - e inmeros outros so desenvolvidos em todo o mundo, com e sem reconhecimento da MathWorks, e podem geralmente ser encontrados na internet. Um dos toolboxes desenvolvidos pela MathWorks chamado Simulink. Ele uma ferramenta interativa para desenvolvimento, simulao e anlise de sistemas dinmicos atravs da criao de modelos baseados em diagramas de blocos. Conjuntos de blocos podem ser usados para modelar sistemas especficos. Esses conjuntos de blocos so chamados Blocksets. Assim como ocorre com os toolboxes, blocksets direcionados a vrias reas so tambm desenvolvidos em todo o mundo. Para ilustrar a vastido do campo de aplicao do MATLAB, abaixo segue uma pequena listagem de toolboxes e blocksets desenvolvidos pela MathWorks.

    Apresentao

  • Introduo ao MATLAB

    9

    Aerospace Blockset Biblioteca que utiliza os fundamentos do SIMULINK para prover

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

    Bioinformatics Toolbox Aplicativo MATLAB que possui ferramentas especializadas para anlise

    de genoma, visualizao e normalizao de micro vetores e anlise das propriedades de protenas.

    Communications Blockset Aplicativo 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 Toolbox Aplicativo MATLAB para rea de modelagem e anlise de sistemas

    automticos de controle. Este Toolbox permite modelar, simular e analisar sistemas contnuos e discretos, com mltiplas entradas e mltiplas sadas (MIMO).

    Data Acquisition Toolbox Aplicativo MATLAB composto por funes para importao de dados

    obtidos a partir de placas de aquisio de dados.

    Curve Fitting Toolbox Aplicativo MATLAB de ajuste de curvas. Este Toolbox permite modelar,

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

    Financial Toolbox Aplicativo MATLAB para rea financeira (estudo de preos, clculo de

    juros e investimentos, anlise de derivativos e otimizao de portiflios). Statistics e Optimization Toolboxes so necessrios para o funcionamento do Financial Toolbox.

    Image Processing Toolbox Aplicativo MATLAB para rea de processamento de imagens (estudo,

    tratamento e anlise de sinais analgicos/digitais transformados em imagens grficas). Signal Processing Toolbox necessrio para o funcionamento deste Toolbox.

    Mapping Toolbox Aplicativo MATLAB composto por funes para tratamento de mapas e

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

  • Introduo ao MATLAB

    10

    Partial Differential Equation Toolbox Aplicativo MATLAB composto por funes para resoluo de equaes

    diferenciais parciais em espao bidimensional utilizando mtodo de elementos finitos.

    Statistics Toolbox Aplicativo MATLAB para rea de estatstica, incluindo alm de

    ferramentas estatsticas bsicas de anlise de dados, recurso de modelagem e anlise estatstica de modelos lineares e no-lineares.

    SimMechanics Biblioteca de blocos do SIMULINK que possibilita a modelagem e

    simulao de sistemas mecnicos, tais como: componentes mecnicos (corpos e juntas), simulao de movimentos, etc.

    1.2.1. Ambiente de Trabalho

    Quando o MATLAB inicializado, trs janelas so exibidas: a Workspace, a Command History e a Janela de Comando (Command Window). Na aba Workspace aparecem as variveis, seu tamanho e valor atual, as variveis so arrays onde cada elemento tem 8 bytes e podem ser editadas utilizando o Array Editor atravs de um clique duplo no nome da varivel. Na janela Command History so armazenados todos os comandos j utilizados, sendo que estes podem ser reescritos na Command Window apenas utilizando as teclas UP e DOWN do teclado, sem necessidade de serem digitados novamente. Por sua vez, a Janela de Comando a parte principal do MATLAB, onde sero escritos os cdigos, funes e demais comandos. Nessa janela, o "prompt" padro (>>) exibido na tela e, a partir deste ponto, o MATLAB espera as instrues do utilizador. Para introduzir 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

  • Introduo ao MATLAB

    11

    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 teclas UP e DOWN podem ser usadas para se encontrar comandos usados anteriormente, para nova execuo ou reedio. No caso de pretender efetuar o clculo de:

    5tanlog pi

    Introduz-se na janela de comando:

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

    Como para calcular a raiz quadrada o comando certo sqrt, o MATLAB responde com 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 faam uso de um argumento em ngulo so calculadas com o dito argumento expresso em radianos.

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

    >> z = 3 + 4*i

    z =

    3.0000 + 4.0000i

    >> Inf ans = Inf

    >> 0/0

  • Introduo ao MATLAB

    12

    Warning: Divide by zero. ans =

    NaN

    O termo NaN significa, em ingls, Not-a-Number (smbolo de indeterminao) e resulta de operaes de valor indeterminado. Inf representa + e pi representa . A varivel 1=i usada para representar nmeros complexos. A varivel 1=j pode ser usada em vez de i nas operaes aritmticas com nmeros complexos por aqueles que a preferem. Estas variveis predefinidas podem ser inadvertidamente redefinidas. claro que elas podem ser redefinidas intencionalmente a fim de liberar o nome da varivel para outros usos. Por exemplo, pode-se querer usar i como inteiro e reservar j para a aritmtica com nmeros complexos. Seja cauteloso e deixe estes nomes de variveis predefinidas intocados, pois h uma infinidade de nomes alternativos que podem ser usados. As variveis predefinidas podem ser realocadas aos seus valores default usando o comando clear nome_da_varivel (por exemplo, clear pi).

  • Introduo ao MATLAB

    13

    2. Introduo O MATLAB trabalha essencialmente com um tipo de objeto: uma matriz

    numrica retangular podendo conter elementos complexos. Observa-se que um escalar uma matriz de dimenso 1x1 e que um vetor uma matriz que possui somente uma linha ou uma 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 uma lista explcita. Os elementos de cada linha da matriz so separados por espaos em branco ou vrgulas e as colunas separadas por ponto e vrgula, colocando-se colchetes em volta do grupo de elementos que formam a matriz com o objetivo de limit-la. Por exemplo, 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 para uso posterior.

    As matrizes podem, tambm, ser introduzidas linha a linha, o que indicado 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 no formato texto com extenso ".m". Por exemplo, se um arquivo chamado "matriz.m" contiver estas trs linhas de texto:

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

    Introduo

  • Introduo ao MATLAB

    14

    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 arquivos binrios ou matrizes geradas por outros programas armazenadas em arquivos ASCII. Assim, para ler um arquivo .mat chamado matriz.mat segue-se a seguinte estrutura: load matriz.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 ao nmero de linha e nmero de coluna entre parnteses da matriz onde se encontra o elemento: A(m,n).

    Outra forma de gerar matrizes atravs de ciclos for. Por exemplo, para gerar uma matriz 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.

    2.2. Elementos de Matrizes

    Os elementos das matrizes podem ser quaisquer expresses do MATLAB. Por exemplo:

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

    -1.3000 1.4142 23.0400

  • Introduo ao MATLAB

    15

    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 1x6 de modo a acomodar o novo elemento, e que os elementos indefinidos do intervalo so estabelecidos 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

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

    2.3. Decarao 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:

    >> varivel = expresso

  • Introduo ao MATLAB

    16

    Ou simplesmente:

    >> expresso

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

    >> 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 com extenso ".m" e em situaes onde o resultado uma matriz de grandes dimenses e h interesse em apenas alguns dos seus elementos.

    Se a expresso to grande que no cabe em apenas uma linha, pode-se continuar a expresso na prxima linha usando um espao em branco e trs pontos," ...", ao final das 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 o resultado na tela.

    As variveis e funes podem ser formadas por um conjunto de letras, ou por um conjunto de letras e nmeros, onde somente os primeiros 19 caracteres do conjunto so identificados. O MATLAB faz distino entre letras maisculas e minsculas, assim a e A no so as mesmas variveis. Todas as funes devem ser escritas em letras minsculas: inv(A) calcula a inversa 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 so armazenadas na rea de Trabalho do MATLAB. Executando:

    >> who

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

    Your variables are:

  • Introduo ao MATLAB

    17

    A B ans 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:

    >> whos Name 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 de dimenso 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 mostrados alguns exemplos de nmeros aceitos:

    3 -99 0.00001 9.637458638 1.602E-20 6.06375e23

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

    1 ^ Potenciao 2 / Diviso direita 2 \ Diviso

    esquerda 3 * Multiplicao 4 + Adio 4 - Subtrao

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

  • Introduo ao MATLAB

    18

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

    2.6. Nmeros e Matrizes Complexas

    Os Nmeros Complexos so permitidos em todas as operaes e funes no MATLAB. Os nmeros complexos so introduzidos utilizando as funes especiais i ou j que correspondem 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 uma parte imaginria {Im}, tal que:

    z = {Re} + {Im}*i

    ele pode ser expresso na forma:

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

  • Introduo ao MATLAB

    19

    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 format, que afeta somente o modo como as matrizes so mostradas, e no como elas so calculadas ou guardadas (o MATLAB efetua todas as operaes em dupla preciso).

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

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

    -1 0 1

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

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

    >> X = 1e20*x X =

    1.0e+020 * 1.3333 0 0.0000

    short 5 dgitos significativos short e 5 dgitos significativos em notao cientfica long 15 dgitos significativos long e 15 dgitos significativos em notao cientfica hex em sistema hexadecimal rat 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

  • Introduo ao MATLAB

    20

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

    2.8. Utilizao do Help (Ajuda)

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

    >> help

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

    >> help plot

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

    2.9. Funes

    As potencialidades do MATLAB residem no seu extenso conjunto de funes. O MATLAB possui um grande nmero de funes intrnsecas que no podem ser alteradas pelo utilizador. Outras funes esto disponveis numa biblioteca externa distribuda com o programa original (MATLAB TOOLBOX), que so na realidade arquivos com a extenso ".m" criados a partir das funes intrnsecas. As categorias gerais de funes matemticas disponveis no MATLAB incluem:

    - Matemtica elementar; - Funes especiais; - 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 de funes.

    Qualquer informao adicional sobre os contedos das diversas categorias poder ser encontrado no respectivo help.

  • Introduo ao MATLAB

    21

    3. Manipulao de Matrizes e Vetores

    3.1 . Operaes com Matrizes

    O MATLAB possui dois tipos diferentes de operaes aritmticas. As operaes aritmticas matriciais so definidas pelas regras da lgebra Linear. As operaes aritmticas com arrays (conjuntos) so efetuadas elemento por elemento. O caractere de ponto decimal . distingue as operaes matriciais das operaes com arrays. No entanto, como as operaes matriciais e com arrays so iguais para a soma e para a subtrao, o par de caracteres .+ e .- no usado para estas.

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

    A seguir cada uma destas operaes apresentada com maior detalhe.

    3.1.1 Transposta

    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.

    Para obter simplesmente a transposta de Z deve-se usar Z., como mostra o exemplo:

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

    Manipulao de matrizes e vetores

  • Introduo ao MATLAB

    22

    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 os elementos 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 definida somente 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

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

    3.1.4 Diviso

    >>Z2 = Z.' Z2 = 1.0000+ 5.0000i 3.0000+ 7.0000i 2.0000+ 6.0000i 4.0000+ 8.0000i

  • Introduo ao MATLAB

    23

    A diviso de matrizes requer especial ateno, pois existem dois smbolos para diviso de matrizes no MATLAB "\" e "/". Se A for uma matriz inversvel quadrada e b for um vetor 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)*b e b*inv(A), mas o resultado obtido diretamente:

    X = A\b a soluo de A*X = b X = 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 (em A\b), j em b/A o nmero de linhas de A deve ser igual ao nmero de colunas de b (em A\b). A diviso direita definida em termos da diviso esquerda por:

    b/A = (A'\b)

    3.1.5 Potenciao

    A expresso A^p eleva A p-sima potncia e definida se A matriz quadrada e p um escalar. Se p um inteiro maior do que um, a potenciao calculada como mltiplas multiplicaes.

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

    NOTA: X^A, sendo X e A matrizes, apresenta erro.

    3.2 Operaes Elemento a Elemento (Conjuntos)

    O termo operaes com conjuntos utilizado quando as operaes aritmticas so realizadas entre os elementos que ocupam as mesmas posies em cada matriz (elemento por 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 matrizes so iguais. Deste modo os caracteres "+" e "-" so empregados do mesmo modo e considerando as mesmas restries de utilizao.

    3.2.2 Multiplicao e Diviso

  • Introduo ao MATLAB

    24

    A multiplicao de conjuntos indicada por ".*". Se A e B so matrizes com as mesmas dimenses, ento A.*B indica um conjunto cujos elementos so simplesmente o produto dos elementos individuais de A e B.

    As expresses A./B e A.\B formam um conjunto cujos elementos so simplesmente os quocientes dos elementos individuais de A e 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 alguns exemplos utilizando os vetores x e y. A expresso:

    A potenciao pode usar um escalar:

    >> x=[1 2 3]; >> a=x.^3 a = 1 8 27

    Ou a base pode ser um escalar:

    >> 2.^x ans = 1 4 8

    3.3. Matrizes Elementares

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

    3.3.1 Gerao de Vetores

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

    >> x = 1 : 5

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

    x = 1 2 3 4 5

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

  • Introduo ao MATLAB

    25

    >> 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 estaro espaados desde 10x1 at .

    3.3.2 . Matriz Identidade

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

    >> eye(m,n)

    3.3.3 Matriz Composta por Elementos Unitrios

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

    >> ones(m,n)

    3.3.4 Matriz Nula

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

    >> zeros(n,m)

    3.3.5 Matriz Aleatria

  • Introduo ao MATLAB

    26

    A elaborao de testes a qualquer programa desenvolvido no MATLAB, ou para utilizao de um outro qualquer modo, poder fazer uso de matrizes compostas por nmeros aleatrios uniformemente distribudos no intervalo entre 0 e 1. A funo que realiza 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 devio padro um, a funo a ser utilizada ser:

    >> randn(m,n)

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

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

    >>x=magic(4)

    3.4 Elementos de Matrizes

    Um elemento individual da matriz pode ser indicado incluindo os seus subscritos entre 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 10

    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 contnuas e descontnuas. Por exemplo, suponha que A uma matriz 10x10.

  • Introduo ao MATLAB

    27

    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 40 41 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 quatro colunas.

    Utilizando os dois pontos no lugar de um subscrito denota-se todos elementos da linha 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 todas colunas da matriz A.

    3.5 Manipulao de Matrizes

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

    >> x=[1 2 3 1 -1 4]; >> diag(x) ans = 1 0 0 0 0 0

  • Introduo ao MATLAB

    28

    0 2 0 0 0 0 0 0 3 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 4

    Se A for uma matriz quadrada, ento diag(A) ser um vetor cujos componentes so os elementos da diagonal de A.

    >> A=[3 11 5; 4 1 -3; 6 2 1] A = 3 11 5 4 1 -3 6 2 1 >> diag(A) ans = 3 2 1

    3.5.2 Matrizes Triangulares

    O cdigo possui duas funes que permitem a extrao das matrizes triangular superior e triangular inferior de uma matriz quadrada. So elas, respectivamente:

    triu(A); tril(A);

    3.5.3 Redimensionamento de Matrizes

    Dada a matriz A composta por m linhas e n colunas A(m,n); poder ser redimensionada, atravs do comando reshape (A,n,m), desde que o produto de mxn se mantenha constante.

    >>A(m,n) >> B = reshape(A,n,m) >> A=[1 2 3; 4 5 6] A = 1 2 3 4 5 6 >> B=reshape(A,3,2) B = 1 5 4 3 2 6

    3.5.4 Rotao dos Elementos da Matriz

  • Introduo ao MATLAB

    29

    Os elementos da matriz A podero ser rodados 90 no sentido anti-horrio (ou rodados k*90) 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

    4. Funes

    Funes

  • Introduo ao MATLAB

    30

    4.1 Funes Escalares

    Algumas 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; Abs 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 maior que 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 ao invs de colunas deve-se transpor a matriz e ento oper-la com a sua coluna que antes era sua linha. Abaixo esto alguns exemplos de funes:

  • Introduo ao MATLAB

    31

    4.3 Funes Matriciais

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

    eig Valores prprios e vetores prprios; chol Fatorizao de Cholesky; Svd 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:

    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.

  • Introduo ao MATLAB

    32

    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

    5. Polinmios

    Polinmios

  • Introduo ao MATLAB

    33

    Embora o MATLAB no permita trabalhar diretamente com polinmios, dispe de um 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 decrescente. 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 = s - 6s -72s -27) a seguir calculamos suas razes atravs do comando roots e na seqncia pegamos os resultados das razes e aplicamos a funo poly chegando novamente no polinmio inicial p.

    vlido relembrar de uma importante observao caso o nosso polinmio inicial tivesse um coeficiente diferente de 1 para o maior grau (s) quando aplicssemos a funo 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 de outro zero, logo podemos multiplicar ambos os lados por qualquer varivel.

    x+2x+4=0 ax+2ax+4a=0a ax+2ax+4a=0

    Alm das duas operaes j citadas h ainda as bsicas, soma, subtrao, multiplicao e diviso. Soma e subtrao faz-se normalmente sem maiores problemas, para multiplicao usa-se conv e para a diviso deconv. 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 0}

    d = 3 2 1 r = 0 0 0 0 0

  • Introduo ao MATLAB

    34

    6. Grficos

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

    Grficos

  • Introduo ao MATLAB

    35

    6.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 ndice dos 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. Existem duas maneiras, a primeira resulta no uso de apenas dois argumentos, como em plot(X,Y), onde X e/ou Y so matrizes. Ento:

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

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

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

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

    O segundo mtodo (e mais fcil) de exibir grficos com mltiplas linhas faz uso do comando plot com mltiplos argumentos. Exploremo-lo em um exemplo mais detalhado.

    Primeiramente, preparemos os dados, escolhendo o domnio e as funes a serem mostradas:

    >> x = 0:0.3:30;

  • Introduo ao MATLAB

    36

    >> 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. Agora utilizaremos 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 representado por 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, possvel alterar os tipos de linhas, marcadores e cores para as curvas. Por exemplo, poderamos fazer:

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

    Vejamos resumidamente os principais tipos de linhas e cores:

    6.1.1 Acessrios para os Grficos

    Definamos agora os limites dos eixos, pelo comando axis. Linhas em grelha podem ser ativadas pela propriedade grid:

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

  • Introduo ao MATLAB

    37

    Para adicionarmos anotaes no grfico, como identificao dos eixos, ttulo e legenda, 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, inserindo os comando separadamente.

    >> hold on

    Dessa forma, os grficos sero sobrepostos em uma mesma janela grfica. No entanto, 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.

  • Introduo ao MATLAB

    38

    >>subplot(2,2,3)

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

    6.1.2 Nmeros Complexos

    Quando os argumentos a exibir so complexos, a parte imaginria ignorada, exceto quando dado simplesmente um argumento complexo. Para este caso especial exibida a 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))

    6.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 magnitude representando intensidade.

    Coordenadas Polares: Um ponto representado em coordenadas polares por um angulo e uma magnitude r. O valor de geralmente dado 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);

  • Introduo ao MATLAB

    39

    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 = x + y ; q = atan (y/x);

    6.3. Grficos 3D

    A 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 calculamos o conjunto dos valores de x e y que representam as variveis independentes e depois calculamos os valores de z que representam os valores da superfcie. O comando no MATLAB para plotar grficos 3D mesh(z).

    O comando meshgrid tem os argumentos do vetor x e y, ou seja transforma o domnio especificado pelos vetores x e y em vetores que podem ser usados em clculos de funes 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 - x- y 1 = |x + y + z|

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

  • Introduo ao MATLAB

    40

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

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

    Exemplo: Rotao horizontal:

    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.

  • Introduo ao MATLAB

    41

    f(x ,y) = z = 1 - x- y 1 = |x + y + z|

    Soluo:

    Exemplo: Rotao vertical:

    f(x ,y)= z = _1 - x- y 1 = |x + y + z|

    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]);

    >> [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]);

  • Introduo ao MATLAB

    42

  • Introduo ao MATLAB

    43

    7. Programao 7.1 Arquivo.m

    Os comandos do MATLAB so normalmente introduzidos atravs da janela de comando, onde uma nica linha de comando introduzida e processada imediatamente. O MATLAB , no entanto, capaz tambm de executar seqncias de comandos armazenadas em arquivos. Os arquivos que contm as declaraes do MATLAB so chamados arquivos .m, e consistem em seqncias de comandos normais do MATLAB, possibilitando incluir outros 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 qualquer editor 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, tambm a 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 dado

    ao problema pela janela de comando; pause Causa uma pausa na execuo do

    programa at que uma tecla seja digitada; clc Limpa a janela de comando figure(n) Mostra a janela grfica de nmero n; close all Fecha todas as janelas grficas.

    7.2 Operadores Lgicos e Relacionais

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

    7.2.1 Operadores Relacionais

    Programao

  • Introduo ao MATLAB

    44

    Smbolo Descrio < Menor

    < = Menor ou igual > 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 respectivamente verdadeiro e falso. Por exemplo:

    2+2 ~ = 4 ans =

    0

    Observao: Apenas os operadores = = e ~ = testam tanto a parte real como a imaginria, 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

    7.2.2 Operadores Lgicos

    Smbolo Funo & AND | OR ~ NOT

    xor XOR

    Esses operadores operam da mesma forma que os operadores relacionais, dando como resposta verdadeiro ou falso. Exemplo:

    INPUTS AND OR XOR

  • Introduo ao MATLAB

    45

    A B & | xor 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 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 da matriz A com cada elemento da matriz B, sendo que sua resposta pode ser apenas 0 ou 1. Sendo que qualquer nmero diferente de 0, inclusive os negativos, considerado 1 pois o MATLAB trabalha na linguagem binria.

    Os operadores lgicos possuem a precedncia mais baixa relativamente aos operadores aritmticos e relacionais.

    A precedncia entre os operadores lgicos se d da seguinte maneira:

    NOT Maior precedncia; AND e OR Tm igual precedncia aps NOT;

    7.3. Comandos For While - If

    Os comandos FOR, WHILE e IF controlam o fluxo e especificam a ordem e a estrutura de clculo do programa. No MATLAB estes comandos so semelhantes aos usados na linguagem de programao C, mas com uma estrutura diferente. Nas prximas sees deste captulo apresentaremos a estrutura de tomada de decises IF e os dois comandos para gerar loops no MATLAB: o comando FOR e o comando WHILE.

    7.3.1. Comando If

  • Introduo ao MATLAB

    46

    Esta instruo permite que executemos um comando se a expresso lgica verdadeira e um diferente comando se a expresso falsa. A forma geral do comando if combinada instruo else mostrada a seguir:

    if expresso grupo de comandos A else grupo de comandos B end

    A seguir apresentado um exemplo do uso da declarao if no MATLAB. Voc pode faz-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 uma seqncia que executa caso a condio seja verdadeira e outra que no requerida, mas pode-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 comando funcionou.

    7.3.2. Ciclo For

  • Introduo ao MATLAB

    47

    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: 1. i =1 realizado antes do ciclo comear. 2. Testando a condio que controla o ciclo (i

  • Introduo ao MATLAB

    48

    pause(2) end clc disp('fim do loop')

    Antes de mais nada, salve o arquivo como loop.m na mesma pasta onde voc est rodando o programa.

    Nesse comando teremos uma comparao de dados entre as variveis a e b comeando com a valendo 1 e b valendo 15 e enquanto a for menor que b o ciclo segue e a cada ciclo a varivel a incrementada em 1 e a b perde uma unidade, isso ocorrer at que a fique maior que b. Tambm importante salientar o comando pause que o tempo que o ciclo ir levar a mais que o normal, pois como sabemos o processamento se daria em fraes de segundos e consequentemente no poderamos observar o comando, por isso o pause de 2 segundos.

    Agora volte a janela de comando e digite loop que a instruo toda ser processada.

    7.4. Declarando Funes

    Para criarmos funes necessitamos trabalhar na janela de M-Files, para tanto, como voc j sabe, v em FileNewM-File. Antes de apresentarmos vamos dar as 3 regras principais para a criao de funes no MATLAB:

    1. Deve-se ter ao menos o nome da funo, a varivel de entrada e a funo f.

    2. O arquivo .m deve ser salvo com o mesmo nome da funo. 3. A funo f deve ser igualada a funo operacional.

    Vamos tornar mais claro esses pontos com um exemplo:

    function f = hema(x)

    f = x/24/30/12

    Abrimos o M-File e digitamos function f e aps isso igualamos a uma funo que criaremos, no caso hema, que significa horas em ano sendo uma transformao. Na linha abaixo igualamos a funo f ao corpo da funo hema. E por ltimo temos a nossa varivel de entrada que o x, que representa as horas. Pronto, agora basta salvar esse arquivo com o nome idntico da funo hema, aps isso vamos janela de comando principal e chamamos pela nova funo:

    hema(8640) f = 1 ans =

  • Introduo ao MATLAB

    49

    1

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

    Aplicao Soluo de Problemas: Fibras ticas

    Se a luz est direcionada para o extremo de uma longa haste de vidro ou plstico, a luz ser totalmente refletida pelas paredes, ziguezagueando e segue adiante at chegar a outra extremidade. Este interessante fenmeno tico pode ser usado para transmitir luz e imagens regulares, de um lugar para outro. Se guia de luz, a luz seguir a forma da haste e emergir somente na extremidade, como mostramos na figura a seguir:

    A fibra tica uma fibra de vidro muito fina. Se os extremos das fibras so polidos e o arranjo espacial o mesmo em ambos extremos (um feixe coerente), a fibra pode ser usada para transmitir uma imagem, e o feixe chamado condutor de imagem. Se as fibras no tm o mesmo arranjo para ambos extremos (feixe incoerente), a luz transmitida em vez da imagem, e por esta razo chamada guia de luz. Por causa da flexibilidade das fibras ticas, as guias de luz e condutores de imagens so usadas em instrumentos projetados para permitir a observao visual de objetos ou reas que de outro modo seriam inacessveis. Por exemplo, um endoscpio um instrumento usado por fsicos para examinar o interior do corpo de um paciente com somente um pequeno corte. Um endoscpio usa uma fibra tica para transmitir a luz necessria dentro do corpo de um paciente. As fibras ticas podem ser usadas para transmitir feixes de luz LASER, o qual pode ser usado para desobstruir artrias, quebrar pedras nos rins, e limpar cataratas. Este fenmeno de reflexo total interna origina-se da lei de Snell e depende unicamente dos ndices de refrao para os material considerados para guias de luz. Um guia de luz composto de dois materiais o ncleo central e o material que o envolve, denominado de blindagem. O material que compe o ncleo tem o ndice de refrao mais alto que o meio que o envolve. Quando a luz incide em uma interface entre dois meios com ndices de refrao diferentes, parte dela refletida a outra parte refratada. A quantidade de luz

  • Introduo ao MATLAB

    50

    refratada depende dos ndices de refrao dos materiais e o ngulo de incidncia da luz. Se a luz incidente na interface entre dois meios provm de um material com maior ndice de refrao, ento parte da luz atravessa a interface. O ngulo de incidncia onde a luz totalmente refletida pela superfcie chamado de ngulo crtico qc. Como o ngulo crtico depende dos ndices de refrao de dois materiais, podemos calcular este ngulo e determinar se a luz que entra em uma haste a um ngulo particular permanecer no interior da mesma. Suponha que n2 o ndice de refrao do meio envolvente, e n1 o ndice de refrao da haste. Se n2 maior que n1, a haste no transmitir luz; caso contrrio, o ngulo crtico pode ser determinado pela equao:

    21 nnsen c +=

    Escreva um programa MATLAB que determina se a luz ser ou no transmitida por dois materiais que forma um guia. Suponha que um arquivo de dados ASCII denominado indices.dat contenha o nmero de possveis ndices de refrao da fibra seguido pelo ndice de refrao do meio que o envolve. O programa deve determinar se os materiais formaro um guia de luz e, ento, para quais ngulos a luz entra no guia.

    1. ENUNCIADO DO PROBLEMA

    Determine se os materiais especificados formaro ou no um guia de luz. Se eles no formarem, calcule os ngulos para o qual a luz pode entra na haste e ser transmitida.

    2. DESCRIO ENTRADA \ SADA

    Como mostramos na figura abaixo, a entrada ao programa um arquivo de dados contendo os ndices de refrao para os guias de luz em potencial. A sada uma mensagem indicando se a luz ou no transmitida e o ngulos para quais pode entrar no guia.

  • Introduo ao MATLAB

    51

    3. EXEMPLO MANUAL

    O ndice de refrao do ar 1,0003 e o ndice do vidro 1,5. Se formarmos um guia de luz de vidro envolvido pelo ar, o ngulo crtico qc pode ser calculado como mostramos a seguir:

    ( ) ==

    =

    =

    82,4166687,05,1

    003,1 111

    21 sensenn

    nsenc

    O guia de luz transmitir luz para todos os ngulos de incidncia maiores que 41,820 .

    4. SOLUO DO MATLAB

    5. TESTANDO

    Aplicao Soluo de Problemas: Equilbrio de Temperatura

    O projeto de novos materiais para o aperfeioamento das caractersticas do fluxo de ar acerca dos veculos envolve a anlise dos materiais para no somente o fluxo de ar mas tambm para propriedades como a distribuio de temperatura. Neste problema, consideramos a distribuio em uma fina placa metlica tal que esta alcance um ponto de equilbrio trmico. A placa projetada para ser usada em uma aplicao na qual as temperaturas de todos os quatro lados da placa metlica estejam a temperaturas constantes ou a temperaturas isotrmicas. A temperatura para os outros pontos da placa uma funo da temperatura dos pontos envolventes. Se considerarmos as placas para serem semelhantes a uma grade, ento uma matriz poderia ser

  • Introduo ao MATLAB

    52

    usada para armazenar as temperaturas dos pontos correspondentes sobre a placa. A figura abaixo mostra uma grade para uma placa que est sendo analisada com seis medidas de temperatura ao longo dos lados e oito temperaturas ao longo das partes superior e inferior. Os pontos isotrmicos nos quatros lados so sombreados. Um total de 48 valores de temperaturas est representado.

    Grade de uma placa metlica

    As temperaturas isotrmicas sobre os quatro lados seriam especificadas; supomos que os lados superior, esquerdo e direito so mantidos mesma temperatura enquanto que o lado inferior da placa mantida a uma temperatura diferente. Os pontos restantes so inicialmente selecionados para uma temperatura arbitrria, normalmente zero. A nova temperatura de cada ponto interno calculado como a mdia das quatro temperaturas envolventes (veja a figura a seguir) e dada por:

    44321

    0TTTT

    T+++

    =

  • Introduo ao MATLAB

    53

    Depois de calcular a nova temperatura para um ponto interno, a diferena entre a antiga e a temperatura recente calculada. Se a mudana de temperatura for maior que algum valor de tolerncia especificado, a placa j no est em equilbrio trmico, e o processo inteiro repetido.

    Usamos as duas matrizes para as temperaturas, uma das antigas temperaturas e uma das recentes temperaturas. Precisamos de duas matrizes porque supomos que a temperatura muda para todos os pontos que ocorrem simultaneamente, sempre que as calculamos. Se usarmos uma nica matriz, estaramos atualizando informao sem que antes estivssemos com a informao antiga. Por exemplo, suponha que estamos calculando a nova temperatura para a posio (3, 3). O novo valor a mdia das temperaturas nas posies (2, 3), (3, 2), (3, 4), e (4, 3). Quando calculamos a nova temperatura para a posio (3, 4), novamente calculamos uma mdia, mas queremos usar o antigo valor na posio (3, 3), e no o seu valor atualizado. Portanto, usamos uma matriz de temperaturas antigas para calcular uma matriz de novas temperaturas e para determinar se alguma temperatura muda acima da tolerncia. Quando movemos as novas temperaturas para o conjunto antigo. Quando nenhuma das temperaturas muda acima da tolerncia, supomos que o equilbrio foi alcanado, e imprimimos as temperaturas finais.

    1. ENUNCIADO DO PROBLEMA

    Determine os valores de equilbrio para uma placa de metal com lados isotrmicos.

    2. DESCRIO ENTRADA / SADA

  • Introduo ao MATLAB

    54

    Como mostra a figura abaixo, a entrada o tamanho da grade da placa, as temperaturas isotrmicas e o valor de tolerncia. A sada o grupo de temperaturas de equilbrio para a placa de metal.

    3. EXEMPLO MANUAL

    Tenha a certeza que compreende o processo, examinamos um simples caso, estudando cada iterao. Supondo que a matriz contm quatro linhas e quatro colunas. As temperaturas isotrmicas so 100 e 50, e ns iniciamos todos os pontos restantes do zero. Usamos uma tolerncia de 40. O grupo inicial de temperaturas e as sucessivas iteraes ao equilbrio trmico so mostradas a seguir:

    Temperaturas Iniciais

    505050501000010010000100100100100100

    Primeira Iterao

    505050501005,375,371001005050100100100100100

    Segunda Iterao

    50505050100375,59375,59100100875,71875,71100100100100100

  • Introduo ao MATLAB

    55

    Como nenhuma das temperaturas alteradas entre a primeira e segunda interao ultrapassa a tolerncia de 400, as temperaturas na segunda iterao esto tambm em equilbrio.

    4. SOLUO DO MATLAB

    5. TESTANDO

  • Introduo ao MATLAB

    56

    8. Sistemas de Equaes Lineares

    8.1. Interpretao grfica

    A interpretao grfica necessria para soluo a sistemas de equaes lineares ocorrente freqentemente em problemas de engenharia. H vrios mtodos existentes para solucionar sistemas de equaes, mas eles envolvem operaes demoradas com grande oportunidade de erro. Entretanto temos que entender o processo para que possamos corrigir e interpretar os resultados do computador. Uma equao linear com duas variveis, 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 que se interceptam em um mesmo ponto, ou elas podem representar 2 retas paralelas que nunca se interceptam ou ainda podem representar a mesma reta. Estas possibilidades so vistas na figura 8.1.

    Sistemas de Equaes Lineares

  • Introduo ao MATLAB

    57

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

    Exemplo:

    y = 2x -3 ; y = -x +3;

    Equaes que representam duas retas paralelas possuem o mesmo coeficiente angular e coeficientes lineares diferentes.

    Exemplo:

    y = 2x - 3 ; y = 2x + 1;

  • Introduo ao MATLAB

    58

    Equaes que representam a mesma reta so equaes com mesmo coeficiente angular e mesmo coeficiente linear.

    Exemplo:

    y = 2x - 3 ; 3y = 6x - 9;

    Se 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 planos que se interceptam em uma linha, ou podem representar dois planos paralelos ou ainda podem representar o mesmo plano. Essas idias podem ser estendidas para mais de trs variveis, porm se torna difcil a visualizao desta situao. Em muitos sistemas de engenharia estamos interessados em determinar se existe uma soluo comum para sistemas de equaes. Se a soluo comum existe ento podemos determin-la. Vamos discutir dois mtodos para soluo de sistemas de equao usando MATLAB.

    8.2. Soluo usando operao com matrizes

    Considerando o sistema seguinte de trs equaes com trs variveis desconhecidas.

    3x +2y -z = 10 -x +3y +2z = 5 x -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

    8.3. Diviso de matrizes

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

    Exemplo: Ax = B

  • Introduo ao MATLAB

    59

    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 x esto corretos podemos multiplicar A*x e veremos que o resultado ser B.

    8.4. Matriz inversa

    O sistema de equaes pode ser resolvido usando matriz inversa. Por exemplo assumimos 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

    Ento A*x = B. Suponha que multiplicamos ambos os lados da equao da matriz por A^-1 ento temos:

    A^-1*A*x =A^ -1*B]

    Mas A^-1*A igual a matriz identidade I, ento temos:

    I*x=A^-1*B ou x = A^-1*B;

    No MATLAB podemos calcular essa expresso usando o comando:

    X = inv(A)*B;

    Aplicao soluo de problemas: Anlise de circuito eltrico

    A anlise de circuito eltrico freqentemente envolve o encontro de solues de conjunto de equaes. Essas equaes so usadas para descrever as correntes que entram e que saem dos ns, ou a voltagem em cada malha. A figura abaixo nos mostra um circuito com duas fontes de tenso. As trs equaes que descrevem a tenso ao redor dos trs laos so:

  • Introduo ao MATLAB

    60

    ( R1+R2 )i1 -R2i2 +0i3 = V1

    -R2i1 +(R2+R3+R4) i2 -R4i3 = 0

    0i1 -R4i2 +(R4+R5)i3 = -V2

    Problema: Calcular as trs correntes do circuito da figura 8.2 considerando os valores da figura para R1, R2, R3, R4, R5, V1 e V2.

    Entrada / Sada:

    3. SOLUO NO MATLAB

    4. TESTANDO

  • Introduo ao MATLAB

    61

    9. Cculo 9.1. Zeros de Funes

    O 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 previamente. Considere a seguinte funo f (x) = sin(x) - cos(x). A funo func1 ento escrita:

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

    A raiz pode ser determinada usando o comando fzero no comand window do MATLAB 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. Note tambm 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 , a funo 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 funo escrita no MATLAB.

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

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

    Clculo

  • Introduo ao MATLAB

    62

    9.2. Minimizao de Funes

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

    >> [xmin ymin] = fminbnd('func1',0,2*pi) xmin = 5.49778788018538 ymin = -1.41421356237271

    9.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 o nmero no qual o x est tendendo )( ax .

    Exemplo: Achar o limite abaixo:

    a. 2

    2

    2 11lim

    x

    x

    x

    +

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

    ans=

    -5/3

    9.4. Limites esquerda e direita

  • Introduo ao MATLAB

    63

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

    Exemplo: Achar o limite abaixo:

    a. 31 )1(

    1lim

    +

    x

    x

    x

    b.3lim3 + x

    x

    x

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

    ans=

    inf

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

    ans =

    -inf

  • Introduo ao MATLAB

    64

    10. Integrao Numrica

    10.1. Integrais

    Na integrao de funes, o comando que o MATLAB reconhece para tal operao int(f(x)).

    Exemplo: Integrar as funes abaixo:

    a. dxxx2)1(

    b. dxx

    xx

    +2

    34

    7532

    Utilizando o comando acima explicado:

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