apostila matlab

Upload: fabio-celestino

Post on 16-Jul-2015

944 views

Category:

Documents


8 download

TRANSCRIPT

UFJF - Universidade Federal de Juiz de Fora

Faculdade de Engenharia CURSO DE MATLAB Eduardo M. Viana Marcelo S. Neves ABRIL, 2007 ii SUMRIO CAPTULO 1INTRODUO.............................................................................. 1 1.1LINHA DE COMANDO.......................................................................................... 1 1.2COMANDOS E VARIVEIS................................................................................... 2 1.3CONSTANTES..................................................................................................... 3 1.4EDITOR.............................................................................................................. 3 1.5MATRIZES SIMPLES ........................................................................................... 3 1.6ELEMENTOS DA MATRIZ.................................................................................... 4 1.7INFORMAES DA REA DE TRABALHO ............................................................ 5 1.8FINALIZANDO E SALVANDO O ESPAO DE TRABALHO....................................... 6 1.9NMEROS E EXPRESSES ARITMTICAS............................................................ 6 1.10NMEROS COMPLEXOS E MATRIZES ................................................................. 7 1.11FORMATOS DE SADA ........................................................................................ 7 CAPTULO 2OPERANDO MATRIZES E VETORES..................................... 8 2.1GERANDO VETORES .......................................................................................... 8 2.2MATRIZES ESPECIAIS......................................................................................... 9 2.3OPERANDO COM MATRIZES............................................................................... 9 2.4OPERAES RELACIONAIS............................................................................... 10 2.5OPERAES LGICAS ...................................................................................... 10 CAPTULO 3FUNES MAIS USADAS EM ENGENHARIA..................... 12 3.1ANLISE DE DADOS......................................................................................... 12 3.2FATORAO LU.............................................................................................. 12 3.3DECOMPOSIO EM AUTOVALORES E AUTOVETORES ..................................... 13 3.4REPRESENTAO POLINOMIAL........................................................................ 13 3.5DERIVADA....................................................................................................... 14 3.6INTEGRAL........................................................................................................ 14 3.7LAPLACE ......................................................................................................... 15 3.8DIAGRAMA DE BODE ....................................................................................... 15 3.9DIAGRAMA FASORIAL ..................................................................................... 16 CAPTULO 4GRFICOS................................................................................... 18 4.1FUNES ELEMENTARES DE PLOTAGEM.......................................................... 18 4.2CRIANDO UM GRFICO.................................................................................... 18 4.3SUBGRFICOS.................................................................................................. 19 4.4FIGURA............................................................................................................ 19 4.5FUNO AXIS.................................................................................................. 20 4.6ADICIONANDO LINHAS A UM GRFICO EXISTENTE ......................................... 20 4.7ESTILOS DE LINHAS E MARCADORES DE COR.................................................. 21 4.8DADOS COMPLEXOS ........................................................................................ 21 4.9FUNES ESPECIAIS PARA GRFICOS 2D......................................................... 22 4.10EXPORTANDO GRFICOS ................................................................................. 22 4.11GRFICOS 3D.................................................................................................. 23 4.11.1Grficos de Linhas ................................................................................. 23 4.11.2Meshgrid................................................................................................. 24 4.11.3Grficos de Contorno............................................................................. 24 iii CAPTULO 5DECISES E LOOPS.................................................................. 26 5.1INTRODUO................................................................................................... 26 5.2COMANDOS CONDICIONAIS ............................................................................. 26 5.2.1Estrutura if.............................................................................................. 26 5.2.2Estrutura do if Estendido........................................................................ 27 5.2.3Estrutura de ifs Aninhados.................................................................... 27 5.2.4Swicth : Case .......................................................................................... 28 5.3COMANDOS REPETITIVOS OU LAOS ............................................................... 29 5.3.1Estrutura for ........................................................................................... 29 5.3.2Comandos que Afetam a operao dos Loops ....................................... 30 5.3.2.1Break............................................................................................... 30 5.3.2.2Continue ......................................................................................... 30 5.3.3A Estrutura while.................................................................................... 31 5.3.4Loop while Infinito ................................................................................. 31 5.4EXERCCIOS..................................................................................................... 33 CAPTULO 6ARQUIVOS-M: SCRIPTS E FUNES .................................. 35 6.1ARQUIVOS SCRIPTS ......................................................................................... 35 6.2ARQUIVOS FUNO......................................................................................... 36 6.3VARIVEIS GLOBAIS ....................................................................................... 37 6.4STRINGS DE TEXTO.......................................................................................... 37 6.5A FUNO EVAL ............................................................................................. 38 CAPTULO 7ARQUIVOS E/S............................................................................ 39 7.1ABRINDO E FECHANDO ARQUIVOS .................................................................. 39 7.2LEITURA DE ARQUIVOS ................................................................................... 40 7.3ESCREVENDO ARQUIVOS DE TEXTO FORMATADOS E STRINGS........................ 41 7.4LENDO ARQUIVOS DE TEXTO FORMATADOS E STRINGS .................................. 41 Captulo 1 Introduo 1 Captulo 1Introduo O MATLAB (MATrix LABoratory) um software produzido pela MathWorks, Inc, paracomputaotcnicaecientficaemgeral.OMATLABumaferramenta computacionalmuitoimportanteparaoestudantedeEngenhariaEltricaeutilizada durantetodoocursoemvriasdisciplinas.OsusostpicosdoMATLABnaEngenharia Eltrica incluem: Clculos matemticos; Construo de grficos; Desenvolvimento de algoritmos. 1.1Linha de comando O MATLAB funciona com linhas de comando, na janela principal. Nela colocada qualquer instruo ao MATLAB. As linhas de comando so frequentemente da forma: varivel = expresso ou simplesmente expresso Podem ser compostas expresses com operadores e outros caracteres especiais, com funes, e com nomes de variveis. A execuo da expresso produz uma matriz. A matriz mostradanatelaeassumeonomedavariveldefinidanalinhadecomandoparaque possa ser utilizada em uma outra situao. Se for omitido o nome da varivel e o sinal =, o MATLAB cria automaticamente uma varivel com o nome ans. Por exemplo, digitando a expresso: >> sqrt(5) ans = 2.2361 UmalinhadecomandonormalmenteterminacomateclaEnter.Entretanto,seo ltimo caractere for um ponto-e-vrgula (;), a varivel que produzida no mostrada na tela.Seaexpressocomplicadadetalformaquenocabeemumalinha,utiliza-seos trs pontos (...) seguidos pela tecla Enter para indicar que a linha de comando continua na prximalinha.Pode-seformarnomedefunesevariveiscomumaletraseguidapor um nmero qualquer de letras e dgitos. O nome de varivel pode ser definido como uma letraouumconjuntodecaracteres,havendodiferenaentreletraminsculaeletra Captulo 1 Introduo 2 maiscula.Semaisdeumapalavraforusadapararepresentarumavarivel,deveser usado o sinal de sublinhado para ligar os nomes que representaro a varivel. Exemplo de nomesdevariveis:a,A,preo1,val3,custo_mdio,preo_de_venda,etc.OMATLAB entendedeformadiferenteletrasmaisculaseminsculas.Aeanosoamesma varivel. Os nomes das funes devem ser digitados em letras minsculas. Os comandos que MATLAB executou durante uma sesso so armazenados at um certolimite.Podeserutilizadaumachamadarpidaaoinvsdadigitaodoscomandos previamentedigitados,atravsdaespecificaodosprimeiroscaracteresseguidospela tecla . 1.2Comandos e variveis OscomandosnoMATLABsosempreeditadosemletrasminsculas.Alguns comandos importantes no MATLAB: ComandoDescrio ;suprime a impresso de resultados %serve para se colocar um comentrio ...que a linha de comando continua na prxima linha ansvarivel usada para assumir o resultado referente ao ltimo comando Infinfinito (exemplo: digite 1/0) NaNindeterminao (exemplo: digite0/0) Ctrl cinterrompe comandos do MATLAB !seguida de um comando do DOS, acionar este comando digitado clclimpa a tela(semelhante ao comando CLS do DOS) clearapaga as variveis do workspace Umcomandoimportanteocomandohelp,queforneceinformaosobregrande partedostpicosdoMATLAB.Semnenhumargumentomostraumalistadediretrios quecontmarquivosrelacionadoscomMATLAB.Cadalinhamostradalistaonomede umdiretrioseguidoporumadescriodocontedodomesmo.Algunsdiretriosso associadoscomoscomandosbsicosdoMATLAB.Outroscontmtoolboxes,taiscomo controlesignal;essespossuemfunesadicionaisdoMATLABcobrindoreasde aplicaes mais especializadas.Paraumalistadefunesrelacionadasaumdeterminadodiretrio,digita-sehelp seguidopelonomedomesmo.Apareceumalistadecomandos,funesesmbolos especficosdoMATLAB.Ocomandohelpseguidoporestescomandosoufunes fornece informaes sobre como utiliz-los em uma linha de comando. Outra funo do MATLAB o lookfor que procura funes a partir de uma palavra-chave especificada. Por exemplo, se for passado ao MATLAB o comando: >> lookfor inverse A seguinte resposta retornada: Captulo 1 Introduo 3 INVHILB Inverse Hilbert matrix. IPERMUTE Inverse permute array dimensions. ACOS Inverse cosine. ACOSHInverse hyperbolic cosine. ... Todas as funes onde aparecem a palavra inverse, so retornadas. 1.3Constantes O MATLAB vem ainda com algumas constantes definidas, so elas: pi: 3,141592653 eps: 2,22 x 10-16

