Vous êtes sur la page 1sur 76

AUTOR: EMERSON MORAES FEAGRI/UNICAMP-SP

SUMRIO
1. INTRODUO 2. AJUDA 2.1. O Comando Help 2.1.1. O comando LOOKFOR_ 2.2. O Help Desk 2.3. O sistema Matlab 3. CARREGANDO O MATLAB 4. OPERAES BASICAS E EXPRESSES LOGICAS 5. CONSTANTES EXERCICIOS DE FIXAO 6. VARIVEIS 6.1. Comentrio e pontuaes 6.2. Variveis literais 6.3. Obtendo Informaes da rea de Trabalho EXERCICIOS DE FIXAO 7. FUNES MATEMTICAS 7.1. Comandos de auxlio 7.2. Nmeros Complexos EXERCICIOS DE FIXAO 8. VETORES 9. ENDEREAMENTO DE VETORES 9.1.Operaes entre vetores 10. MATRIZES 10.1. Operaes com Matrizes 10.2. Transposta 10.3. Adio e Subtrao 10.4. Multiplicao 10.5. Diviso 10.6. Elementos das Matrizes 10.7. Submatrizes 10.8. Remoo de colunas e linhas 11. POLINMIOS EXERCICIOS DE FIXAO 12. GRFICOS NO MATLAB 12.1. Grficos Bidimensionais 12.2. Estilos de Linha e Smbolo e o Comando subplot 12.3. Area 12.4. Outros recursos para grficos bidimensionais 12.5. Pizza ou Torta 12.6. Barras Verticais 12.7. Grfico em coordenadas polares 12.8. Formatar Grficos (legendas, eixos, etc.)

12.9. 12.10.

Utilizando Matrizes para armazenar e plotar graficos Mais Comandos e Funes

13. PLOTANDO GRAFICOS 3D E CONTORNO 13.1. Plot3D 13.2. Pizza 3D ou Torta 3D 13.3. Mesh 13.4. Meshgrid e Surf 13.5. Grficos de superfcie EXERCICIOS DE FIXAO 14. IMPORTANDO E EXPORTANDO DADOS DO EXCEL 15. EXPRESSES SIMBOLICAS 16. CALCULO I NO MATLAB 16.1. Limites 16.2. Limites esquerda e direita 16.3. Derivadas 16.4. Derivadas superiores 16.5. Derivadas Trigonomtricas 16.6. Integrais 16.7. Integrais trigonomtricas 16.8. Integrais definidas 16.9. Grficos (ezplot) 16.10. Mximos e Mnimos de Funes EXERCICIOS DE FIXAO 17. PROGRAMAO 17.1. Arquivos .m 17.2. Gerenciamento de arquivos 17.3. Criando funes no MatLab 17.4. Regras para escrever uma function 18. CONTROLE DE FLUXO 18.1. Estruturas Condicionais 18.2. Estrutura if-end 18.3. Estrutura if-else-end 18.4. Estrutura if-elseif-end 19. ESTRUTURA DE REPETIO 19.1. Estrutura for-end 19.2. Estrutura while-end 20. AJUSTE DE CURVAS E INTERPOLAO 20.1. Comando spline 21. ANIMAO GRFICA 21.1. Animao bidimensional 21.2. Animao tridimensional EXERCICIOS DE FIXAO 22. EXTRAS 22.1. Movimentar textos em grficos (gtext) 22.2. Animao com a funo comet 22.3. Barra de progresso Simples EXERCICIOS DE FIXAO

Ateno !!! Este material tem por objetivo servir de apoio aos alunos do programa TOPE ( Todos Podem Ensinar) da Unicamp. No me responsabilizo pelo uso indevido desse material. No me responsabilizo, bem como, probo a comercializao desse material, em parte ou integralmente. Este material est em sua primeira verso e no foi revisado, logo podem existir erros de ortografia e gramtica. Todos os exemplos mostrados nesse material foram testados. Para maiores informaes sobre o software MatLab consulte: www.mathworks.com Emerson Moraes

1. INTRODUO O que o Matlab? O Matlab um sistema para clculo cientfico que proporciona um ambiente de fcil utilizao com uma notao intuitiva, mas poderosa. Permite a realizao de algoritmos numricos sobre matrizes com o mnimo de programao. Alm disso, no ambiente Matlab possvel criao e manipulao de matrizes sem a necessidade de dimensionamento prvio e a manipulao das variveis pode ser realizada de forma interativa. O termo Matlab tem origem na conjugao dos termos MATrix e LABoratory. Este documento pretende ser apenas uma introduo muito breve ao Matlab e permitir a um utilizador no iniciado comear a dominar os aspectos mais bsicos em pouco tempo. A leitura deste documento deve ser realizada ao lado de um PC com o Matlab, para o utilizador poder testar os exemplos e fazer os diferentes exerccios.

2. AJUDA 2.1. O comando HELP Para esclarecer a maior parte das dvidas acerca da utilizao de uma dada funo do Matlab o comando help de grande utilidade. Se pretender, por exemplo, informao sobre a funo sin, basta fazer: >> help sin obtendo-se a seguinte descrio: SIN Sine. SIN(X) is the sine of the elements of X. O Matlab possui todas as funes organizadas em grupos e a prpria estrutura de diretrios onde o Matlab armazenado em disco reflete esse fato. Por exemplo, todas as funes de lgebra linear esto armazenadas no diretrio matfun. Para obter uma lista completa deste tipo de funes basta fazer: >> help matfun Como no fcil decorar os nomes de todas as categorias de funes, existe uma janela de ajuda mais organizada, bastando para tal escrever o comando : >> helpwin 2.2. O comando LOOKFOR Quando se pretende encontrar uma funo para resolver um problema, mas desconhecese se existir alguma adequada no Matlab, o comando lookfor permite pesquisar as primeiras linhas do help de todas as funes da instalao do Matlab. Esta pesquisa adequada para resolver a maior parte das situaes uma vez que a primeira linha do "help" de uma funo contm sempre uma descrio sumria da sua funcionalidade. O seguinte exemplo procura pela palavra inverse. >> lookfor inverse Se pretender que a funo lookfor pesquise todas as linhas do help, pode-se utilizar a opo -all, tal como o seguinte exemplo ilustra. >> lookfor -all inverse 2.3. O Help Desk

A partir da verso 5.0, o Matlab vem acompanhado com uma ajuda em formato "html" e todos os manuais em formato pdf. Essa informao pode ser encontrada no endereo http://www.mathworks.com. 2.4. O sistema Matlab

O sistema Matlab constitudo pelas seguintes partes: A linguagem

Permite a manipulao e criao de matrizes de forma rpida e intuitiva. Diferentes solues para um problema podem ser testadas numa frao do tempo que levaria com outras linguagens (C ou Fortran por ex.). Possui um conjunto muito vasto de funes que permitem resolver problemas complexos de forma eficiente. O ambiente de trabalho O Matlab proporciona um ambiente de trabalho que permite a gesto e visualizao das variveis, ler e gravar variveis em disco e gerar programas em linguagem Matlab, possibilitando assim a automatizao de clculos complexos. Grficos As funes de criao, visualizao e manipulao de grficos so muito fceis de usar e permitem a criao de grficos 2D e 3D. O ajuste de escala automtico e o utilizador pode comear a utilizar as funes de gerao de grficos pouco tempo depois do primeiro contacto com o ambiente do Matlab. Toolboxes O Matlab disponibiliza um conjunto de pacotes de funes para as mais variadas reas de clculo cientfico, sendo estes denominados toolboxes. Existem toolboxes para estatstica, processamento de sinal, processamento de imagem, controlo, clculo simblico, etc.

3. CARREGANDO O MATLAB No gerenciador de programas do Windows, um duplo clique no cone MATLAB carrega o aplicativo. Uma vez inicializado o MATLAB, aparecer na tela uma janela de comandos e o "prompt" padro (EDU>> ou >>) so exibidos na tela. A partir deste ponto, o MATLAB espera um comando (instrues) do usurio. Todo comando deve ser finalizado teclando-se Enter. Editor de Linhas de Comando As teclas com setas podem ser usadas para se encontrar comandos dados anteriormente, para execuo novamente ou sua reedio. Por exemplo, suponha que voc entre com >> sen(0) Ao apertar a tecla Enter , o MATLAB responde com uma mensagem de erro: ??? Undefined function or variable sen. Isto acontece porque para se determinar o seno de um ngulo necessrio digitar em ingls o comando sin. Ao invs de reescrever a linha inteira, simplesmente pressione a tecla "seta para cima". O comando errado retorna, e voc pode, ento, mover o cursor para trs usando a tecla "seta para esquerda" ou o ponto de insero com o "mouse" ao lugar apropriado para inserir a letra i: sin(0) ans = 0 Note que o MATLAB chamou o resultado de ans (answer = resposta). Alm das teclas com setas, pode-se usar outras teclas para reeditar a linha de comando. A seguir dada uma breve descrio destas teclas:

4. OPERAES BASICAS E EXPRESSES LOGICAS O MATLAB oferece as seguintes operaes aritmticas bsicas:

A ordem nas expresses segue a ordem matemtica - potncia, seguida da multiplicao e da diviso, que por sua vez so seguidas pelas operaes de adio e subtrao. Parntesis podem ser usados para alterar esta ordem. Neste caso, os parntesis mais internos so avaliados antes dos mais externos. Uma expresso se diz lgica se os operadores so lgicos e os operandos so relaes e/ou variveis do tipo lgico. Os operadores relacionais realizam comparaes entre valores do mesmo tipo. Os operadores relacionais utilizados pelo MATLAB so:

Note que (=) usado para atribuio de um valor a uma varivel, enquanto que (==) usado para comparao de igualdade. No MATLAB os operadores relacionais podem ser usados para comparar vetores de mesmo tamanho ou escalares. O resultado de uma relao ou de uma expresso lgica verdadeiro ou falso; contudo, no MATLAB o resultado numrico, sendo que 1 significa verdadeiro e 0 significa falso. Por exemplo: >> 5>8 ans = 0 >> 5==5 ans = 1 Os operadores lgicos permitem a combinao ou negao das relaes lgicas. Os operadores lgicos do MATLAB so:

5. CONSTANTES O MATLAB faz clculos simples e cientficos como uma calculadora. Para tal, os comandos devem ser digitados diretamente no prompt (>>) do MATLAB, j que este trata-se de um software interativo. Por exemplo: >> 3*25 + 5*12 ans = 135 Observe que no MATLAB a multiplicao tem precedncia sobre a adio. Uma constante numrica no MATLAB formada por uma sequncia de dgitos que pode estar ou no precedida de um sinal positivo (+) ou negativo (-) e pode conter um ponto decimal (.). Esta sequncia pode terminar ou no por uma das letras e, E, d ou D, seguida de outra sequncia de dgitos precedida ou no de um sinal de (+) ou de (-). Esta segunda sequncia a potncia de 10 pela qual a primeira sequncia deve ser multiplicada. Por exemplo: >> 1.23e-1 significa 0,123. O formato em que uma constante numrica mostrada no MATLAB segue, como opo default, os seguintes critrios: se um resultado inteiro, o MATLAB mostra o nmero como inteiro; quando o resultado real, o MATLAB mostra o nmero com 4 dgitos direita do ponto decimal; se os dgitos do resultado estiverem fora desta faixa, o MATLAB mostra o resultado usando a notao cientfica. Este default pode, entretanto, ser modificado utilizando-se o Numeric Format do item Options na barra de menus. Usando-se a constante numrica (33,5), considere a tabela a ttulo de exemplo dos formatos numricos do MATLAB:

EXERCICIOS DE FIXAO Ope raes Bsicas 1- Efetue as seguintes operaes: a- 137 + 255 e exiba o resultado com 4 dgitos decimais. b- 400 137.43 e exiba o resultado com 4 dgitos decimais. c- 15 / 6 e exiba o resultado com 16 dgitos. d- 25 * 7 e exiba o resultado com 2 dgitos. e- 2 ^ (-5) e exiba o resultado com 4 e 16 dgitos, 4 e 16 dgitos mais expoente. f- (2.5)^(0.5) e exiba o resultado com 4 e 16 dgitos, 4 e 16 dgitos mais expoente. g- Exiba o numero 5.479452054794520 na forma racional

Lembre-se: entre antes das operaes com o comando indicando como os resultados devem ser exibidos (4,2,16 dgitos ou racional, etc). Uma dica sempre usar a tecla para cima para repetir os comandos que voc j usou. Expresses Lgicas 2- Usando o Matlab responda as afirmaes abaixo: a- 5>4 b- 50==49 c- 3.4<=3.5 d- 3>5 e- 1~=0 f- 1~=0 e 2>1 g- 14>=2 e 2>6 h- 14>=2 ou 2>6 i- 2*5==10 j- 5*7==34 e 5/3<=3 k- 49/7~=6 e 2^9==1024 l- 2^10<1025 ou 144^0.5==12 True ( ) True ( ) True ( ) True ( ) True ( ) True ( ) True ( ) True ( ) True ( ) True ( ) True ( ) True ( ) False ( ) False ( ) False ( ) False ( ) False ( ) False ( ) False ( ) False ( ) False ( ) False ( ) False ( ) False ( )

6. VARIVEIS Alternativamente, voc pode usar variveis no Matlab para armazenar informao. Por exemplo: >> q1=3, p1=25, q2=5, p2=12 q1 = 3 p1 = 25 q2 = 5 p2 = 12 >> total=q1*p1+q2*p2 total = 135 Primeiro, criamos quatro variveis, q1, p1, q2 e p2, atribuindo a elas os seus valores respectivos. Observe que o sinal de igual (=) aqui significa atribuio. O que estiver direita do sinal de igual colocado na varivel que estiver esquerda. Finalmente, criamos uma varivel chamada total que recebeu o total da compra. Os nomes das variveis devem consistir de uma nica palavra, conforme as regras expressas na tabela.

As variveis podem ser redefinidas a qualquer momento, bastando para isso atribuir lhes um novo valor. Alguns nomes so usados para variveis predefinidas, ou seja, so variveis especiais do MATLAB. Estas so:

6.1.

Comentrio e pontuaes

Exemplo: q1=3, p1=25,q2=5; p2=12; %Exemplo de uso da vrgula, ponto e vrgula q1 = 3 p1 = 25 Os espaos em branco entre os operadores (aritmticos, lgicos, relacionais) e as variveis (ou constantes) so opcionais. O mesmo para vale para a vrgula, o ponto e vrgula e o smbolo de porcentagem. No entanto, o espao em branco entre a ltima varivel (ou constante) de uma linha e os trs pontos obrigatrio (veja exemplo anterior). 6.2. Variveis literais

Uma varivel pode conter uma cadeia de caracteres ao invs de um nmero. Estes caracteres so manipulados como vetores linha (assunto que ser tratado mais adiante). A cadeia de caracteres deve estar limitada por apstrofos (cadeia de caracteres) para ser atribuda a uma varivel literal. Por exemplo: >> a = MATLAB a= MATLAB

6.3. Obtendo Informaes da 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:

Que mostra as seis variveis geradas em nossos exemplos anteriores, incluindo ans. Uma informao mais detalhada mostrando a dimenso de cada uma das variveis correntes so obtidos com whos que para nosso exemplo produz:

Em qualquer momento, podemos ver o valor que est contido em uma varivel, simplesmente digitando no prompt o seu nome. >> total total = 135 As variveis no espao de trabalho podem ser removidas incondicionalmente usando o comando clear. Por exemplo: >> clear p2 >> clear %remove a varivelp2 %remove todas as variveis do espao de trabalho

O comando save usado para gravar as variveis do espao de trabalho em um arquivo (.mat) em disco. O comando load usado para recuperar os dados gravados em um arquivo pelo comando save e coloc- los no espao de trabalho. Maiores informaes a respeito da sintaxe destes comandos podem ser obtidas atravs do comando help, a ser tratado posteriormente. O comando clc limpa a janela de comandos e coloca o cursor na posio inicial.

EXERCICIOS DE FIXAO Ope rao com Variveis 1- Um aluno da FEF que tinha 1,80 metros de altura e 90 kg pediu a voc que calcula se o seu IMC (ndice de Massa Corporal). a- Utilizando seus conhecimentos em variveis e Matlab, escreva uma funo que retorne o valor do IMC do aluno. Dado: IMC = peso dividido pela altura vezes altura. Utilize as variveis: a para altura e p para peso e IMC. (sem aspas). b- Exiba o resultado com 4 e 2 casas decimais. c- Utilizando os comandos lgicos responda: - Ele est com o peso normal, ou seja, com seu IMC entre 18,6 e 24,9. True ( ) False ( )

d- Ele est com sobrepeso, ou seja, com seu IMC entre 25 e 29,9. True ( ) False ( )

2- Sabendo que em uma determinada populao em uma cidade, o numero de nascidos igual a 2320 e o numero de falecidos igual 1784. Calcule usando os conhecimentos at aqui aprendidos: a- O crescimento vegetativo (CV). Dado: CV=N nascimentos menos N de falecimentos. Utilize as variveis Nn para o numero de nascidos e Nf para o numero de falecidos e CV b- Se nessa cidade existem 25000 habitantes e a rea da mesma de 5000 km determine a Densidade Demogrfica dessa cidade. Dado: Densidade Demogrfica igual ao N de habitantes divididos pela rea do territrio. Utilize as variveis: DD para densidade demogrfica Hb para habitantes e At para a rea da cidade. 3- Voc foi ao Ladro de Acar e comprou 12 bananas, 5 tomates, 1 desodorante, 16 cervejas, 4 pes e 3 miojos. Sabendo que o preo unitrio em centavos de cada um desses itens de 40 (banana), 30 (tomate), 800 (desodorante), 109 (cerveja), 25 (po) e 110 (miojo) e usando o nome de cada item como nome das respectivas variveis responda: a- Quanto ir pagar em centavos por sua compra (Use a varivel TotalCents). b- Quanto ir pagar em reais por sua compra (Use as variveis Real e TotalReal). c- Sabendo que voc dispem apenas de notas de 3 reais, responda quantas notas sero necessrias. (Use a varivel Nota3). Obs: para a soluo use a funo rem(x,y) que mostra o resto da diviso de x por y, e pense um pouco mais para responder essa questo com um numero inteiro de notas de 3 reais desconsiderando os centavos que faltaram para completar o valor total a ser pago e sem acrescentar mais nenhuma varivel.

7. FUNES MATEMTICAS O MATLAB tem uma srie de funes cientficas pr-definidas. A palavra funo no MATLAB tem um significado diferente daquele que tem na Matemtica. Aqui, funo um comando, que pode ter alguns argumentos de entrada e alguns de sada. Algumas dessas funes so intrnsecas, ou seja, no podem ser alteradas pelo usurio. Outras funes esto disponveis em uma biblioteca externa distribudas com o programa original (MATLAB TOOLBOX), que so na realidade arquivos com a extenso ".m" criados a partir das funes intrnsecas. A biblioteca externa (MATLAB TOOLBOX) pode ser constantemente atualizada medida que novas aplicaes so desenvolvidas. As funes do MATLAB, intrnsecas ou arquivos ".m", podem ser utilizadas apenas no ambiente MATLAB. As categorias gerais de funes matemticas disponveis no MATLAB incluem: Matemtica elementar; Funes especiais; Matrizes elementares e especiais; Decomposio e fatorizao de matrizes; Anlise de dados; Polinmios; Soluo de equaes diferenciais; Equaes no- lineares e otimizao; Integrao numrica; Processamento de sinais. A maioria das funes pode ser usada da mesma forma que seria escrita matematicamente. Por exemplo: >> x=sqrt(2)/2 x= 0.7071 >> y=acos(x) y= 0.7854 >> y_graus=y*180/pi y_graus = 45.0000 Estes comandos calculam o arco cujo cosseno (2^0.5) / 2 , inicialmente em radianos, depois em graus. Abaixo segue uma lista de funes cientficas disponveis:

7.1.

Comandos de auxlio

No MATLAB, pode-se obter ajuda sobre qualquer comando ou funo. Isto pode ser feito basicamente de trs formas: interativamente atravs do menu de barras, atravs do comando help ou do comando lookfor. Digitando-se simplesmente o comando help, >> help o MATLAB mostra uma listagem de todos os pacotes disponveis. Ajuda sobre um pacote especfico ou sobre um comando ou funo especfica obtida com o comando help <tpico>, onde tpico pode ser o nome de um pacote, de um comando ou funo. Por exemplo: >> help sign SIGN Signum function. For each element of X, SIGN(X) returns 1 if the element is greater than zero, 0 if it equals zero and -1 if it is less than zero. For complex X, SIGN(X) = X ./ ABS(X). O comando help a maneira mais simples de se obter auxlio no caso do usurio conhecer o tpico em que ele quer assistncia. Note que no exemplo mostrado a funo SIGN est escrita em letras maisculas somente para destacar. Deve-se lembrar de que todos os comandos do MATLAB devem ser escritos em letras minsculas. Portanto, para utilizar esta funo deve-se digitar: >> sign (x) O Comando lookfor prov assistncia pela procura atravs de todas as primeiras linhas dos tpicos de auxlio do MATLAB e retornando aquelas que contenham a palavrachave especificada. O interessante deste comando que a palavra chave no precisa ser um comando do MATLAB. Sua sintaxe lookfor <palavra-chave>, onde palavrachave a cadeia de caracteres que ser procurada nos comandos do MATLAB. Por exemplo, para se obter informaes sobre funes para se resolver integral:

>> lookfor integral ELLIPKE Complete elliptic integral. EXPINT Exponential integral function. DBLQUAD Numerically evaluate double integral. INNERLP Used with DBLQUAD to evaluate inner loop of integral. QUAD Numerically evaluate integral, low order method. QUAD8 Numerically evaluate integral, higher order method. COSINT Cosine integral function. SININT Sine integral function. ASSEMA Assembles area integral contributions in a PDE problem. COSINT Cosine integral function. FOURIER Fourier integral transform. IFOURIER Inverse Fourier integral transform. SININT Sine integral function. BLKPIDCON The output of the block is the sum of proportional, integral and Apesar da palavra integral no ser um comando do MATLAB, ela foi encontrada na descrio de 14 comandos. Tendo esta informao, o comando help pode ser usado para exibir informaes a respeito de um comando especfico, como por exemplo: >>help quad 7.2. Nmeros Complexos

Algumas linguagens de programao requerem um tratamento especial para nmeros complexos, o que no o caso do MATLAB. Nmeros complexos so permitidos em todas as operaes e funes no MATLAB. Os nmeros complexos so introduzidos usando-se as funes especiais i e j. Eles podem ser representados de vrias maneiras. Por exemplo: >> z1=3+4*i z1 = 3.0000 + 4.0000i >> z2=3+4j z2 = 3.0000 + 4.0000i >> z1+z2 ans = 6.0000 + 8.0000i Identidade de Euler: relaciona a forma polar de um nmero complexo com a sua forma retangular.

No MATLAB, a converso entre as formas polar e retangular de um nmero complexo utiliza as seguintes funes: real: parte real de um nmero complexo imag: parte imaginria de um nmero complexo abs: calcula o valor absoluto ou mdulo de um nmero complexo angle: calcula o ngulo de um nmero complexo Exemplo: >> x=1-4i x= 1.0000 - 4.0000i >> a=real(x) a= 1 >> b=imag(x) b= -4 >> M=abs(x) M= 4.1231 >> theta=angle(x)*180/pi theta = -75.9638 EXERCICIOS DE FIXAO 1- Calcule o seno, o coseno, a tangente, a raiz quadrada de /2. 2- Calcule o logaritmo e a raiz quadrada de -1. 3- Calcule o valor da funo e^(x) para x=1, x=0, x=2 e x=100. 4- Calcule o valor da funo sin(x+pi/10) cos(x) para x= 0,x=pi,x=pi/2. 5- Calcule o mximo divisor comum entre x=15 e y=5 e guarde em uma varivel qualquer. 6- Calcule o mnimo mltiplo comum entre x=84 e y=36 e guarde em uma varivel qualquer. 7- Calcule o resto da diviso de x=273 por y=31 e guarde em uma varivel qualquer. 8- Guarde em uma varivel o resultado da multiplicao da varivel do item 5 pela do item 7 dividida pela do item 8. 9- Calcule a soma dos nmeros complexos x=5 + 3i e y=3 2j onde z=x+y, e calcule a parte real de z guardando na varivel zreal. Calcule tambm o valor absoluto de z guardando o mesmo na varivel zabs.

8. VETORES O MATLAB permite a manipulao de linhas, colunas, elementos individuais e partes de matrizes. Na tabela baixo, tem-se um resumo das diversas formas de se construir um vetor no MATLAB.

Exemplo 1: >> x = 1 : 5 %gera um vetor linha contendo os nmeros de 1 a 5 com incremento unitrio. Produzindo x= 12345 >> x=1:10.5 x= 1 2 3 4 5 6 7 8 9 10 Exemplo 2: >> z = 6 : -l : l z= 654321 Exemplo 3: Pode-se, tambm, gerar vetores usando a funo linspace. Por exemplo: >> k = linspace (0, l, 6) k= 0 0.2000 0.4000 0.6000 0.8000 1.0000 %gera um vetor linearmente espaado de 0 a 1, contendo 6 elementos. >> x=linspace(1,10.5,5) x= 1.0000 3.3750 5.7500 8.1250 10.5000