i = 1 j =1 1.4Editor OMATLAB6.5temumeditordetexto,ondepossveldigitarprogramas salvando-osemarquivoscomextenso.m.Osarquivoscomextenso.msoarquivos executveisparaoMATLAB.ParaacionaroeditordetextosnoambienteMATLAB, acione sequencialmente, as opes do menu: File New M-File Oeditorserabertoemoutrajanela,umapginaembranco,ondepodemser colocadas instrues ao MATLAB. 1.5Matrizes Simples MATLABtrabalhaessencialmentecomumtipodeobjeto,umamatrizretangular numrica(realoucomplexa).Emalgumassituaes,denominaesespecficasso atribudas a matrizes 1 por 1, que so os escalares, e a matrizes com somente uma linha ou coluna, que so os vetores. Operaes e comandos no MATLAB so aplicados de maneira natural, utilizando o conceito de matriz, como so indicados no papel. Pode-se entrar com matrizes no MATLAB de diversas maneiras: Entrar com uma lista explcita de elementos. Gerar matrizes utilizando funes e linhas de comando do MATLAB. Criar matrizes em arquivos-M.Chamar matrizes de um arquivo de dados externo. Captulo 1 Introduo 4 Amaneiramaisfcildesedeclararmatrizesfazendoaexplicitaodalistade elementos na linha de comando, seguindo as convenes abaixo: Separar os elementos da lista de elementos atravs de espaos ou vrgulas. Colocar os elementos entre colchetes, [ ].Usar (;) ponto-e-vrgula para indicar o fim de uma linha. Por exemplo, entrando com a linha de comando: >> A = [1 2 3; 4 5 6; 7 8 9] resulta em: A = 1 2 3 4 5 6 7 8 9 Pode-se, tambm, entrar matrizes de arquivos de extenso .m. Se um arquivo com o nome de matriz.m contm as trs linhas de texto: A = [ 1 2 3 4 5 6 7 8 9 ]; Ento o comando: >> matriz atribui matriz A os dados correspondentes. 1.6Elementos da Matriz Elementos de matriz podem ser quaisquer expresses que o MATLAB permite; por exemplo:

>> x = [-1.3 sqrt(3) (1+2+3)*4/5] resulta em x = -1.30001.73214.8000 Elementosindividuaisdematrizespodemserreferenciadosindividualmentecom ndices dentro de parnteses, ( ). No exemplo anterior: >> x(5) = abs(x(1)) Captulo 1 Introduo 5 x = -1.30001.73214.8000 01.3000 Percebaqueotamanhodexaumentaautomaticamenteparaacomodaronovo elemento, e os elementos indefinidos so assumidos como sendo zero. Podem-se construir grandesmatrizesutilizandomatrizesmenorescomoelementos.Porexemplo,para acrescentar uma nova linha matriz A: >> r = [10 11 12]; >> A = [A; r] Isto resulta em A = 1 2 3 4 5 6 7 8 9 101112 Matrizes menores podem ser extradas de matrizes grandes utilizando os dois pontos (:). Por exemplo >> A = A(1:3,:); fornece a seguinte matriz A = 1 2 3 4 5 6 7 8 9 e faz com que retorne as trs primeiras linhas e todas as colunas da matriz original A para a matriz A. 1.7Informaes da rea de Trabalho Osexemplospreviamenteexecutadoscriaramvariveisquesoarmazenadasdo espao de trabalho do MATLAB. Para listar as variveis armazenadas use o comando:

>> who Para verificar uma listagem mais completas sobre as variveis armazenadas deve-se utilizarocomandowhos,oqualtrazinformaessobreonome,adimensodamatriz correspondente, o nmero de elementos dessa matriz, entre outros. Captulo 1 Introduo 6 1.8Finalizando e Salvando o Espao de Trabalho Para finalizar o MATLAB digite quit ou exit. Terminando uma sesso do MATLAB, vocapagaasvariveisdoespaodetrabalho.Antesdeterminar,pode-sesalvaras variveis com o comando save. Este comando salva todas as variveis em um arquivo em disco chamado matlab.mat. Na prxima vez que MATLAB chamado, pode-se executar o comando load ou load matlab.mat para restaurar o espao de trabalho com as variveis de matlab.mat.Podemserutilizadososcomandossaveeloademarquivoscomoutrosnomes,ou salvar somente algumas variveis. O comando save temp salva as variveis em um arquivo de nome temp.mat. O comando >> save temp X Y Z salva as variveis X, Y e Z no arquivo temp.mat. 1.9Nmeros e Expresses Aritmticas OMATLAButilizaanotaodecimalconvencional,compontodecimalesinal negativo opcionais, para nmeros. Pode-se incluir um fator de escala em potncia de dez ouumaindicaodenmerocomplexocomosufixo.Algunsexemplosdenmeros vlidos so: 3-990.00019.63972381.60210E-206.02252e23-3.141159i 3e5i Podem ser construdas expresses com os operadores de aritmtica usuais e as regras de precedncia: OperadorFuno +Adio -Subtrao *Multiplicao /Diviso por nmero direita \Diviso por nmero esquerda ^Potncia OMATLABpossuitambmfunesmatemticaselementaresencontradasem calculadorascientficastaiscomo abs, sqrt, log, sin e etc. Funes podem ser facilmente criadasatravsdosarquivos-M.Algumasfunessimplesmenteretornamvalores especiais comumente utilizados, como a funo pi que retorna o valor da constante. Captulo 1 Introduo 7 1.10Nmeros Complexos e Matrizes O MATLAB permite nmeros complexos, indicados pela funo especial i ou j, em todas as operaes ou funes. Assim, temos: >> z = 3 + 4*i Uma outra forma :

>> w = r*exp(i*theta) Quandoforementradosnmeroscomplexoscomoelementosdematrizcomos colchetes, deve ser evitado qualquer espao em branco. Uma expresso como 1 + 5*i, com espaos em volta do sinal +, representa dois nmeros. Isto tambm vlido para nmeros reais; um espao antes do exponencial, como em 1.23 e-4, causa um erro.O nome de uma funo do MATLAB tambm pode ser usado como o nome de uma varivel. Quando utilizado como uma varivel, a funo original se torna indisponvel no espao de trabalho at que a varivel seja apagada. 1.11Formatos de Sada Ocomandoformatpodeserutilizadoparacontrolaroformatonumricomostrado apsaexecuodeumalinhadecomando.Setodososelementosdeumamatrizforem inteirosexatos,amatrizmostradaemumformatosempontosdecimais.Seaomenos um elemento de uma matriz no um inteiro exato, vrios formatos de sada so possveis. Oformatopadro,chamadodeshortformat,mostraaproximadamentecincodgitos decimaissignificativos.Osoutrosformatosmostrammaisdgitossignificativosou utilizam notao decimal. Como um exemplo, suponha:

>> x = [4/3 1.2345e-6] Os formatos e as sadas resultantes para este vetor so: ComandoResultado numrico format short1.3333 0.0000 format short e1.3333e+00 1.2345e-06 format long1.33333333333333 0.00000123456000 format long e1.333333333333333e+00 1.234500000000000e-06 format bank1.33 0.00 O comando help format mostra mais alguns tipos possveis de formato. Captulo 2 Operando Matrizes e Vetores 8 Captulo 2Operando Matrizes e Vetores 2.1Gerando Vetores Osdoispontos(:)representamumcaractereimportantenoMATLAB.Alinhade comando:

>> x = 1:5 gera um vetor linha contendo os nmeros de 1 a 5 com incremento de uma unidade. Desta forma produzido o vetor x = 1 2 3 4 5 Pode-se utilizar incrementos diferentes da unidade como em: >> y = 0: 2: 8 que resulta em um vetor linha y = 0 2 4 6 8 comeando em zero e terminando em oito com incremento de dois. Para se obter um vetor coluna basta transpor o vetor linha gerado. Outrasfunesparageraodevetorincluemologspace,oqualgeravetores espaados logaritmicamente, e o linspace, que permite que voc especifique o nmero de pontos ao invs do incremento. Exemplo: >> z = linspace(0,2,5) produz: z = 00.50001.00001.50002.0000 Captulo 2 Operando Matrizes e Vetores 9 2.2Matrizes Especiais O MATLAB apresenta algumas funes teis para gerar matrizes: FunoDescrio zerosProduz uma matriz com elementos nulos. onesProduz uma matriz com elementos unitrios. randElementos randmicos uniformemente distribudos. randnElementos randmicos normalmente distribudos. eyeMatriz identidade. linspaceVetor espaado linearmente. logspaceVetores espaados logaritmicamente. 2.3Operando com Matrizes A linha de comando B = A indica que a varivel B recebe a transposta da matriz A. Paramatrizescomplexas,teremosquealinhadecomandoacimaforneceatransposta complexa conjugada. Assim, para obtermos somente a transposta de uma matriz complexa devemos fazer B = conj (A) ou transp(A). A adio e subtrao de matrizes pode ser feita entre matrizes de mesma dimenso ou entre um escalar e uma matriz. Na primeira, cada elemento de uma matriz somado ou subtrado do correspondente na outra matriz. Na segunda forma, o escalar adicionado ou subtrado de todos os elementos do outro operando. Aoperaodemultiplicaodefinidaquandoonmerodecolunasdaprimeira matrizforigualaonmerodelinhasdasegundamatriz.Dependendodasdimenses envolvidas,oresultadopodeserumamatriz,umvetorou,atmesmo,umescalar.O produtodeumescalarporumamatrizresultaemtodososelementosdamatriz multiplicados pelo escalar. SeAumamatrizquadradano-singular,entoA\BeB/Acorresponde formalmenteamultiplicaoesquerdaedireitadeBpelainversadeA;ouseja, inv(A)*B e B*inv(A), mas o resultado obtido diretamente sem o clculo da inversa. Em geral X = A\B uma soluo para A*X = B X = B/A uma soluo para X*A = B A diviso esquerda, A\B, definida sempre que B tiver o mesmo nmero de linhas que A. Dependendo se A for quadrada ou no, deve-se usar algum mtodo de fatorao. A diviso normal de um escalar pelo outro feita fazendo-se x/y. AexpressoA^pelevaAap-simapotnciaedefinidaseAumamatriz quadrada e p um escalar. OMATLABtrataexpressescomoexp(A)esqrt(A)comooperaesdevetores, definidas em cada elemento de A. As funes elementares de matrizes incluem Captulo 2 Operando Matrizes e Vetores 10 FunoDescrio poly polinmio caracterstico det determinante trace trao da matriz exp exponencial de cada elemento da matriz log logaritmo de cada elemento da matriz sqrt raiz quadrada de cada elemento da matriz poly polinmio caracterstico rot90Rotaciona a matriz de 90 graus. fliplrInverte a matriz da esquerda para a direita. flipudInverte a matriz de cima para baixo. diagExtrai ou cria diagonal. trilTringulo inferior. triuTringulo superior. reshapeAltera o formato. Transposio. 2.4Operaes Relacionais Seis operadores relacionais esto disponveis para a comparao de duas matrizes de dimenses idnticas. OperadorDescrio =Maior ou igual a ==Igual ~=Diferente OMATLABcomparaoselementoscorrespondentesdecadamatriz.;oresultado uma matriz de elementos unitrios e elementos nulos, com 1 representando verdadeiro e 0 representando falso. 2.5Operaes Lgicas Osoperadores&,|,~correspondemaosoperadoreslgicose,oueno. Exemplos:C = A & B uma matriz cujo os elementos so 1s onde ambas as matrizes A e B so elementos no-nulos, e 0s onde uma das matrizes ou ambas so elementos nulos.C=A|Bumamatrizcujooselementosso1sondetantoAouBpossuem elementos no-nulos, e 0s onde ambas possuem elementos nulos. B = ~A uma matriz cujo os elementos so 1s onde a matriz A um elemento nulo, e 0s quando A um elemento no-nulo. Captulo 2 Operando Matrizes e Vetores 11 TodasasoperaesacimasovlidasapenasparaquandoAeBpossuemmesma dimenso, ou quando uma das duas matrizes um escalar. As funes lgicas e relacionais do MATLAB so:

FunoDescrio anycondies lgicas.allcondies lgicas. findencontra os ndices da matriz de valores lgicos. existverifica a existncia de variveis. isnandetecta se algum elemento da matriz NaN. isinfdetecta se algum elemento da matriz Inf. finiteverifica os valores finitos da matriz. isemptydetecta matrizes vazias.isstrdetecta variveis string. isglobaldetecta variveis globais. issparsedetecta matrizes esparsas. Captulo 3 Funes mais Usadas em Engenharia 12 Captulo 3Funes mais Usadas em Engenharia 3.1Anlise de Dados Um grupo de funes utilizadas para anlise de dados mostrado abaixo: FunoDescrio max valor mximo min valor mnimo mean valor mdio std desvio mdio sort ordenar sum soma dos elementos prod produto dos elementos cumsum soma acumulativa dos elementos cumprod produto acumulativo dos elementos hist histograma Quandoosargumentosforemvetores,noirimportarseovetororientadopor linhaouporcoluna.Seoargumentoforumamatriz,asfunesoperaroorientadaspor coluna.Destaforma,sevocaplicarafunomaxaumamatriz,oresultadoumvetor linha contendo o valor mximo de cada coluna. 3.2Fatorao LU Omtododefatoraomaisbsicoexpressaumamatrizqualquercomooproduto deduasmatrizesessencialmentetriangulares,sendoumadelasapermutaodeuma matriztriangularinferioreaoutraumamatriztriangularsuperior.Estafatorao frequentemente chamada de LU. A linha de comando descrita como: >> [L,U] = lu(A) onde L a permutao da matriz triangular inferior e U a matriz triangular superior. Captulo 3 Funes mais Usadas em Engenharia 13 3.3Decomposio em Autovalores e Autovetores Se A uma matriz n-por-n, os n nmeros que satisfazem Ax = x so os autovalores de A. Eles so encontrados utilizando: >> eig(A) queretornaosautovaloresemumavetorcoluna.SeArealesimtrica,osautovalores soreais.MasseAnosimtrica,osautovaloresfrequentementesonmeros complexos.Paraseobterosautovaloreseosautovetoresdeumavezbastautilizara seguinte linha de comando: >> [X,D] = eig(A) ondeoselementosdadiagonaldeDsoosautovaloreseascolunasdeXsoos autovetores correspondentes tais que AX = XD. 3.4Representao Polinomial O MATLAB representa polinmios como vetores linha contendo os coeficientes na ordem decrescente de potncia. Por exemplo, a equao caracterstica da matriz: A =[ 1 2 3 4 5 6 7 8 0 ] computada atravs de: >> p = poly(A) p = 1 -6 -72 -27 Esta a representao do MATLAB para o polinmio S3 6S2 72S - 27. As razes desta equao so dadas por: >> r = roots(p) r = 12.1229 -5.7345 -0.3884 AsrazesdaequaocaractersticasoosautovaloresdamatrizA.Pode-seobtero polinmio original atravs das razes encontradas acima >> p2 = poly(r) p2 = 1 -6 -72 -27 Captulo 3 Funes mais Usadas em Engenharia 14 Considere os polinmios a(S) = S2 + 2S + 3 eb(S) = 4S2 + 5S + 6. O produto dos polinmios feito atravs da convoluo dos coeficientes: >> a = [1 2 3]; b = [4 5 6]; >> c = conv(a,b)