Exemplo 4: >> x=logspace(0,2,5) x= 1.0000 3.1623 10.0000 31.6228 100.00 Exemplo 5: >> x=[8 6 8.10 5-6j] x= 8.0000 6.0000 8.1000 5.0000-6.0000i Nos exemplos acima os vetores possuem uma linha e vrias colunas (vetores linha). Da mesma forma podem existir vetores coluna (uma coluna e vrias linhas). Para se criar um vetor coluna elemento por elemento estes devem estar separados por ( ; ). Por exemplo: >> v=[1.5;-3.2;9] v= 1.5000 -3.2000 9.0000 Esses vetores coluna podem tambm ser criados a partir dos comandos utilizados anteriormente para criar os vetores linha, acompanhados do smbolo ( ' ), que o operador de transposio. Exemplo: >> y=(1:0.5:3)' y= 1.0000 1.5000 2.0000 2.5000 3.0000 >> z=[0 -2.3 4 sqrt(33)]' z= 0 -2.3000 4.0000 5.7446 >>z=1:1:3 z= 1 2 3

9. ENDEREAMENTO DE VETORES No MatLab, cada um dos elementos de um vetor podem ser acessados atravs de seu ndice que identifica cada uma das colunas. Por exemplo: >> x=1:10 x= 1 2 3 4 5 6 7 8 9 10 >> x(3) % Acessa o terceiro elemento de x ans = 3 >> x(5) % Acessa o quinto elemento de x ans = 5 Esses elementos de um vetor tambm podem ser acessados em blocos. Por exemplo: >> c=linspace(10,40,7) c= 10 15 20 25 30 35 40 >> c(3:5) % terceiro a quinto elemento de c ans = 20 25 30 >>c(5:-2:1) % quinto, terceiro e primeiro elementos de c ans = 30 20 10 O endereamento indireto tambm possvel, permitindo referenciar os elementos em qualquer ordem: >> c([4 1]) %quarto e primeiro elementos ans = 25 10 No caso de vetores coluna, os comandos acima funcionam de maneira similar. Por exemplo: >> d=c' d= 10 15 20 25 30 35 40

>> d([4 1]) %quarto e primeiro elementos ans = 25 10 >> d(5:-2:1) ans = 30 20 10 9.1. Ope raes entre vetores

As operaes bsicas entre vetores s so definidas quando estes tiverem o mesmo tamanho e orientao (linha ou coluna). Estas operaes so:

10. MATRIZES O MATLAB trabalha essencialmente com um tipo de objeto, uma matriz numrica retangular ( 1x1; 2x2; 3x3; i ( linha) x j (coluna); etc). 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. Por exemplo, entre com a expresso : >> A=[ 1 2 3;4 5 6;7 8 9 ] %Pressionando <enter> o MATLAB mostra o resultado A= 123 456 789 As linhas das matrizes tambm podem ser definidas atravs dos comandos utilizados anteriormente para se definir vetores linha. Por exemplo:

>> A=[1:3;linspace(4,9,3);0:.5:1] A= 1.00 2.00 3.00 4.00 6.50 9.00 0 0.50 1.00 Os elementos de uma matriz (ou de um vetor) tambm podem ser definidos por operaes ou funes matemticas. Por exemplo: >> B=[15 7;sqrt(36) cos(pi/3);12/7 2.5^2] B= 15.0000 7.0000 6.0000 0.5000 1.7143 6.2500 10.1. Ope raes com Matrizes As operaes com matrizes no MATLAB so as seguintes: Transposta; Adio; Subtrao; Multiplicao; Diviso direita; Diviso esquerda; Exponenciao;

10.2. Transposta O caracter apstrofo, " ' " , indica a transposta de uma matriz. Considere os exemplos a seguir: >>A=[1 2 3; 4 5 6; 7 8 0] A= 123 456 780 >> B = A' B= 147 258 360 >> x = [-1 0 2]' x= -1 0 2 10.3. Adio e Subtrao A adio e subtrao de matrizes so indicadas, respectivamente, por "+" e "- ". As operaes so definidas somente se as matrizes tiverem as mesmas dimenses. Por exemplo, a soma com as matrizes mostradas acima, A + x, no correta porque A 3x3 e x 3x1. Porm, >> C = A + B aceitvel, e o resultado da soma C= 2 6 10 6 10 14 10 14 0 A adio e subtrao tambm so definidas se um dos operadores um escalar, ou seja, uma matriz l x l. Neste caso, o escalar adicionado ou subtrado de todos os elementos do outro operador. Por exemplo: >> y = x - 1 resulta em y= -2 -1 1

10.4. 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. A multiplicao >> x'* y aceitvel, e resulta em Ans = 4 evidente que o resultado da multiplicao y'*x ser o mesmo. Existem dois outros produtos que so transpostos um do outro. >> x*y' Ans = 2 l -l 0 0 0 -4 -2 2 >> y*x' Ans = 2 0 -4 1 0 -2 -1 0 2

O produto de uma matriz por um vetor um caso especial do produto entre matrizes. Por exemplo A e X, >> b = A*x que resulta em B= 5 8 -7 Naturalmente, um escalar pode multiplicar ou ser multiplicado por qualquer matriz. >> pi*x Ans = -3.1416 0 6.2832 Alm da multiplicao matricial e escalar, podemos ter a multiplicao por elemento de matrizes de mesma dimenso. Esse tipo de operao feita utilizando-se um ponto ( . ) antes do operador de multiplicao ( * ). Ou seja, se A e B so matrizes definidas por A=[ a11 a12 ... a1n ; a21 a22 ... a2n ; ... ; am1 am2 ... amn] e B=[ b11 b12 ... b1n ; b21 b22 ... b2n ; ... ; bm1 bm2 ... bmn ], ento A.*B =aij*bij. Por exemplo:

>> A.*B ans = 1 8 21 8 25 48 21 48 0 10.5. Diviso Existem dois smbolos para diviso de matrizes no MATLAB "\" e "/". Se A uma matriz quadrada no singular, ento A\B e B/A correspondem 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. Em geral, X = A\B a soluo de A*X = B X = B/A a soluo de X*A = B Por exemplo, como o vetor b foi definido como A*x, a declarao >> z = A\b resulta em Z= -1 02 A diviso por elemento entre matrizes definida de maneira similar multiplicao por elemento, ou seja, A./B= aij/bij e A.\B= aij\bij , onde A e B tm mesma dimenso. 10.6. Exponenciao 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 exponenciao computada como mltiplas multiplicaes. Por exemplo: >> A^3 Ans = 279 360 306 684 873 684 738 900 441 A exponenciao por elemento entre matrizes definida de maneira similar multiplicao por elemento, ou seja, A.^B= aij^bij, onde A e B tm mesma dimenso. De maneira similar, a potenciao por elemento entre uma matriz e um escalar apresenta as seguintes formas: A.^c=aij^c e c.^A=c^aij 10.7. Ele mentos das Matrizes Um elemento individual da matriz pode ser indicado incluindo os seus subscritos entre parnteses. Por exemplo, dada a matriz A: A= 1 4 7

2 5 8

3 6 9

a declarao: >> A(3,3) = A(1,3) + A(3,l) resulta em: A= 1 2 4 5 7 8 >> A(1:3,2) Ans = 25 8 >> A(1:3,2:3) uma submatriz 3x2, que consiste das trs linhas e das ltimas duas colunas de A. Ans = 23 56 8 10 Utilizando os dois pontos no lugar de um subscrito denota-se todos elementos da linha ou coluna. Por exemplo: >> A(1:2,:) Ans = 1 2 3 4 5 6 uma submatriz 2x3 que consiste da primeira e segunda linhas e todas colunas da matriz A. Funes: o MATLAB possui algumas funes que se aplicam a matrizes como, por exemplo, as funes size (fornece o nmero de linhas e colunas de uma matriz) e length (fornece o maior valor entre o nmero de linhas e colunas). O MATLAB tem tambm funes que se aplicam individualmente cada coluna da matriz produzindo um vetor linha com os elementos correspondentes ao resultado de cada coluna. Se a funo for aplicada transposta da matriz, os resultados sero relativos a cada linha da matriz. Se o argumento da funo for um vetor, o resultado ser um escalar. Algumas dessas funes so:

3 6 10

10.8. Submatrizes. Sendo B uma matriz 5x5 unitria, podemos defini- la atravs da seguinte funo: >> B = ones (5) B= 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Sendo C uma matriz de zeros 3x4, podemos defini- la como: >> C=zeros(3,4) C= 0 0 0 0 0 0 0 0 0 0 0 0 Para que o MATLAB gere uma matriz de nmeros aleatrios entre 0 e 1, utilizamos a funo rand (veja tambm a funo randn, utilizando o comando help ). Exemplo: >> D=rand(2,3) D= 0.2190 0.6789 0.9347 0.0470 0.6793 0.3835 10.9. Remoo de colunas e linhas possvel remover de uma dada matriz qualquer conjunto de linhas e colunas. Para tal, basta atribuir o valor de uma matriz vazia definida por[] s linhas e colunas que se pretende remover. No exemplo que se segue, elimina-se a 2a coluna da matriz A. >>a= [1 2; 3 4]; >>A= [a a; a a] A= 1212 3434 1212 3434 >>A(:,2)= [] A= 112 334 112 334 A remoo de um elemento isolado de uma matriz no possvel uma vez que esta deixaria de respeitar as propriedades de uma matriz. >> A(1,2)=[] ??? Indexed empty matrix assignment is not allowed.

11. POLINMIOS Existe no ambiente Matlab um conjunto de funes para manipular polinmios. A definio de polinmios feita criando vetores cujos elementos so os coeficientes do polinmio ordenados por potncia decrescente tal como o exemplo seguinte ilustra. Para representar o polinmio p(x) = x2 3x + 2, cria-se o vetor: >>p=[1 -3 2]; e para calcular as suas razes existe a funo >>r= roots(p) r= 2 1 Para obter os coeficientes de um polinmio a partir das razes pode-se utilizar a funo >>poly(r) ans= 1 -3 2 Tambm possvel calcular o valor de um polinmio num conjunto de pontos utilizando a funo polyval tal como o exemplo ilustrado abaixo: >>polyval(p,r) ans= 0 0 e que, como se pode ver, calculou o valor do polinmio nos seus zeros. O produto entre dois polinmios obtido atravs da funo conv (convoluo). O exemplo seguinte ilustra o produto entre os polinmios: x2 + 1 e x3 + x 1 dado por x5 + 2x3 x2 + x 1 >>p1= [1 0 1]; >>p2= [1 0 1 -1]; >>conv(p1,p2) ans= 1 0 2 -1 1 -1

EXERCICIOS DE FIXAO 1Calcule o valor da funo sin(x+pi/10) cos(x) em 100 pontos do intevalo [,]. 234Calcule o produto dos polinmios x^6 + 10 e x^2 2x + 3 Obtenha o polinmio cujas razes so os nmeros inteiros 1, 2 e 3. Calcule os zeros do seguinte polinmio p(x) = x^3 + 4x^2 3x + 1. Calcule o

valor do polinmio em 100 pontos da forma x = e^(j) com [0 ... 2]. 5Crie uma matriz 3 3 em que todos os elementos so iguais a 3.

6Crie um vector coluna com 100 elementos aleatrios com uma distribuio uniforme. 78Crie uma matriz 4 4 em que todos os elementos so iguais a 1 + j2. Considere as matrizes e escalares:

c1=2 e c2=3 A=[21 14 45; 35 14 0; 1 84 13] e B=[10 12 11;2 10 15; 20 5 40 ]; Calcule: a- A.*B b- B.*A c- Inv(A)*inv(B) d- Inv(A).*inv(B) e- Usando o comando det(matriz) que calcula o determinante. Calcule det(A) e det (B) f- Resolva o sistema Ax=b onde b=[20 1 25]. Dica (x=A\b ou x=inv(A)*b) OBS: b est declarado como vetor linha, logo para transforma- lo em vetor coluna aplica-se o comando de transposta (b=b).

12. GRFICOS NO MATLAB A construo de grficos no MATLAB mais uma das facilidades do sistema. Atravs de comandos simples pode-se obter grficos bidimensionais ou tridimensionais com qualquer tipo de escala e coordenada. 12.1. Grficos Bidimensionais Estes so os comandos para plotar grficos bidimensionais:

Se Y um vetor, plot(Y) produz um grfico linear dos elementos de Y versos o ndice dos elementos de Y. Por exemplo, para plotar os nmeros: Y=[0.0, 0.48, 0.84, 1.0, 0.91, 0.6,0,14], Entre com o vetor e execute o comando plot: >> Y = [0.0, 0.48, 0.84, 1.0, 0.91, 0.6, 0,14]; >> plot(Y)

Se X e Y so vetores com dimenses iguais, o comando plot(X,Y) produz um grfico bidimensional dos elementos de X versos os elementos de Y, por exemplo: >> t = 0:0.05:4*pi; >> y = sin(t); >> plot(t,y)

O MATLAB pode tambm plotar mltiplas linhas e apenas um grfico. Existem duas maneiras, a primeira usado 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) plota sucessivamente as linhas ou colunas de Y versos o vetor X. Se X uma matriz e Y um vetor, plot(X,Y) plota sucessivamente as linhas ou colunas de X versos o vetor Y. Se X e Y so matrizes com mesma dimenso, plot(X,Y) plota sucessivamente as colunas de X versos as colunas de Y. Se Y uma matriz, plot(Y) plota sucessivamente as colunas de Y versos o ndice de cada elemento da linha de Y. A segunda, e mais fcil, maneira de plotar grficos com mltiplas linhas usando o comando plot com mltiplos argumentos. Por exemplo: >> plot(t, sin(t), t, cos(t), t, sin(t + pi), t, cos(t + pi))