c = 4 13 28 27 18 Uma lista completa das funes polinomiais inclui: Funo Descrio poly polinmio caracterstico roots razes do polinmio polyval avalia o polinmio com o argumento substituindo a varivel polyvalm avalia o polinmio com o argumento sendo uma matriz conv multiplicao deconv diviso residue expanso em fraes parciais polyder derivada do polinmio polyfit ajuste do polinmio 3.5Derivada O MATLAB calcula a derivada de expresses matemticas. O comando diff(S,v) calcula a derivada da expresso S em relao varivel v. Exemplo: >> diff('s*v','v') ans =

s 3.6Integral O MATLAB faz integrao de expresses matemticas. O comando int(S,v,a,b) calcula a integral de S em relao varivel v definida no intervalo de a a b. Exemplo: >> int('s*v','v',0,1) ans =

1/2*s Captulo 3 Funes mais Usadas em Engenharia 15 3.7Laplace O comando L = laplace(F) calcula a transformada de Laplace da expresso F com relao a varivel independente t. O retorno padro uma expresso em funo de s. Por definioL(s) = int(F(t)*exp(-s*t),0,inf),ondeaintegraoocorrecom relao a t. Exemplo: >> syms s >> F = sin(s); >> L = laplace(F)

L =

1/(t^2+1) O comando ilaplace(L) calcula a transformada inversa de Laplace: >> F = ilaplace(L)

F =

sin(x)