12.2. Estilos de Linha e Smbolo e o Comando subplot Os tipos de linhas, smbolos e cores usados para plotar grficos podem ser controlados se os padres no so satisfatrios. Por exemplo: >> X = 0:0.05:1; >> subplot(1,2,1), plot(X,X.^2,k*) >> subplot(1,2,2), plot(X,X.^2,k --')

Uma coisa que voc deve ter notado, que o comando subplot tambm segue uma ideia semelhante a de uma matriz. No nosso exemplo anterior, tnhamos plotado dois grficos numa mesma janela. Observe os ndices no subplot anterior: subplot(1,2,1) e subplot(1,2,2) Podemos ver que ver que os dois primeiros ndices, ou seja, 1 e 2 representam uma matriz linha, com uma linha e duas colunas, j o terceiro ndice 1 no primeiro subplot e 2 no segundo, significa a posio em que os grficos apareceram. Para um melhor entendimento vamos plotar 4 grficos numa nica janela.

Esses grficos so: >> x=[0:1:20]; y1=x; y2=2*x; y3=x.^2; y4=x.^3; subplot(2,2,1),plot(x,y1,'+') subplot(2,2,2),plot(x,y2,'o') subplot(2,2,3),plot(x,y3,'-') subplot(2,2,4),plot(x,y4,'.')

Tipos de linhas, pontos e cores tambm podem ser usados:

12.3. Area Gera um grfico em forma de reas. Se x e y so vetores, a funo equivalente a plot(x,y) com a parte inferior do grfico pintad a. Quando y uma matriz, cada coluna tratada como um vetor independente das outras, porm as reas (uma cor para cada coluna) so colocadas uma sobre a outra. Exemplo:

>>x=[-10:1:10];y = [-10:1:10]; area(x,y);

12.4. Outros recursos para grficos bidimensionais Existem comandos que permitem plotar em escalas logartmicas, grficos de barras ou pizzas. Os seguintes comandos podem ser usados no lugar de plot. >> x=[0:1:50] >> y=exp(x); >> loglog(x,y); Ao invs dos valores de x e y sero plotados os valores dos logaritmos desses valores. >> semilogx(x,y); Neste ltimo caso escala logartmica ser usada somente para os valores do eixo x. >> semilogy(x,y);

12.5. Pizza ou Torta Grficos em formato de torta ou pizza so criados usando este comando. O vetor a contm valores a serem plotados e b um vetor lgico opcional que descreve as fatias a serem separadas. Exemplo: grfico de torta. Exemplo: >> a = [0.5 1 1.5 2.0 1 0.3]; >> pie(a);

Um recurso interessante mover no grfico os valores mximos ou mnimos de um conjunto de dados. Exemplo: Voc e mais 4 amigos foram ao Star Clean e encheram a cara, na hora de pagar a conta, de 171 $, voc pagou 31 $ , o amigo 1 47 $, amigo 2 e 3 40 $ cada e por ultimo o amigo 4 esperto pagou apenas 13 $. Vamos mostrar no grfico pizza, a distribuio da conta paga por cada amigo incluindo voc e destacar quem pagou mais e quem pagou menos. Para tal basta declarar o vetor que mostra quanto cada um pagou e usar os comando abaixo: >> pagar=[31 47 40 40 13]; % vetor de pagamentos feito por cada um >>pie(pagar); %Plota o grfico com o total (%) de pagamentos feitos por cada um >>pie(pagar,pagar==max(pagar));%Destaca no grfico o maior pagamento em % >>pie(pagar,pagar==min(pagar));%Destaca no grfico o menor pagamento em %

12.6. Barras Verticais Utilizando o exemplo a seguir: O valores gastos por voc no Star Clean durante sua graduao anualmente foram os seguintes: Ano $ 2000 500 2001 800 2002 1000 2003 1500 2004 2100 >> ano=[2000 2001 2002 2003 2004]; >> gasto=[500 800 1000 1500 2100]; >> bar(ano,gasto)

12.7. Grfico e m coordenadas polares Neste caso cada ponto do plano identificado a um raio r (distncia da origem) e um ngulo tetha (aquele que forma o raio com o eixo X). Cada ponto de uma curva no plano identificado com um par (r,tetha). Exemplo 1: >> tetha=[0:2*pi/100:2*pi];%diviso do intervalo [0,2pi] em 100 partes >> r = tetha/(2*pi); >> subplot(1,2,1); >> polar(tetha,r);%grfico em coordenadas polares

Neste caso o raio inversamente proporcional constante 2*pi. Quando o ngulo tetha aumenta de 0 a 2pi e o raio tambm aumenta proporcionalmente. Ento a curva circular afastando-se do centro que a prpria origem, isto , uma espiral. >> tetha=[0:2*pi/100:2*pi];%diviso do intervalo [0,2pi] em 100 partes >> polar(tetha,sin(2*tetha).*cos(2*tetha));

Vimos alguns dos mais diversos tipos de grficos, no MatLab existe uma infinidade de modelos de grficos 2D, por isso uma consulta no help pode lhe ajudar e muito. A ideia principal saber o que se quer fazer, em seguida procurar.

12.8. Formatar Grficos (legendas, eixos, etc.) A seguir vamos mostrar como formatar grficos. Apara uma boa compreenso analise os cdigos e tem repetir pelo menos uma vez [copie e cole no workspace], e tente entender o que cada uma das funes fazem. Formatar Eixos Comandos: - xlabel = insere uma legenda no eixo x. - ylabel = insere uma legenda no eixo x. - title = insere um titulo na janela. - grid [on ou off] = cria uma grade superposta ao grfico atual

Exemplo 1: A posio de um veculo dado pela seguinte equao y=f(t)=2*t^(2)-2*t. Plote um grfico que mostre a sua posio em funo do tempo no intervalo de 0 a 10 segundos espaado segundo a segundo. >>t=[0:1:10]; y=2*t.^(2)-2*t; figure;plot(t,y, 'r-- '); xlabel(' tempo [s] '); ylabel(' posio [m]'); title('posicao x tempo'); grid on;

Comandos: - figure = Plota graficos e janelas diferentes

Exemplo 2: Plotar o grfico anterior em uma janela e o seno de um ngulo entre o intervalo que vai de 0 a pi espaado de pi/10. >>ang=[0:pi/10:pi]; y1=sin(ang); figure ; plot(ang,y1, 'g--'); xlabel(' theta [rads] '); ylabel(' sin (theta)'); title('sin(theta) x theta'); grid on; t=[0:1:10];y2=2*t.^(2)-2*t; figure;plot(t,y2, 'r--'); xlabel('tempo [s]'); ylabel('posio[m]'); title('posicao x tempo'); grid on;

Exemplo 3: >> a = [0.5 1 1.5 2.0 1 0.3]; pie(a,a==max(a)); title('Produo de gros'); legend('Arroz','Feijo','Soja','Trigo','Milho','Cevada');

Exemplo 4: >> a = [0.5 1 1.5 2.0 1 0.7]; b = [1960 1970 1980 1990 2000 figure bar(b,a);%barra vertical xlabel('Anos de produo'); ylabel('Produo de gros (em axis xy;%ordena os valores do figure barh(b,a);%barra horizontal xlabel('Anos de produo'); ylabel('Produo de gros (em axis xy;%ordena os valores do

2010];

milhes de toneladas)'); eixo Y em forma ascendente

milhes de toneladas)'); eixo Y em forma ascendente

Exemplo 5: >> x = linspace(0,2*pi,30); y= sin(x); z= cos(x); a= 2*sin(x).*(cos(x)); b= sin(x)./(cos(x)+eps); subplot(2,2,1) plot(x,y) axis([0 2*pi -1 1]);%intervalos para ambos os eixos x e y title('sin(x)') subplot(2,2,2) plot(x,z); axis([0 2*pi -1 1]); title('cos(x)'); subplot(2,2,3); plot(x,a); axis([0 2*pi -1 1]); title('2 sin(x) cos(x)'); subplot(2,2,4); plot(x,b); axis([0 2*pi -20 20]); title('sin(x)/cos(x)');

12.9. Utilizando Matrizes para armazenar e plotar graficos A forma mais fcil de explicar esse mtodo de armazenar e plotar grficos atravs de um exemplo. Um estudante de biologia est analisando o crescimento de 3 espcies de bactrias. A tabela abaixo passada pelo seu orientador mostra a funo de crescimento de cada uma dessas espcies:

O mesmo estudante ficou incumbido de plotar o grfico de crescimento em funo do tempo [0 20 segundos] dessas 3 espcies e ns vamos fazer o mesmo. >> x=[0:1:20]; A=[ (x)' (x.^2)' (x.*log(x+1))']; plot(A, '-o') legend('espA','espB','espC'); Ateno: Veja que os vetores dentro da matriz esto transpostos, pois sem calcular a transposta dos mesmos d um erro devido a dimenso da matriz. Por isso ao usar esse mtodo lembre-se sempre disso. O tamanho dessa matriz o seguite: A[20 3].

12.10. Mais Comandos e Funes Exemplo 6: Comandos: - text = Insere uma nota no seu grfico - axis [on off] = Liga e desliga os eixos >> x=0:0.05*pi:3*pi; y = x.*3.*sin(x)+x/10; set(gcf,'Color',[1 1 1]);%fundo branco area(x,y); xlabel('AbcisaX '); title('Funes Trigonomtricas','FontSize',14,... 'Fontweight','bold','FontAngle','italic'); ylabel('Ordenada = x.3 * Sin(x) + x/10'); axis off; text(3,5,'{\it grafico area.}')

Exemplo 6: Comandos: Latex Interpreter= Interpreta Latex >>text('Interpreter','latex',... 'String','$$\int_0^x\!\int_y dF(u,v)$$',... 'Position',[.5 .5],'FontSize',16) axis off

13. PLOTANDO GRAFICOS 3D E CONTORNO Estes so alguns comandos para plotar grficos tridimensionais e contornos.

13.1. Plot3D Para traar grficos curvilneos 3D utiliza-se o comando ou funo plot3. No prximo exemplo a varivel t aumenta com o par (cos(t),sin(t)) que est dentro de uma circunferncia de raio 1. Ao mesmo tempo o par (cos(t),sin(t)) est girando em sentido antihorrio no plano X-Y e a terceira componente de t est aumentando e se afastando deste plano, logo o grfico corresponde a uma linha que vai girando e se afastando do plano X-Y, uma hlice, cujo ponto de partida o ponto (0,1,0) = (cos(0),sin(0),0). O grfico est desenhado na figura abaixo. >>t = linspace(0,10*pi,200 ); plot3(sin(t),cos(t),t); title('H l i c e : curva paramtrica'); xlabel('X = Sin(t)'); ylabel('Y = cos(t)'); zlabel('Z = t');

13.2. Pizza 3D ou Torta 3D A verso tridimensional do grfico de torta ou pizza obtida como mostrado no exemplo abaixo. Preste ateno pois estamos entrando com comandos novos (destaque e colormap hsv): >> a = [0.5 1 1.5 2.0 1 0.3]; destaque = [1 1 1 1 0 1]; %pedaos em destaque pie3(a,destaque); %formato pizza tridimensional title('Produo de gros'); colormap hsv; %opo de tonalidade de cor

13.3. Mesh O comando mesh(X,Y,Z) cria uma perspectiva tridimensional plotando os elementos da matriz Z em relao ao plano definindo pelas matrizes X e Y. Por exemplo: >> [X,Y] = meshgrid(-3:.125:3); Z = peaks(X,Y); meshc(X,Y,Z); axis([-3 3 -3 3 -10 5]) contour(Z,10);

e o comando contour(Z,10) mostra a projeo da superfcie acima no plano xy com 10 iso-linhas: [X,Y] = meshgrid(-3:.125:3); Z = peaks(X,Y); meshc(X,Y,Z); axis([-3 3 -3 3 -10 5]) contour(Z,10);

13.4. Meshgrid e Surf [X,Y] = meshgrid(-2:.2:2, -2:.2:2); Z = X .* exp(-X.^2 - Y.^2); surf(X,Y,Z)

13.5. Grficos de superfcie A seguir apresentado um exemplo com explicaes de cada comando grfico. >> x = -7.5:0.5:7.5; %vetor ou lista x y = -7.5:0.5:7.5; %vetor ou lista y [X,Y] = meshgrid(x,y); %matrizes coordenadas (x,y) R = sqrt(X.^ 2+Y.^ 2)+eps ;%soma-se eps para evitar diviso por zero Z = sin(R)./R+1; mesh(X,Y,Z);%grfico de rede hold on; %segura as sadas grficas posteriores na janela atual pcolor(X,Y,Z); %provoca a apario de uma malha colorida no domnio shading interp;%a cor definida de acordo com a altura contour(X,Y,Z,20,'k'); %20 curvas de nvel em preto,escolha automtica colorbar;%apresenta uma escala colorida de valores hold off;%cada comando grfico ser apresentado em uma janela distinta

EXERCICIOS DE FIXAO 1- Leia e releia essa parte de plotar grficos e tente alterar, na tentativa e erro que grandes descobertas acontecem. 2- Plote o grfico de seno e cosseno em janela diferentes, com legendas, titulo, eixo x no intervalo de 0 a 2*pi e eixo y no intervalo de -1 a 1, os eixos devem apresentar as descries X no eixo x e Y no eixo y, a cor do grfico de seno deve ser azul e a do cosseno vermelha. 3- Repita o exerccio anterior, porm, os grficos devem estar juntos numa mesma janela usando o comando subplot e o grfico de cosseno o comando grid deve estar ligado, e o do seno com os eixos ocultos. 4- Em uma aula super agradvel no matadouro da FEM (Faculdade de Engenharia Mecnica) seu professor de ResMat passou a seguinte tarefa: Calcular a fora de cisalhamento V(x) e o momento fletor M(x) da viga sujeita ao carregamento distribudo. Onde x (metros) corresponde o intervalo [0 10]. Plote os grficos usando o comando subplot e o comando area , com o grafico de cisalhamento acima do de momento fletor, com ttulos Diagrama Cisalhamento e Diagrama Momento Fletor, com os eixos x com a legenda metros e o y com N para o cisalhamento e N.m para o de momento fletor. As equaes esto na figura abaixo:

14. IMPORTANDO E EXPORTANDO DADOS DO EXCEL No MatLab tambm possvel importar e exportar dados de extenso dat, txt, xls. No nosso curso vamos trabalhar com o Excel (.xls) devido ao seu maior uso. Siga o exemplo abaixo: 1 Verifique qual o diretrio em que o MatLab est para poder exportar e importar para um lugar que voc conhea. O padro work, porm como no me u caso, alterei para Desktop. Veja a seguir. Ateno: Todos os dados exportatos sero salvos no diretrio corrente, no meu caso importar Desktop. o arquivo Para do

Excel deve tambm no diretrio corrente, mais

uma vez, Desktop no meu caso.

2 Exportar dados para o Excel. Vamos declarar uma matriz qualquer, no caso A=[0 1 2 3;4 5 6 7; 8 9 0 1]. >> A=[0 1 2 3;4 5 6 7; 8 9 0 1] A= 0 4 8 1 5 9 2 6 0 3 7 1

Na sequencia entramos com o comando: >> xlswrite('test.xls',A,1) Ao lado podemos ver o resultado

3 Agora vamos importar os dados enviados ao Excel. Use o seguinte comando: >>B=xlsread('test.xls',1) B = 0 4 8 1 5 9 2 6 0 3 7 1

O que fizemos at agora foi o seguinte, criamos uma matriz A, exportamos para o Excel, em seguida importamos esses dados guardando o mesmo em uma matriz B. Agora vamos fazer uma operao simples e exportar para plan 2 do Excel. Veja abaixo. >> C=2*B C= 0 8 16 2 10 18 4 12 0 6 14 2

>> xlswrite('test.xls',C,2)

Em suma, vimos como simples exportar e importar dados do Excel usando o MatLab. Algumas ressalvas devem ser feitas: - Caso queira importar dados, certifique-se de que a planilha esteja no mesmo diretrio do MatLab, se a mesma no estiver, mova-a para o diretrio, caso contrario alterar o diretrio como fizemos no comeo desse tutorial. - Ao importar dados do Excel certifique se que a mesma se encontra no modelo 97-2003 pois nos formatos recentes eu ainda no consegui. Talvez devido a minha verso de MatLab ser relativamente antiga (2009). Talvez s verso mais recentes deem suporte qualquer formato. - Ao exportar dados, certifique se que a planilha objeto, esteja fechada, caso contrario, comear a dar erros e os dados no sero e exportados.

15. EXPRESSES SIMBOLICAS No MATLAB, possvel manipularmos expresses que alm de nmeros e variveis numricas, contm tambm variveis simblicas. Por exemplo: >> syms x >> simplify((sin(x))^2+(cos(x))^2) ans = 1 Estes comandos mandam o MATLAB simplificar a expresso (sin(x))^2+(cos(x))^2. Primeiro precisamos dizer ao MATLAB que x uma varivel simblica, depois pedimos para simplificar a expresso que envolve x. Neste caso usamos uma funo chamada simplify. Neste caso, a funo simplify tem como argumento de entrada uma expresso simblica e de sada tambm. Uma vez definido que a varivel x uma varivel simblica, podemos definir expresses que envolvem esta varivel. Por exemplo, dadas duas funes f(x) = 2x^2+3x-5 e g(x) = x^2-x+7, podemos fazer uma srie de operaes algbricas envolvendo estas funes. Por exemplo: >> syms x >>f=2*x^2+3*x-5; g=x^2-x+7; >> f+g ans = 3*x^2+2*x+2 >> f-g ans = x^2+4*x-12 >> f*g ans = (2*x^2+3*x-5)*(x^2-x+7) >> expand(ans) ans = 2*x^4+x^3+6*x^2+26*x-35 >> f/g ans = (2*x^2+3*x-5)/(x^2-x+7) >> expand(ans) ans = 2/(x^2-x+7)*x^2+3/(x^2-x+7)*x-5/(x^2-x+7)

O MATLAB pode realizar operaes mais avanadas sobre expresses simblicas. A funo compose calcula a composio das funes f(x) e g(x) em f(g(x)), a funo finverse encontra a inversa funcional de uma expresso e a funo subs substitui uma varivel por um nmero (ou por outra varivel) em uma expresso. Por exemplo: >> f=1/(1-x^2); g=sin(x); >> compose(f,g) ans = 1/(1-sin(x)^2) >> compose(g,f) ans = sin(1/(1-x^2)) >> finverse(g) ans = asin(x) >> subs(f,x,2) ans = -1/3 O MATLAB pode resolver equaes. Por exemplo, para resolver a equao ax^2+bx+c =0 algebricamente, podemos usar os comandos: >> syms a b c x >> solve(a*x^2+b*x+c) ans = [1/2/a*(-b+(b^2-4*a*c)^(1/2))] [1/2/a*(-b-(b^2-4*a*c)^(1/2))]

O MATLAB pode exibir este resultado de uma forma mais fcil de enxergar usando a funo pretty. >> pretty(ans)

Abaixo segue um resumo das funes para manipulao de expresses algbricas: diff(f) - calcula a derivada de f. compose(f,g) - determina a composta f(g(x)). expand(expr) - expande uma expresso expr. finverse(expr) - determina a inversa funcional da expresso expr. pretty(expr) - exibe a expresso expr numa forma mais bonita. simple(expr) - procura encontrar uma forma mais simples de escrever uma expresso expr. simplify(expr) - simplifica a expresso expr. solve(expr) - acha a(s) soluo(es) da equao expr = 0. subs(expr,x,a) - substitui na expresso expr a varivel x por a. syms x y z a b - define as variveis simblicas x, y, z, a e b. Existem vrias outras funes para manipulao de expresses algbricas. Voc pode obter informaes sobre elas digitando help symbolic. Uma funo interessante que mostra as capacidades do MATLAB em tratar com funes matemticas funtool que uma calculadora para funes.

16. CALCULO I NO MATLAB 16.1. 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 ( xa ). Exemplo: Achar o limite abaixo:

>> syms x >> limit((1+x^2)/(1-x^2),x,2) ans = -5/3

16.2. Limites esquerda e direita 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 calcular esquerda e direita, respectivamente.
Exem plo: Achar os limites a seguir:

>> limit(x/(x-3),x,3,'right') ans = Inf >> limit((x+1)/((x-1)^3),x,1,'left') ans = -Inf

16.3. Derivadas Para o clculo de derivas, o comando no MATLAB : diff(f(x)), onde f(x) a funo que se quer determinar a derivada. Exemplo: Derivar as funes abaixo:

>> diff((2*x^2)+3*x) ans = 4*x+3 >> diff(1/(3-x)) ans = 1/(3-x)^2 16.4. Derivadas supe riores As derivadas superiores so simples de se calcular no MATLAB, o comando para tal operao o mostrado abaixo: diff(f(x),2), esse exemplo para a derivada segunda da funo f(x), para derivada terceira, coloca-se 3 no lugar do nmero 2, para derivada quarta, o numero 4 e assim por diante. Exemplo: Achar a derivada segunda das seguintes funes:

>> diff(1/(3-x),2) ans = 2/(3-x)^3 >> diff(x-(1/x),2) ans = -2/x^3

16.5. Derivadas Trigonomtricas Exemplo: Derivar as seguintes funes:

>> syms x >> diff(sin(x)) ans = cos(x) >> diff(cos(2*x)) ans = -2*sin(2*x) >>diff(tan(3*x+5)) ans = 3+3*tan(3*x+5)^2 16.6. Integrais Na integrao de funes, o comando que o MATLAB reconhece para Atal operao : int(f(x)) , pode se colocar a funo dentro dos parnteses, ou ento definir uma funo f e simplesmente escrever int(f). Exemplo: Integrar as funes abaixo:

>> syms x >> f=((x^1/2)*(1-x)^2); >> int(f) ans = 1/8*x^4-1/3*x^3+1/4*x^2

>> f=((2*x^4 - 3*x^3 + 5)/(7*x^2)); >> int(f) ans = 2/21*x^3-3/14*x^2-5/7/x 16.7. Integrais trigonomtricas Exemplo: Integrar as seguintes integrais:

>> syms x >> int(cos(2*x)) ans = 1/2*sin(2*x)

>> int(sin(3*x+2)) ans = -1/3*cos(3*x+2)

16.8. Integrais definidas Ao se calcular integrais definidas no MATLAB, o comando necessrio fornecer o seguinte comando: int(f(x),a,b), onde a o limite inferior e b, o limite superior da integral.

Exemplos:

>> syms x >> int((2*x)/(x-3)^2,0,2) ans = 4-2*log(3) >>int((1-2*x-3*x^2),0,1) ans = -1 16.9. Grficos (ezplot) No MATLAB tm-se como traar grficos. Para tal pode-se usar dois mtodos: o primeiro quando se quer um grfico e no necessrio ter um valor mximo e um valor mnimo do domnio, e quando o valor do domnio so os nmeros reais. Um exemplo para a plotagem de grficos quando o domnio so os nmeros reais o grfico da reta f = x^2 y^4 . O comando para fazer esse grfico : ezplot('f') >> ezplot('x^2-y^4')

O outro modo de construir grficos, tendo os limites do domnio atravs do comando: ezplot(f(x),[valor minimo, valor maximo]) >> ezplot(2-(15*x)+(9*x^2)-x^3,[-5, 10])

16.10. Mximos e Mnimos de Funes Uma operao muito til para o clculo que o MATLAB contm a operao onde se consegue otimizar um problema, ou seja, a operao onde se acha os valores de mximo e de mnimo de funes. O MATLAB no faz o grfico da funo, apenas fornece os valores mximos e mnimos das funes. O comando para o clculo dos mnimos : x=fminbnd(f(x),x1,x2), onde x1 e x2 so os intervalos onde se procura os mximos e mnimos; sendo que . Para o clculo dos mximos, o comando : g(x)= -f(x) x=fminbnd(g(x),x1,x2) A estratgia de se usar a funo oposta funo usada no clculo dos mnimos devido ao fato de que o mximo na funo f o mximo na funo oposta g.

EXERCICIOS DE FIXAO 1- Mais uma vez, voc est no matadouro lembra? , e seu querido professor de ResMat lhe passa a seguinte questo. Plote o diagrama de V(x) e M(x) no intervalo de 0 10 metros, sabendo que a viga representada na figura abaixo est sujeita a uma carga distribuda p(x)= - 20 [N/m]. Como dica ele d as condies de contorno c1 e c2, que possuem os valores de 100 [N] para c1 e 0 para c2. Dados para esse caso:

Dicas: - Desclare a varivel simb lica x usando o comando syms - Em seguida declare as constantes de integrao c1 e c2 - Declare a funo p(x) que no MatLab vai ficar >> p = - 20; - Use as funes mostradas acima para encontrar V(x), que no nosso caso chamaremos no MatLab apenas de V provisoriamente. - Use as funes mostradas acima para encontrar M(x) , que no nosso caso chamaremos no MatLab apenas de M provisoriamente. - Declare u m vetor chamado metro que inicia no 0 e vai de 1 em 1 at 10 metros. - Repita esse comando >> Vx=subs(V,metro). O co mando mostrado substituir os valoes do vetor metro na varivel x e depois guarda o resultado da operao no vetor Vx. - Repita esse comando >> M x=subs(M,metro). Idem acima. - Agora voc tem os vetores Vx, M x, e metro, agora s plotar os grficos usando o comando subplot, area, xlabel, ylabel e etc, co mo feito no outro exerccio. - Simp les no acha ?

17. PROGRAMAO 17.1. Arquivos .m Para resolver problemas simples, cmodo e eficiente utilizar o MATLAB como se fosse uma calculadora, entrando-se com os comandos diretamente no prompt. Ou seja, cada linha de comando introduzida na Janela de Comandos e processada imediatamente. Entretanto, medida que o nmero de comandos aumenta, ou quando se deseja mudar o valor de uma ou mais variveis e executar novamente os comandos, o melhor utilizar o MATLAB como uma linguagem de programao, ou seja, utilizar o MATLAB para executar seqncias de comandos armazenadas em arquivos de roteiro (script). Esses arquivos que contm as declaraes do MATLAB so chamados arquivos ".m" ( ou M-files ), como, por exemplo, exemplo1.m. Esses M-files so os programas fontes do MATLAB e consistem de seqncias de comandos normais do MATLAB, possibilitando incluir outros arquivos ".m" escritos no formato texto (ASCII). Para escrever um programa ( ou arquivo .m ) no MATLAB, escolha File na barra de menu. Dentro do menu File escolha New e selecione M-file. Abre-se, ento, um editor de textos, onde pode-se escrever os comandos do MATLAB. Para editar um arquivo j existente, selecione a opo Open M-File, a partir do menu File. Os arquivos podem, tambm, ser editados fora do MATLAB utilizando qualquer editor de texto. Para iniciar nossos estudos em programao, vamos fazer o exemplo abaixo:
%========================================== % Exemplo 1 de programao no M ATLAB % Este exemplo plota uma funo seno em varias condies %==========================================

x=0:360; A=1; phi=0; y=A*sin(2*pi*x/360+2*pi*phi/360); A=2; z=A*sin(2*pi*x/360+2*pi*phi/360); phi=45; v=A*sin(2*pi*x/360+2*pi*phi/360); phi=-90; w=A*sin(2*pi*x/360+2*pi*phi/360); phi=0; u=A*sin(2*pi*2*x/360+2*pi*phi/360); plot(x,y,'r-',x,z,'b--',x,v,'g-.',x,w,'y.',x,u, 'o') grid xlabel('Valores de x em graus') ylabel('y,z,v,w e u') title('Estudo de defasagem e amplitude de um seno') legend('sen(x)','2*sen(x)','2*sen(x+45)','2*sen(x-90)','2*sen(2*x)')

Uma vez escrito o programa, entre no menu File da janela do editor de textos e escolha a opo Save as... Nesta opo do menu, salve o programa como prog1.m no seu diretrio de trabalho. Em seguida, digite o nome do arquivo (sem a extenso .m) para executar o programa: >> prog1

Por causa da grande utilidade dos M-files, o MATLAB possui diversas funes que tornam os M-files ainda mais interessantes. Estas funes esto listadas na tabela a seguir:

Para entender melhor algumas dessas funes veja o prximo exemplo.


%===================================== % Exemplo 2 de utilizao da funo M-file input % Programa para traar a curva : % y=A.sin(x+phi) %===================================== x=input('Entre com o vetor x [rad]> ');%0:pi/2:pi A=input('Entre com o valor de A> ');%2 phi=input('Entre com o valor de phi [graus]> ');%90 y=A*sin(x+pi*phi/180); plot(x,y,'r'); grid on title('Exemplo de utilizao da funo input') xlabel('x em rad/s') ylabel('y=A.sin(x+phi)')

17.2. Gerenciame nto de arquivos O MATLAB possui uma srie de comandos para gerenciamento de arquivos, tais como listar os nomes de arquivos, vizualizar, deletar, etc. Na tabela abaixo tem-se um resumo dos principais comandos :

17.3. Criando funes no MatLab As funes executveis escritas na linguagem utilizada pelo Matlab esto implementadas em arquivos com extenso m. Suponha que o arquivo exemplo.m contenha uma srie de linhas de comandos ou funes do Matlab, ento quando este arquivo chamado sem extenso do prompt do Matlab: >> exemplo + <ENTER> o Matlab entender que este arquivo executvel e assim cada linha ser interpretada na seqncia de acordo com a sua funo. Da mesma forma um mtodo ou sub-rotina pode ser definido dentro de um arquivo com extenso .m contendo argumentos de entrada e de sada. Por exemplo, cria-se o arquivo circum.m contendo as seguintes linhas: %======================================= %Esta funo calcula o permetro de uma circunferncia de % raio R. Si R uma matriz, circum(R) retornar uma matriz % contendo os permetros das circunferncias de raios iguais % aos respectivos valores da matriz R %====================================== function C = circum(R) C = 2*pi*R; As linhas acima correspondem ao arquivo circum.m. Para utilizar est funo basta digitar: >> circum(2) ans = 12.5664

Em caso de ser R um vetor: >> R = [1 2 3]; >> circum(R) ans = 6.2832 12.5664 18.8496 As primeiras linhas iniciadas com o smbolo % constituem uma valiosa fonte de informaes a respeito da funcionalidade do arquivo. Para ter acesso a elas no necessrio abrir o arquivo com um editor, basta digitar: >> help circum ento as primeiras linhas juntas de comentrios sero mostradas. Por isto importante documentar de forma precisa esta primeira linha, caso o nmero de funes venha a aumentar consideravelmente. No necessrio que o nome do arquivo seja igual ao nome da function dentro do mesmo. Quando a funo tem mais de um argumento de sada, digamos rea, volume, ento estes devem vir entre colchetes, por exemplo, a seguinte funo definida no arquivo cilindro.m calcula a rea e o volume de um cilindro. %============================================ %Calcula-se a rea e volume de um cilindro de altura h e raio r %========================================= function [area,volume] = cilindro(h,r) area = 2*pi*r*h+2*pi*r^ 2; volume = pi*r^ 2*h; Para chamar esta funo seja do prompt ou de outro executvel .m, basta digitar uma chamada na forma exemplificada a seguir: [a,v] = cilindro(0.5,1) No prompt ficaria para altura h=0.5 e raio r=1: >> [a,v] = cilindro(0.5,1) a = 9.4248 v = 1.5708

Observaes: Para que o arquivo .m seja localizado pelo Matlab, este deve se encontrar no diretrio atual. O comando pwd do Unix fornecer o caminho atual, por exemplo: >> pwd; /a/home/cenapad/cedric/MATLAB Se o arquivo .m, a ser interpretado pelo Matlab, estiver em outro diretrio diferente do atual, digamos /u/cedric/programas, ento o Matlab ter acesso a ele declarando o caminho com o comando path da seguinte maneira. >> path(path,'/u/cedric/programas');%no Unix >> path(path,'c:\cedric\programas');%no Windows

17.4. Regras para escrever uma function conveniente observar as seguintes caractersticas na definio de uma funo: Escrever comentrios a respeito da funo, tendo especial nfase na primeira linha de comentrio. A primeira linha executvel deve conter a palavra function seguida dos argumentos de sada entre colchetes, se forem mais de um, o sinal = e o nome da funo com argumentos de entrada entre parnteses. Todos os argumentos de retorno devem estar definidos dentro do corpo da funo. Qualquer erro cometido dentro do arquivo .m ser acusado quando este for executado, retornando o formato de um erro de compilao.

18. CONTROLE DE FLUXO 18.1. Estruturas Condicionais Uma estrutura condicional permite a escolha do grupo de comandos a serem executados quando uma dada condio for satisfeita ou no, possibilitando desta forma alterar o fluxo natural de comandos. Esta condio representada por uma expresso lgica. 18.2. Estrutura if-end A estrutura condicional mais simples do MA TLAB : if <condio> <comandos> end Se o resultado da expresso lgica <condio> for 1 ( verdadeiro ) ento a lista de <comandos> ser executada. Se o resultado for 0 ( falso ) os <comandos > no sero executados. Por exemplo, considere o arquivo ex_cond1.m cujo contedo :
a = input('Entre com o valor de a : '); if a >= 0 b = sqrt(a) end

Para execut- lo basta fornecer o seu nome na rea de trabalho >>ex_cond1 >>Entre com o valor de a : 2
b = 1.4142

Neste exemplo, a raiz quadrada de a ser atribuda a b somente se o valor de a for maior ou igual a 0 .

Considere o arquivo banana1.m: custo=5; bananas=10; if bananas>5 custo=0.1*custo; end custo quando executado resultar >>banana1: custo = 0.5000

No exemplo anterior, a expresso bananas > 5 verdadeira, assim o comando : custo=0.1* custo executado. Veja agora o exemplo bananas2.m. custo=5; bananas=5; if bananas>5 custo=0.1*custo; end custo quando executado resultar: >>banana2 custo = 5 Neste exemplo, a expresso bananas > 5 falsa, assim o comando : custo=0.1* custo no foi executado. Assim o custo continua igual a 5. 18.3. Estrutura if-else-end No caso de haver duas alternativas, uma outra estrutura condicional deve ser usada:
if <condio> <comandos 1> else <comandos 0> end

Se o resultado da expresso lgica <condio > for 1 ( verdadeiro ) ento a lista <comandos 1> ser executada. Se <condio> for 0 ( falso ) ento ser a lista <comandos 0> a ser executada. Por exemplo, o programa do arquivo ex_cond2 .m
a = input('Entre com o valor de a : '); if a > 0 b = log(a) else b = exp(a) end

quando executado resultar


>> ex_cond2 Entre com o valor de a : 5 b = 1.6094

Se a for positivo, ento o logaritmo natural de a ser atribudo a b e se a for negativo ou nulo, ento b ser igual ao exponencial de a .

18.4. Estrutura if-elseif-end Quando houver mais de duas alternativas, a estrutura if-else-end do MATLAB torna-se if <condio 1> <comandos 1> elseif <condio 2> <comandos 2> elseif <condio 3> <comandos 3> .. . else <comandos 0> end A lista <comandos 1> ser executada se <condio 1> for igual a 1 (verdadeiro), j a lista <comandos 2> ser executada se <condio 2> for 1 e assim para as outras condies. Se nenhuma das condies for 1 ento <comandos 0> ser executada. Quando a primeira <condio> for satisfeita e os <comandos> executados, a estrutura if-elseif-end ser abandonada, ou seja, o controle do processamento ser transferido para o comando imediatamente aps o end . Por exemplo, ex_cond3.m a = input('Entre com o valor de a : '); if a <= -10 b = exp(a) elseif a < 0 b = 1/a elseif a <= 10 b = a^2 elseif a < 100 b = sqrt(a) else b = 10 end quando executado resultar >> ex_cond3 Entre com o valor de a : 4 b = 16

Deste modo foi executado o primeiro comando para o qual a cond io a<=10 foi satisfeita, ou seja, apesar da condio a<100 ser tambm verdadeiro, o comando referente a ela no foi executado. Assim, na estrutura if-elseif-end executada somente uma nica lista de comandos.

19. ESTRUTURA DE REPETIO A estrutura de repetio faz com que uma sequncia de comandos seja executada repetidamente at que uma dada condio de interrupo seja satisfeita. O MATLAB possui duas estruturas de repetio: as estruturas for-end e a while-end 19.1. Estrutura for-end A estrutura for-end permite que um grupo de comandos seja repetido um nmero especfico de vezes. Sua sintaxe : for <varivel>=<arranjo> <comandos> end onde <varivel> a varivel-de-controle que assume todos os valores contidos no vetor linha <arranjo> . Assim, o nmero de repeties da lista <comandos > igual ao nmero de elementos no vetor <arranjo>. A varivel-de-controle no pode ser redefinida dentro da estrutura for-end . O lao for o controlador de fluxo mais simples e usado na programao MATLAB.

Analisando a expresso: for i=1:5 X(i)=i^2 end pode-se notar que o lao for dividido em trs partes: A primeira parte (i=1) realizada uma vez, antes do lao ser inicializado. A segunda parte o teste ou condio que controla o lao, (i<=5). Esta condio avaliada; se verdadeira, o corpo do lao (X(i)=i^2) executado. A terceira parte acontece quando a condio se torna falsa e o lao termina. O comando end usado como limite inferior do corpo do lao. Vamos considerar um exemplo, executando o programa ex_rep1.m abaixo:
n = input('Valor de n : '); s = 0; n2 = n^2; for i = 1:2:2*n-1 s = s + i; end, n2, s

quando executado resultar


>> estrep1 Valor de n : 5 n2 = 25 s = 25

Exerccios : 1- Crie o vetor x=[0 36 72 108 144 180 216 252 288 324] atravs do comando for (exercicio1.m). Soluo: x(1)=0; for n=2:10 x(n)=x(n-1)+36; end x quando executado resultar >>exercicio1 x = 0 36 72 108 144 180 216 252 288 324

2- Plote 360 pontos de um perodo da funo y=sen(2*pi*x/360), usando o loop for (exercicio2.m). Soluo: for x=1:360 y(x)=sin(2*pi*x/360); end plot(y) quando executado resultar >>exercicio1

Isto , a primeira instruo diz : para n igual a 2 at 10, execute todas os comandos at a instruo de end. No primeiro ciclo do for, n=2, no segundo n=3 e assim por diante, at n=10. Depois do ciclo para n=10, o loop for termina e os comandos aps a instruo end so executados, como o caso da apresentao dos resultados em x. OBS: no Matlab, no muito eficiente construir vetores com for.

19.2. Estrutura while-end A estrutura while-end, ao contrrio da for-end, repete um grupo de comandos um nmero indefinido de vezes. Sua sintaxe
while <condio> <comandos> end

Enquanto a expresso lgica <condio> for verdadeira a lista <comandos> ser repetida. No lao while apenas a condio testada. Por exemplo, na expresso a = 1; b = 15; while a<b, clc a = a+1 b = b-1 pause(1) end disp('fim do loop')

a condio a<b testada. Se ela for verdadeira o corpo do lao, ser exec utado. Ento a condio testada novamente, e se verdadeira o corpo ser executado novamente. Quando o teste se tornar falso o lao terminar, e a execuo continuar no comando que segue o lao aps o end. Ao contrrio do loop for, que executa um conjunto de comandos um nmero fixo de vezes, o loop while executa um conjunto de comandos um nmero indefinido de vezes. Os comandos entre as instrues while e end so executadas enquanto todos os elementos na expresso forem verdadeiras. Exerccio: Construa o vetor y = [64 32 16 4 2 1] , usando o loop while Soluo: num=128; n=0; while num>1 num=num/2; n=n+1; y(n)=num; end y quando executado resultar y= 64

32

16

20. AJUSTE DE CURVAS E INTERPOLAO Este tipo de ferramentas til quando se dispe de um conjunto descontnuo de dados (valores numricos pontuais), e se procura traar uma curva ou superfcie (funo contnua) que contenha estes pontos. Existem diferentes curvas que podem ser utilizadas para interpolar estes ponto s. Podem ser usados distintos graus para o polinmio que interpola, ou ainda podem ser usados polinmios por partes. Quando se usam polinmios por partes pode acontecer que a curvaque interpola os pontos tenha derivada contnua ou no, naqueles pontos conhecidos. Naturalmente surge a questo de que modelo mais apropriado para interpolar os dados. O analista numrico deve saber decidir sobre esta questo, j que o uso de um modelo ou de outro acarretar uma resposta diferente. Nem sempre de um polinmio de grau maior ser obtida uma resposta mais precisa. Caso o analista conhea a priori o comportamento do seu modelo ele poder usar esta informao para a escolha do grau de interpolao. Caso contrrio ele dever procurar obter maior quantidade de medies experimentais para obter um comportamento mais apurado na zona de interesse no domnio do problema. O primeiro exemplo interliga pontos discretos no plano por meio de linhas retas, obtendo-se uma curva linear ou de grau um por partes, figura abaixo.
dados1=[ 0 0;1 20;2 60;3 68;4 77;5 110];%Conjunto de pontos a %ser interpolado disp('Clculo que interpola este conjunto de pontos em x=2.6 e x=4.9,respec.'); y1 = interp1(dados1(:,1), dados1(:,2), 2.6) % valor %interpolado no ponto 2.6 y2 = interp1(dados1(:,1), dados1(:,2), 4.9) % valor %interpolado no ponto 4.9 xi=0:.01:5;%lista no intervalo [0,5] yi = interp1(dados1(:,1), dados1(:,2),xi);% lista yi %interpola a lista xi plot(dados1(:,1), dados1(:,2),'o',xi,yi);% grfico da curva % interpolada

A resposta para os dois valores pontuais : y1 = 64.8000, y2 = 106.7000. Os valores conhecidos para x esto no intervalo [0,5], e os de y em [0,110], a figura mostra a curva deinterpolao. O prximo exemplo corresponde a uma interpolao superficial.
velocidade=[2000,3000,4000,5000,6000]; tempo=[0 1 2 3 4 5]; temperatura = [ 0, 0, 0, 0, 0; 20, 110, 176, 190, 240; 60, ... 180, 220, 285, 327; 68, 240, 349, 380, 428; 77, 310, 450, ... 510, 620; 110, 405, 503, 623, 785]; temp = interp2(velocidade, tempo,temperatura,3800,3.1) %os prximos passos permitem graficar a curva de interpolao vel=2000:100:6000;%40 pontos t=0:0.125:5;%40 pontos [X,Y] = meshgrid(vel,t); Z = interp2(velocidade,tempo,temperatura,X,Y); mesh(X,Y,Z); xlabel('E I X O X'); ylabel('E I X O Y'); zlabel('E I X O Z');

20.1. Comando spline Este tipo de interpolao utiliza polinmios cbicos para, no caso plano, unir cada dois pontos com um polinmio, e cada 4 pontos no espao com uma superfcie polinomial. Ainda a primeira e segunda derivada nestes pontos so contnuas. A figura abaixo mostra a curva spline interpolante do exerccio a seguir. x = [0 1 2 3 4 5]; y = [0 20 60 68 77 110]; temp1 = spline(x,y,2.6); temp2 = spline(x,y,[2.6 4.9]); z = [.5 1.5 2.5 3.5 4.5]; temps = spline(x,y,z); temp1 %resultado temp2 %resultado temps %vetor interpolante da lista z xi=0:0.2:5;%25 pontos yi = spline(x,y,xi);%interpolao da lista xi plot(x,y,'o',xi,yi);%curva interpolante A sada numrica foi: temp1 = 67.3013, temp2 = 67.3013, 105.2020, temps = 2.7917, 42.2083, 66.8750, 70.4167, 89.5833. Observe na figura como a curva suave nos pontos conhecidos.

21. ANIMAO GRFICA 21.1. Animao bidimensional Este exemplo mostra como se constri uma seqncia de grficos. Estes grficos so armazenados em uma matriz M, em seguida o comando movie permite mostrar a seqncia armazenada em M a uma certa taxa de repetio. x = -pi/2:.1:pi/2; for c=1:20, y = sin(2*x+c*pi/10); plot(x,y,'r-'); axis([-pi/2 pi/2 -1 1]); M(c) = getframe; end; movie(M,20,10); A ltima linha de comando significa que os grficos armazenados em M so mostrados 10 vezes a uma taxa de repetio de 20 figuras por segundo. 21.2. Animao tridimensional

O lao que se apresenta a seguir no difere muito daquele apresentado anteriormente. Exemplo: x = -pi/2:.1:pi/2; y = -pi/2:.1:pi/2; [X,Y] = meshgrid(x,y); for c=1:20, Z = sin(2*X+c*pi/10)+1.5*cos(2*Y+c*pi/10); surf(X,Y,Z); M(c) = getframe; end; movie(M,20);%Esta animao pode ser salva

EXERCICIOS DE FIXAO

1- Teste fazendo animaes para outras funes.

22. EXTRAS 22.1. Movimentar textos em grficos (gtext) %=============================================== % Movimentar texto no grafico %=============================================== y = [0 2 5 4 1 0]; plot(y) help pi t = 0:.4:4*pi y = sin(t) z = cos(t); plot(t,y,'.',t,z,'-.') title('Funes') xlabel('t') ylabel('Seno e Cosseno') text(3,0.5,'Seno') gtext('Cosseno') %Aps executar esse cdigo v at o grfico e posicione o cosseno onde quiser. 22.2. Animao com a funo comet %=============================================== % funcao comet %=============================================== t = 0:.01:2*pi; x = cos(2*t).*(cos(t).^2); y = sin(2*t).*(sin(t).^2); comet(x,y) 22.3. Barra de progresso Simples
%=============================================== % Barra de progresso Simples %=============================================== x=input('Digite um valor mximo para a barra de progresso: '); %digite 1000 apenas para ver seu funcionamento barra=waitbar(0,'Calculando...'); for i=1:0.1:x % Aqui aconteceria o loop e a realizao de clculos. waitbar(i/ x); end close(barra); % Fecha a barra.

EXERCICIOS DE FIXAO 1- Implemente esse comandos em algum dos seus programas

Vous aimerez peut-être aussi