3.8Diagrama de Bode Um diagrama de Bode constituido de dois grficos: um o grfico do modulo em dBdeumafunodetransferenciasenoidaleooutroogrficodoangulodefase. Ambos so traados em relao frequencia em escala logartmica. Os diagramas de Bode sobastanteutilizadosemanlisederespostaemfrequncia,ondesedesejaestudara respostaemregimepermanentedeumsistemasujeitoaumaentradasenoidal.Bastante utilizado no estudo de sistemas de controle e cicruitos eltricos. O commando bode calcula mdulos e ngulos de fase da resposta em frequncia de sistemas contnuos, lineares e invariants no tempo. Quando o commando bode digitado sem argumentos do lado esquerdo, um diagrama gerado na tela do computador. Seja um sistema com a seguinte funo de transferncia: 25 425) (2+ +=s ss G Seosistemaestiverdefinidodeforma( ) 25 = s num e( ) 25 422+ + = s s den ,os comandos: >> num = [0 0 25]; >> den = [1 4 25]; >> bode(num,den) >> grid >> title('Diagrama de Bode de G(s) = 25/(s^2 + 4s + 25)') criam o diagrama de Bode da funo especificada: Captulo 3 Funes mais Usadas em Engenharia 16 Se for desejvel traar o diagrama de Bode para o intervalo entre 0,01 e 1000 rad/s, deve-se utilizar os seguintes comandos: >> num = [0 0 25]; >> den = [1 4 25]; >> w = logspace(-2,3,100); >> bode(num,den,w) >> grid >> title('Diagrama de Bode de G(s) = 25/(s^2 + 4s + 25)') Ressultando em: 3.9Diagrama Fasorial NoMATLABtambmpossvelconstruirdiagramasfasoriais,frequentemente utilizados em engenharia. O comando: >> [Vr,Vi] = pol2cart(0,127); >> compass(Vr,Vi) >> hold on >> [Vr,Vi] = pol2cart(2*pi/3,127); >> compass(Vr,Vi) >> [Vr,Vi] = pol2cart(-2*pi/3,127); Captulo 3 Funes mais Usadas em Engenharia 17 >> compass(Vr,Vi) >> hold off >> title('Tensoes') Aslinhasdecomandoanterioresplotamodiagramafasorialconsiderandotenses Va, Vb e Vc, como mostrado: Captulo 4 Grficos 18 Captulo 4Grficos 4.1Funes Elementares de Plotagem A lista a seguir relaciona as funes que produzemgrficossimples.Estasfunes sediferemapenasnamaneiracomoapresentamasescalasdoseixosdosgrficos.Cada umaaceitaaentradanaformadevetoresoumatrizese,automaticamente,definemas escalas dos eixos de modo que os dados de entrada fiquem bem acomodados. FunoDescrio plotCria um grfico de vetores ou de colunas de matrizes. loglogCria um grfico utilizando escalas logartmicas para ambos os eixos. semilogx Cria um grfico utilizando escala logartmica no eixo x e escala linear no eixo y. semilogy Cria um grfico utilizando escala logartmica no eixo y e escala linear no eixo x. Pode-se adicionar ttulo, nome aos eixos, linhas de grade e textos a qualquer grfico utilizando: FunoDescrio titleAdiciona um ttulo ao grfico. xlabelDefine um nome para a varivel do eixo x. ylabelDefine um nome para a varivel do eixo y. textAdiciona um texto em lugar especfico. gtextAdiciona um texto ao grfico utilizando o mouse. gridAtiva as linhas de grade. 4.2Criando um Grfico Seyumvetor,ocomandoplot(y)produzumgrficolineardoselementosdey versus o ndice dos elementos de y. Se so especificados dois vetores como argumentos, o comando plot(x,y) produz um grfico de y versus x. Pode-se,tambm,especificarvriosgruposdedadosedefiniroestilodelinhaea cor que sero usados em cada grupo em uma nica chamada ao comando plot: >> f = 60; >> t = 0:pi/100:4*pi; >> w = 2*pi*f; >> va = sin(w*t); >> vb = sin(w*t + 2*pi/3); >> vc = sin(w*t 2*pi/3); >> plot(t,va,r-,t,vb,g,t,vc,b-) Captulo 4 Grficos 19 Os comandos acima produzem um grfico de trs variveis va, vb e vc em relao varivelt.Oprimeirogrupodedados,va,plotadocomumalinhaslidavermelha, enquantoosegundogrupo,vb,plotadocomumalinhaslidaverdeeogrupovccom uma linha slida azul. Podem ainda ser adicionados ao grfico um ttulo e nome aos eixos: >> title(Tenses ABC) >> xlabel(t) >> ylabel(Tenso) 4.3Subgrficos Vriosgrficospodemsermostradosemumamesmajanelaouimpressosemuma mesma folha de papel com a funo subplot. Sintaxe do comando subplot:

subplot(m,n,p):divideajanelaemumamatrizmporndesubregiese seleciona a p-sima subregio para o grfico que est sendo plotado no momento. Osgrficossonumeradoscomeandopelaprimeiralinhanapartesuperiorda janela, da esquerda para a direita, em seguida, a segunda linha tambm da esquerda para a direita e assim por diante. Por exemplo: >> f = 60; >> t = 0:pi/100:4*pi; >> w = 2*pi*f; >> va = sin(w*t); >> vb = sin(w*t + 2*pi/3); >> vc = sin(w*t 2*pi/3); >> subplot(1,3,1) >> plot(t,va); >> subplot(1,3,2) >> plot(t,vb); >> subplot(1,3,3) >> plot(t,vc); 4.4Figura Afunofigurepermitequenovasjanelascomfiguras,sejamabertas.Formas comuns de utilizao da funo figure: figure: faz com que seja aberta uma nova janela grfica. figure(n): fazcomquean-simafigurasetorneafiguraatual;oresultado dos comandos grficos subseqentes so mostrados nesta janela. Se a figura n no existe,oMATLABcriaumausandooprximonmerodisponvel(no necessariamente n). Captulo 4 Grficos 20 4.5Funo Axis A funo axis possui vrias opes que permitem que sejam personalizados escala e orientao.O MATLAB encontra, por default, os valores de mximo e mnimo da funo aserplotadaeescolheumareadeplotagemapropriada.Porm,pode-seredefiniros limites pelo ajuste dos eixos utilizando a funo axis: >> axis([xmin xmax ymin ymax]) Algumas formas de utilizao da funo axis: axis(auto):retornaaescaladoeixoparaseuvalorpadro,omodo automtico.v = axis: salvaaescaladoseixosdogrficoqueestativonovetorv.Para quegrficossubseqentespossuamosmesmoslimites,bastaentrarcomo comando axis(v). axis(axis) congela a escala nos valores que esto sendo usados. axis(ij):definenoMATLABseumododeeixomatriz.Aorigemdo sistema de coordenadas se encontra no canto superior esquerdo. O eixo i vertical e numerado de cima para baixo e o eixo j horizontal e numerado da esquerda para a direita. axis(xy): define MATLAB com os eixos cartesianos. A origem do sistema decoordenadasseencontranocantoinferioresquerdo.Oeixoxhorizontale numeradodaesquerdaparaadireitaeoeixoyverticalenumeradodebaixo para cima. axis(on):eaxis(off)fazemcomqueonomedoeixoeos marcadores apaream ou no, respectivamente, junto com o grfico. 4.6Adicionando Linhas a um Grfico Existente Podemseradicionadaslinhasaumgrfico j existente utilizando o comando hold. Quandoholdativado,oMATLABnoremoveaslinhasjexistentes;aoinvsdisto, adiciona novas linhas aos eixos existentes. Pode ser que os eixos sejam redefinidos se os novosdadosseencontraremforadaescaladoantigoeixo.Porexemplo,alinhade comando abaixo traa as trs curvas em uma mesma figura: >> hold on >> plot(va,) >> plot(vb,-.) >> plot(vc,--) >> hold off Captulo 4 Grficos 21 4.7Estilos de Linhas e Marcadores de Cor Comofoicitado,podeserpassadaumastringdecaracterescomoumargumento paraafunoplotdemodoaespecificarvriosestilosdelinhas,smbolosdetraadoe cores. Na linha de comando: >> plot(x,y,S) Sumastringenvolvidaporaspaseconstrudacomoscaracteresmostradosnatabela abaixo: SmboloCorSmbolo Estilo de Linhayamarelo.ponto mmagentaocrculo ccianoxx rvermelho +sinal positivo gverde*asterisco bazul-slida wbranco:pontilhada kpreto-.trao e ponto --tracejada Por exemplo, o comando: >> plot(X,Y,b*) plota um asterisco azul em cada ponto de dado. Se no for especificada uma cor, a funo plot automaticamente utiliza a cor azul e linha slida. 4.8Dados Complexos Quandoosargumentosaseremplotadossocomplexos,aparteimaginria ignoradaexcetoquandoocomandoplotdadosimplesmentecomumargumento complexo.Paraestecasoespecial,ocomandoumatalhoparaumgrficodapartereal em funo da parte imaginria.Portanto: >> Z = 3 + 4i; >> plot(Z) onde Z um vetor ou uma matriz complexa, equivalente a >> plot(real(Z),imag(Z))

Captulo 4 Grficos 22 4.9Funes especiais para Grficos 2D OMATLABincluiumavariedadedefunesespeciaisparagrficos,necessrias em muitas aplicaes. A lista a seguir descreve algumas delas. FunoDescrio barcria um grfico do tipo barra. errorbarcria um grfico com barras de erro. feathercria um grfico de ngulos e mdulos de nmeros complexos onde a representao dos pontos feita por setas com comeo em pontos igualmente espaados ao longo do eixo horizontal. fplotavalia uma funo e plota os resultados. histcria um histograma. polarcria um grfico em coordenadas polares dos ngulos em funo dos raios. quivercria um grfico do gradiente ou de outro campo do vetor. rosecria um histograma de ngulo. stairscria um grfico similar a um grfico de barra, mas sem as linhas internas. filldesenha um polgono e o preenche com cores slidas ou interpoladas. 4.10Exportando Grficos OsgrficoscriadosnoMATLABpodemserexportadoscomofiguras,comvrias extensesdearquivodeimagem,taiscomo,.bmp,.jpeg,.epsentreoutras.Paratanto, escolha,nafigura,omenuEdit,depoisemExporteselecioneonomeeaextensoeo diretrio no qual deseja salvar a figura e clique em salvar. Captulo 4 Grficos 23 4.11Grficos 3D O MATLAB possui uma variedade de funes para exibir dados em 3-D. Algumas plotamlinhasemtrsdimenses,enquantooutrasdesenhamsuperfciesefiguras utilizandopseudocorespararepresentarumaquartadimenso.Alistaaseguirmostrafunes comumente utilizadas em grficos 3-D: FunoDescrio plot3plota linhas e pontos em 3-D. contour, contour3cria grficos de contorno. pcolordesenhaumamatrizretangulardeclulascujascoresso determinadas pelos elementos da matriz. imagemostra uma matriz como uma imagem atravs do mapeamento dos elementos da matriz pelo mapa de cores ativo. mesh, meshc, meshzcriagrficos3-Demperspectivadoselementosdamatriz, mostrados como alturas acima de um plano delimitado. surf, surfc, surflcriagrficos3-Demperspectivadoselementosdamatriz, mostrados como alturas acima de um plano delimitado. O grfico formadopelageraodeumasuperfciecoloridautilizandoos pontos como vrtices de um quadriltero. fill3criaumpolgono3-Daopreenchecomcoresslidasou interpoladas. zlabeldefine um nome para a varivel do eixo z. clabeldefine identificaes para os contornos em grficos de contorno. viewajusta o ponto de viso atual onde os parmetros de entrada podem ser o azimute (rotao horizontal) e a elevao vertical, ambos em grau, ou as coordenadas cartesianas. 4.11.1Grficos de Linhas O anlogo tridimensional da funo plot a funo plot3. Se x, y e z so vetores de mesmo tamanho, o comando: >> plot3(x,y,z) geraumalinhanoespaotridimensionalquepassapelospontosdecoordenadasdadas peloselementosdosvetoresx,yez,edepoisproduzumaprojeobidimensionaldesta linha na tela.. Por exemplo: >> t = 0:pi/50:10*pi; >> plot3(sin(t),cos(t),t); produz um helicide. Se X, Y e Z so trs matrizes de mesma dimenso, comando: >> plot3(X,Y,Z)Captulo 4 Grficos 24 plota as linhas obtidas pelas colunas de X, Y e Z. Para especificar vrios tipos de linhas, smbolosgrficosecores,usa-sealinhadecomandoplot3(X,Y,Z,s),ondesumastring de 1, 2 ou 3 caracteres formada pelos caracteres listados com a funo plot. >> plot3(x1,y1,z1,s1,x2,y2,z2,s2,x3,y3,z3.s3,...) combina os grficos definidos por cada grupo de elementos (x, y, z, s), onde x, y e z so vetores ou matrizes e s so as strings. 4.11.2Meshgrid O MATLAB define uma superfcie mesh pelas coordenadas z dos pontos, situando-a acimadeumarearetangularnoplanox-y.Destaforma,umgrficoformadopela ligaodospontosadjacentescomlinhasretas.Superfciesmeshsoteispara visualizao de matrizes que so muito grandes para serem mostradas na forma numrica, e funes grficas de duas variveis.O primeiro passo para que seja mostrada uma funo deduasvariveis,z=f(x,y),gerarasmatrizesXeYconsistindodelinhasecolunas repetidas,respectivamente,sobreodomniodafuno.Depoisutiliza-seestasmatrizes para avaliar e plotar a funo. Afunomeshgridtransformaodomnioespecificadopordoisvetores,xey,em matrizes, X e Y. Utiliza-se estas matrizes para avaliar funes de duas variveis. As linhas de X so cpias do vetor x e as colunas de Y so cpias do vetor y.Para ilustrar o uso da funo meshgrid, considere a funo sin(R)/r, tambm chamada funo sinc. Para avaliar estafunoentre-8e8,tantoemxcomoemy,passa-secomoargumentodoisvetores para a funo meshgrid criando as matrizes necessrias: >> x = -8:.5:8; >> y = x; >> [X,Y] = meshgrid(x,y); >> R = sqrt(X.^2 + Y.^2) + eps; >> Z = sin(R)./R; >> mesh(Z) A matriz R contm a distncia dos pontos ao centro da matriz, o qual a origem. A utilizao da constante eps evita a diviso por zero, causando erro numrico. 4.11.3Grficos de Contorno OMATLABpossuifunesparagerargrficosdecontornotantopara2-Dcomo para3-D.Asfunescontourecontour3geramgrficoscompostosdelinhasobtidasda matrizentradacomoargumento.Existeaopodeseespecificaronmerodelinhasde contorno,aescaladoseixoseovalordosdadoscomosquaissedesenharaslinhasde contorno. Por exemplo, a linha de comando abaixo cria um grfico de contorno contendo 20 linhas de contorno e usando o arquivo-M peaks para gerar os dados de entrada. >> contour(peaks,20); Captulo 4 Grficos 25 Oscrculosdecontornoagemdamesmaformaqueafunoplotcomrelaoa estilosdelinha,marcadoresecores.Paracriarumgrficodecontorno3-Dcomos mesmo dados, utiliza-se a funo contour3: >> contour3(peaks,20) Captulo 5 Decises e Loops 26 Captulo 5Decises e Loops 5.1Introduo EmMATLABexistemalgumasestruturasquecontrolamofluxodedados.Estas permitem ao programador controlar e alterar a seqncia de execuo do programa. Asestruturasdecontroledefluxosofundamentaisparaqualquerlinguagemde programao. Sem elas s haveria uma maneira do programa ser executado: de cima para baixo,comandoporcomando.Nohaveriacondiesparaquecomandosfossem executados, repeties de comandos ou blocos de comando, ou saltos de linhas de cdigo. AlinguagemMATLABpossuidiversoscomandosdecontroledefluxoquesero descritos a seguir. 5.2Comandos Condicionais Soestruturasutilizadasparaselecionarcomandosoublocosdecomandosque devem ser executados ou no, dependendo de determinadas condies. 5.2.1Estrutura if A estrutura bsica if permite que o programa execute uma linha de comando ou um bloco de comandos , se a condio dada por uma expresso for verdadeira. Representa uma tomada de deciso do tipo SE isto ENTO aquilo. Sintaxe: if () ; end Acondiodocomandoifumaexpressoqueseravaliada.Seaexpressofor falsa os comandos no sero executados, caso contrrio os comandos sero executados. O bloco comandos pode ser um bloco de cdigos ou apenas um comando simples. Captulo 5 Decises e Loops 27 5.2.2Estrutura do if Estendido Sintaxe: if () ; else ; end Ondequalquerdosblocospodeserumnicocomando,umbloco de comandos ou nada (no caso de comandos vazios). Podemos pensar no comando else como sendo um complemento do comando if. A expresso da condio ser avaliada. Se ela for verdadeira ser executado. Seforfalsaserexecutado.importantenuncaesquecerque,quando usamosaestruturaif-else-end,estamosgarantindoqueumadasduasdeclaraesser executada. Nunca sero executadas as duas ou nenhuma delas. Pode tambm ser usada a estrutura if-elseif-end. Sintaxe: if () ; elseif () ; elseif () ; end Nestecasosserexecutadoseforverdadeira.Se porexemploforverdadeira,entoserexecutado.Os comandos subseqentes no sero executados mesmo que as respectivas condies sejam verdadeiras. 5.2.3Estrutura de ifs Aninhados Ocomandoaserexecutadoquandoacondio deumasentenadaestruturaiffor satisfeita pode ser um outro if. Sintaxe: if () if () ; end else ; end Seaforverdadeiraoprogramaverificasea verdadeira. Caso seja executado . Caso seja falsa executado .Seforverdadeira,masforfalsa,no executado nenhum comando. Para avaliar duas ou mais condies podem ser usadas as seguintes sintaxes: Captulo 5 Decises e Loops 28 Sintaxe: if ( & ) else ; end Seeforemverdadeirasserexecutado. Caso uma das condies ou ambas forem falsas ser executado . Sintaxe: if ( | ) else ; end Seououambasforemverdadeirasserexecutado . Caso as condies forem falsas ser executado . Observao:Aindentaononecessriaparaaexecuodoprograma,mas ajudaaverificarorelacionamentoentreacondiodoifeassentenasquedependem dela. 5.2.4Swicth : Case Ocomandoswicth(boto)permiteselecionar,entrevriasescolhasnumafaixade valoresfixados,umadeterminadaexpresso.Aseleodeterminadapelovalorda expresso que voc especifica. So definidas as possveis posies swicth para um ou mais valores case, um deles selecionado se o valor da expresso swicth a mesma que o valor do case. necessrio que exista um valor para cada possvel escolha do swicth. Se o valor daexpressoswicthnoencaixarcomnenhumdosvalorescase,entooswicth automaticamente seleciona o caso otherwise (default). Sintaxe: swicth case ; case ; Otherwise ; end Paramelhorentendimento,verifiquemosumexemplo(paratransformarpolegadas, ps ou metros em centmetros). x = 3.5; unidade = 'm'; switchunidade% Converte x para centmetros case {' inch',' in'} y = x * 2.54; case {'feet', 'ft' } Captulo 5 Decises e Loops 29 y = x * 2.54 * 12; case {'metro','m'} y = x/100; otherwise disp('acabou') end disp( 'y = '); disp(y) Oresultadosery=0.0350,querepresentaaconversodexmetrosparay centmetros. 5.3Comandos Repetitivos ou Laos Estas estruturas nos permitem repetir um grupo de comandos (sentenas), de acordo com condies. Existem vrias estruturas para repeties. As mais utilizadas so o for que uma das estruturas para se trabalhar com loops, e o while. So comandos que permitem repeties controladas. 5.3.1Estrutura for O MATLAB possui sua prpria verso dos loops for encontrados em linguagens de programao.Istopermitequeumgrupodelinhasdecomandosejarepetidoporum nmero fixo e predeterminado de vezes. Sintaxe: for incio:incremento:fim end Por exemplo:

for i = 1:n x(i) = 0; end atribui0aosnprimeiroselementosdex.Senmenordoque1,aconstruoainda vlida,masoMATLABnoexecutaalinhadecomandointerna.Sexnoexisteou possui menos de n elementos, ento o espao adicional alocado automaticamente. Umaimportanteobservaoquesedevesemprefinalizarumloopforcomum end. Se for digitado for i = 1:n x(i) = 0 Captulo 5 Decises e Loops 30 osistemaesperaquesejamentradasorestantedaslinhasdecomandonocorpodoloop. Nada acontece at que seja digitado end. Pode-se utilizar mais de um loop dentro de um loop, mas no se pode esquecer que cadafordeveterseuprprioend.Pode-setambmfazercomqueoloopdecresa,de acordo com a expresso descrita. Por exemplo: A = [1 2 3;4 5 6]; t = [1 2]; [aux,n] = size(A); for j = n-1:-1:1 A(:, j) = t.*A(:, j+1); end Resultar em: A = 3 3 3 2412 6 5.3.2Comandos que Afetam a operao dos Loops 5.3.2.1Break Ocomandobreakpodeserusadonocorpodequalquerestruturadelaodo MATLAB. Causa a sada imediata do lao e o controle passa para o prximo comando do programa.Casosejausadoforadetodososlaos,ocomandobreakinterrompe imediatamente a execuo do programa. Sintaxe: break; 5.3.2.2Continue Executarocomandocontinuedentrodeumlaofazcomqueaprximaiterao comece imediatamente, pulando todas e quaisquer sentenas restantes da iterao corrente. Sintaxe: continue; Captulo 5 Decises e Loops 31 5.3.3A Estrutura while O MATLAB possui sua prpria verso do loop while, o qual permite que uma linha de comando, ou um grupo de linhas de comando, seja repetida um nmero indefinido de vezes, atravs do controle de uma condio lgica.

Sintaxe: while ; end Oscomandos(ouumsimplescomando)seroexecutadosenquantoaexpresso testada na condio for verdadeira. Quando a condio retornar o valor falso o programa continua na linha de cdigo logo aps o loop. A matriz da expresso de condio quase sempre uma expresso relacional 1 por 1,entonmerosno-nuloscorrespondemaumaexpressoverdadeira.Quandoamatriz da expresso no um escalar, pode-se reduzi-la atravs das funes any e all. Exemplo: a = 15; h = 0; while a > 1 a = a/2; h = h + 1; end O resultado ser: a = 0.9375 h = 4 5.3.4Loop while Infinito Sintaxe: while(1) ; end Este loop chama-se loop infinito porque ser executado para sempre, a no ser que elesejainterrompido.Parainterromperumloopcomoeste,usamosocomandobreak.O comandobreakvaiquebraroloopinfinitoeoprogramacontinuarsuaexecuo normalmente. Observe tambm o comando continue. Captulo 5 Decises e Loops 32 Exemplo: clear all clc x = 0; y = 0; v = 0; disp('') disp([blanks(5),'Digite 0 para voltar ao inicio do loop.']) disp([blanks(5),'Digite 1 para ir ate o fim do loop.']) disp([blanks(5),'Digite -1 para sair do loop.']) while(1) x = x + 1; disp([blanks(5),'Execuao ',num2str(x)]) v = input([blanks(5),'Opao: ']); if v == 0 continue elseif v == -1 break end y = y + 1; end disp([blanks(5),'O loop foi iniciado ', num2str(x),' vezes,... mas apenas ',num2str(y),' vezes foi ate o fim.']) Captulo 5 Decises e Loops 33 G11 23L 1-2L 2-3P2 + jQ2P3 + jQ35.4Exerccios 1 Escreva um programa que leia 3 nmeros e os escreva em ordem crescente. 2Faaumprogramaqueleiaumnmerointeiro,verifiquesepositivoounegativoe escreva uma mensagem apropriada ao seu tipo. 3 Escreva um programa para calcular o fatorial de um nmero lido. 4 Escreva um programa que monte a matriz Y, G e B do sistema apresentado na figura abaixo: 5 O clculo de razes de equaes lineares pode ser facilmente alcanado (Ax = B). Mas infelizmente ainda no existe um mtodo direto para solucionar sistemas de equaes no lineares( ) 0ig x = .Porissomtodosnumricosdevemserempregados.Omtodo iterativo mais utilizado o mtodo de Newton, onde a partir de um vetorxqualquer, ele calcula novos valores para o vetorxpara alcanar x* (soluo). Sua forma de recorrncia dada pela expresso abaixo: 1'( )( )kk kkg xx xg x+= onde: kxso os valores de [x] na iterao k. 1 kx +so os valores de [x] a serem calculados. ( )kg x so os valores da funo no ponto [x]. '( )kg xsoosvaloresdaderivadadafunonoponto[x].Tambmchamadade Jacobiana. LinhaRX 1 20,500,60 2 31,201,10 Captulo 5 Decises e Loops 34 seja: 1 1 22 1 2( , )( )( , )g x xg xg x x (=( ; logo a Jacobiana 1 11 22 21 2g gx xg gx x ( ( ( ( ( Oprocessoiteraatque 1max( )k kx x tolerancia+ ,entomonteumprograma para resolver as seguintes equaes. 24 15 3y x xy x = + += + Captulo 6 Arquivos-M: Scripts e Funes 35 Captulo 6Arquivos-M: Scripts e Funes Umdosassuntosmaisimportantes,acriaodearquivos-Mdescritaneste captulo.O MATLAB usualmente acionado por um comando. Quando se entra com umasimpleslinhadecomando,oMATLABaprocessaimediatamenteemostrao resultado.OMATLABtambmpodeexecutarumaseqnciadecomandosqueest armazenada em um arquivo.ArquivosdediscoquepossuemlinhasdecomandoparaoMATLABso chamadosarquivos-Memvirtudedesuaextensoserdotipo.m.Porexemplo,o arquivo bessel.m contm linhas de comando do MATLAB para avaliar funes Bessel.Um arquivo-M consiste de uma seqncia normal de linhas de comando do MATLAB, a qual pode fazer uma chamada a outros arquivos-M. Um arquivo-M pode chamar a si mesmo de modo recursivo. Doistiposdearquivos-Mpodemserusados:scriptsefunes.Scripts,ou arquivos script, realizam longas seqncias de comandos. Funes, ou arquivos funo, permitem adicionar novas funes s funes jexistentes.Amaiorpartedopoderdo MATLABsedeveaofatodesepodercriarnovasfunesqueresolvamproblemas especficos. 6.1Arquivos Scripts Quandoumscriptchamado,oMATLABsimplesmenteexecutaoscomandos encontradosnoarquivo.Aslinhasdecomandodeumarquivoscriptoperam globalmentecomosdadosqueestonoespaodetrabalho.Scriptssoteisna realizaodeanlises,soluodeproblemas,ounoprojetodelongasseqnciasde comando,oquesetornacansativoparaserfeitoiterativamente. Comoumexemplo, suponha um arquivo chamado fibno.m que possui os comandos: f = [1 1]; i = 1; while f(i) + f(i+1) < 1000 f(i+2) = f(i) + f(i+1); i = i + 1; end plot(f) DigitandoalinhadecomandofibnofazcomqueoMATLABexecuteos comandos, calculando os 16 primeiros nmeros da srie de Fibonacci, e crie um grfico. Aps a execuo do arquivo estar completa, as variveis f e i ficam mantidas no espao de trabalho. Captulo 6 Arquivos-M: Scripts e Funes 36 6.2Arquivos Funo Umarquivo-Mquecontmapalavrafunctionnoinciodaprimeiralinhaum arquivofuno.Umafunodiferedeumscriptpelosargumentosquedevemser passadosepelasvariveisquesodefinidasemanipuladas,quesolocaisfunoe no podem ser operadas globalmente no espao de trabalho.O arquivo media.m um exemplo de um arquivo funo que possui as linhas de comando: function y = media(x) % Media dos elementos de um vetor ou uma matriz % Para vetores, media(x) retorna a media dos elementos de x % Para matrizes, media(x) retorna um vetor contendo a media dos elementos % de cada coluna da matriz x [m,n] = size(x); if m == 1 m = n; end y = sum(x)/m; Aexistnciadestearquivodefineumanovafunochamadamedia.Anova funomediausadacomoqualqueroutrafunodoMATLAB.Porexemplo,sez um vetor de inteiros de 1 a 99, >> z = 1:99; o valor mdio deste encontrado atravs do comando >> mean(z) que resulta em ans = 50 As informaes abaixo so para o arquivo media.m, mas o princpio vlido para todos os arquivos funo: A primeira linha declara o nome da funo e os argumentos de entrada e sada. Sem esta linha, o arquivo um arquivo script, e no um arquivo funo. Osmbolo%indicaqueorestantedalinhaumcomentrioedeveser ignorado. As primeiras linhas descrevem o arquivo-M e so mostradas quando voc digita help media. As variveis m, n e y so locais a media e no aparecem no espao de trabalho aps media ter terminado. (Ou, se elas existem, permanecem inalteradas.). Nonecessriodefinirosinteirosde1a99emumavariveldenomex.No exemplo, a funo media foi usada com uma varivel z. O vetor z que contm os inteirosde1a99foipassadooucopiadoparamediaondeelesetornouuma varivel local de nome x. Captulo 6 Arquivos-M: Scripts e Funes 37 Pode-secriarumaajudaonlineparaosarquivos-Mentrandocomumtextode umaoumaislinhasdecomentrios,comeandopelasegundalinhadoarquivo.Por exemplo, o arquivo-M angle.m contm function p = angle(h) %ANGLE Phase angle. ANGLE(H) returns the phase angles, in radians, of amatrix with complex elements. See also ABS, UNWRAP. Quandoseentracomhelpangle,aslinhas2a6doarquivoangle.mso mostradas. Baseado nisto, a primeira linha de comentrios em qualquer arquivo-M deve conter o maior nmero de informaes possveis. 6.3Variveis Globais CadafunodoMATLABdefinidaporumarquivo-Mpossuisuasprprias variveis locais, as quais no tem relao com as de outras funes e com as do espao de trabalho. Entretanto, se vrias funes e tambm o plano de trabalho declararem uma varivelparticularcomoglobal,entotodoselesdividemamesmavarivel.Qualquer atribuio a esta varivel, em qualquer funo, fica disponvel a todas as outras funes que a declaram como global. Para fazer com que uma varivel seja global, basta escrever global X Y Z onde as variveis X, Y e Z iro trabalhar como sendo globais. 6.4Strings de Texto Strings de texto so entradas no MATLAB entre aspas simples ( ). Por exemplo, >> s = Engenharia resulta em s =Engenharia O texto armazenado em um vetor, sendo um caractere por elemento. Neste caso, >> size(s)ans = 1 10 Captulo 6 Arquivos-M: Scripts e Funes 38 indicaquespossuicincoelementos.Oscaracteressoarmazenadoscomseusvalores ASCII, e a funo abs e a funo double mostram estes valores: >> f = abs(s) f = 69 110 103 101 110 10497 114 10597 A funo char faz a transformao inversa: >> char(f) ans = Engenharia Utiliza-secolchetesouafunostrcatparajuntarvariveisdetextoemstrings maiores: >> s = [s, Eltrica ] s = Engenharia Eltrica >> s = strcat(s, Eltrica ) s = Engenharia Eltrica 6.5A Funo Eval Afunoevaltrabalhacomvariveisdotipotextoeimplementaumapoderosa facilidadedemacro.eval(t)fazcomqueotextocontidoemtsejaavaliado. Por exemplo, t = 1/(i+j-1); for i = 1:n for j = 1:n a(i,j) = eval(t); end end cria uma matriz a de dimenso n por n, onde cada elemento avaliado pela funo que est descrita por t. Captulo 7 Arquivos E/S 39 Captulo 7Arquivos E/S AsfunesdeE/S(Entrada/Sada)dearquivodoMATLABquepermitema leituraeaescritaemformatodiferenteaogeradospelomesmosodescritasneste captulo.As funes de E/S de arquivo do MATLAB permitem a leitura de dados coletados emoutroformatodiretamentepeloMATLAB,ouaescritadedadosgeradospelo MATLAB no formato requerido por outro programa ou dispositivo. As funes lem e gravam arquivos de texto formatados e arquivos binrios de dados. 7.1Abrindo e Fechando Arquivos Antes de se ler ou escrever em um arquivo, deve-se abri-lo com o comando fopen, especificando o arquivo a ser aberto e a string de permisso. Por exemplo, >> fid = fopen(arquivo.txt,r) abre para leitura o arquivo arquivo.txt. As strings de permisso disponveis so: r para leitura wpara gravao a para atribuio r+ tanto para leitura como para gravao Outras strings de permisso podem ser obtidas com o comando help fopen. Afunofopenretornaumidentificadordearquivo,queuminteiropositivo atribudoaoarquivopelosistemaoperacional.Esteidentificadordearquivo basicamente um atalho para se referenciar o arquivo. As funes de E/S de arquivo do MATLAButilizamoidentificadorcomoargumentoparaidentificaroarquivoaberto para leitura, escrita ou encerramento.Se o arquivo no pode ser aberto, fopen retorna -1 comoidentificador.aconselhveltestaroidentificadorcadavezqueumarquivo aberto.Umsegundovalorqueretornadopodefornecerinformaoadicionalsobre erros. Por exemplo, se MATLAB no encontra o arquivo arquivo.txt, o comando >> [fid, message] = fopen(arquivo.txt,r) atribui -1 para fid, e message recebe uma string com a forma abaixo No such file or directory. Umavezaberto,oarquivoficadisponvelparaleituraegravao.Quandose termina a leitura ou a gravao, usa-se fclose para fechar o arquivo. Por exemplo, >> status = fclose(fid) Captulo 7 Arquivos E/S 40 fecha o arquivo associado com o identificador fid, e >> status = fclose(all) fechatodososarquivosabertos.Ambasasformasretornam0seestaoperaofor realizada com sucesso, ou -1 se algo de errado acontecer. 7.2Leitura de Arquivos Afunofreadlarquivosdedadosbinrios.Nasuaformamaissimples,elel um arquivo inteiro em uma matriz. Por exemplo,

>> fid = fopen(arquivo.txt,r); >> A = fread(fid); >> status = fclose(fid); l todos os dados do arquivo arquivo como caractere, e os escreve em uma matriz A.Doisargumentosopcionaisafreadfazemocontroledonmerodevaloreslidosea preciso de cada valor. >> fid = fopen(arquivo.txt,r); >> A = fread(fid,100); >> status = fclose(fid); l os 100 primeiros valores de dados em um vetor coluna A. Substituindo o nmero 100 pelasdimensesdeumamatriz[10,10],fazcomquesejamlidososmesmos100 elementos, armazenando-os em uma matriz 10x10. E >> A = fread(fid,Inf) l at o final do arquivo, preenchendo a matriz A como um vetor coluna. Omitir o tamanho do argumento produz o mesmo efeito. Captulo 7 Arquivos E/S 41 7.3Escrevendo Arquivos de Texto Formatados e Strings A funo fprintf converte dados em strings de caractere e os mostra na tela ou em um arquivo. O formato de sada definido por um especificador de converso e por um texto. Os especificadores de converso controlam a sada dos elementos de uma matriz. Ostextossocopiadosdiretamente. Osespecificadoressoprecedidospelocaractere %; converses comuns incluem %e para notao exponencial %f para notao de ponto fixo %g que seleciona automaticamente o menor entre %e e %f Campos opcionais no especificador de formato controlam o tamanho e a preciso do campo. Por exemplo, >> x = [0:0.1:1]; >> y = [x; exp(x)]; >> fid = fopen(exptable.txt,w); >> fprintf(fid,Exponential Function\n\n); >> fprintf(fid,%6.2f%12.8f\n,y); >> status = fclose(fid); criaumarquivodetextocontendoumapequenatabelaparaafunoexponencial.A primeira chamada a fprintf escreve o ttulo, seguido por dois comandos ENTER, o qual definido por \n. A segunda chamada escreve a tabela propriamente dita. As strings de controle de formato definem o formato de cada linha da tabela como: um valor de ponto fixo de seis caracteres com duas casas decimais dois espaosum valor de ponto fixo de doze caracteres com oito casas decimais 7.4Lendo Arquivos de Texto Formatados e Strings AfunodeentradadetextodoMATLAB,fscanf,similarfunofprintf. fscanfpossuicomoargumentooidentificadorparaoarquivodetextoaberto,euma string de controle do formato contendo caracteres e especificadores de converso, nesta ordem.Osespecificadoresparafscanfsoprecedidospelocaractere%;converses comuns incluem Captulo 7 Arquivos E/S 42 %s para converter uma string %d para converter um nmero decimal %f para converter um valor em ponto flutuante O exemplo a seguir faz a leitura do arquivo com os dados exponenciais escrito anteriormente: >> fid = fopen(exptable.txt,r); >> title = fscanf(fid,%c,20) >> [table,count] = fscanf(fid, %f %f ,[2,11]);>> table= table >> status = fclose(fid); A linha do ttulo combina com o especificador %c na primeira chamada fscanf. Asegundachamadaentracomatabeladevalores.countretornaonmerodevalores combinados.