




















Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Livro de aprendizagem rápida do funcionamento do MatLab
Tipologia: Manuais, Projetos, Pesquisas
1 / 28
Esta página não é visível na pré-visualização
Não perca as partes importantes!





















Vers˜ao 1.
Agradecimentos O autor agradece aos seus colegas Prof. Ana Maria Tom´e, Prof. Ant´onio Joaquim Teixeira, Prof. Paulo Jorge Ferreira e Prof. Jos´e Lu´ıs Azevedo, pelas sugest˜oes e correc¸c˜oes realizadas neste documento
°c 2002, Jos´e Manuel Neto Vieira ([email protected]) http://www.ieeta.pt/˜vieira/MatlabNumInstante.pdf
O “Matlab num Instante” pode ser distribu´ıdo sujeito `as seguintes restri¸c˜oes:
O Matlab ´e um sistema para c´alculo cient´ıfico que proporciona um ambiente de f´acil utiliza¸c˜ao com uma nota¸c˜ao intuitiva mas poderosa. Permite a realiza¸c˜ao de algoritmos num´ericos sobre matrizes com o m´ınimo de programa¸c˜ao. Al´em disso, no ambiente Matlab ´e poss´ıvel a cria¸c˜ao e manipula¸c˜ao de matrizes sem a necessidade de dimensionamento pr´evio e a manipula¸c˜ao das vari´aveis pode ser realizada de forma interactiva. O termo“Matlab” tem origem na conjuga¸c˜ao dos termos“MATrix” e“LABoratory”. Este documento pretende ser apenas uma introdu¸c˜ao muito breve ao Matlab e permitir a um utilizador n˜ao“iniciado” come¸car a dominar os aspectos mais b´asicos 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 exerc´ıcios.
Para esclarecer a maior parte das d´uvidas acerca da utiliza¸c˜ao de uma dada fun¸c˜ao do Matlab o comando help ´e de grande utilidade. Se se pretender, por exemplo, informa¸c˜ao sobre a fun¸c˜ao sin, basta fazer
Àhelp sin
obtendo-se a seguinte descri¸c˜ao
SIN Sine. SIN(X) is the sine of the elements of X.
O Matlab possui todas as fun¸c˜oes organizadas em grupos e a pr´opria estrutura de direct´orios onde o Matlab ´e armazenado em disco reflecte esse facto. Por exemplo, todas as fun¸c˜oes de ´algebra linear est˜ao armazenadas no direct´orio matfun. Para obter uma lista completa deste tipo de fun¸c˜oes basta fazer
Àhelp matfun
Como n˜ao ´e f´acil decorar os nomes de todas as categorias de fun¸c˜oes, existe uma janela de ajuda mais organizada, bastando para tal escrever o comando
Àhelpwin
Quando se pretende encontrar uma fun¸c˜ao para resolver um problema, mas desconhece-se se existir´a alguma adequada no Matlab, o comando lookfor permite pesquisar as primeiras linhas do“help” de todas fun¸c˜oes da instala¸c˜ao do Matlab. Esta pesquisa ´e adequada para resolver a maior parte das situa¸c˜oes uma vez que a primeira linha do“help” de uma fun¸c˜ao cont´em sempre uma descri¸c˜ao sum´aria da sua funcionalidade. O seguinte exemplo procura pela palavra“inverse”.
Àlookfor inverse Se se pretender que a fun¸c˜ao lookfor pesquise todas as linhas do“help”, pode-se utilizar a op¸c˜ao -all, tal como o seguinte exemplo ilustra.
Àlookfor -all inverse
O elemento da linha i e da coluna j de uma matriz A ´e designado por A (i, j). Por exemplo o elemento da linha 1 e coluna 3 da matriz A ´e designado por A (1, 3). Em nota¸c˜ao Matlab, para obter o elemento A (1, 3) definida anteriormente, pode-se escrever ÀA(1,3) e obt´em-se ans= 3 Para alterar o valor do elemento A (1, 3) para 7 basta fazer ÀA(1,3)= 7 Os ´ındices das matrizes s˜ao n´umeros inteiros positivos pertencentes ao intervalo [1... N] em que N depende da mem´oria dispon´ıvel, e podem ser vectores declarados anteriormente. Se pretendermos por exemplo, extrair a segunda linha da matriz A podemos fazer Àv= A(2,[1 2 3]) v= 4 5 6 ou declarando primeiro um vector para os ´ındices das colunas Àk= [1 2 3] Àv= A(2,k) v= 4 5 6
A cria¸c˜ao de vectores elemento a elemento ´e bastante morosa e para matrizes de grandes dimens˜oes quase irrealiz´avel. O Matlab permite gerar sequˆencias de n´umeros de forma r´apida se fizermos uso do operador“:”. Se quisermos gerar o vector a = [1, 2 , 3 ,... , 10] podemos fazer Àa= 1: A nota¸c˜ao geral para o operador “:” ´e a seguinte
N´umero inical : incremento : N´umero final
e permite a gera¸c˜ao de sequˆencias de n´umeros inteiros como no exemplo anterior ou mesmo de n´umeros reais. Eis alguns exemplos: Àe= 0:pi/20:2*pi Àf= 10:-1:- O operador“:” pode ser utilizado na gera¸c˜ao de vectores de ´ındices obtendo-se uma nota¸c˜ao muito compacta. Se quisermos obter as colunas ´ımpares da matriz A podemos fazer ÀB=A(1:2,1:2:3) No caso anterior s˜ao indexadas todas as linhas da matriz. Para simplificar a nota¸c˜ao, quando n˜ao se conhece exactamente o n´umero de linhas de uma matriz, pode-se utilizar a nota¸c˜ao ÀB=A(:,1:2:3)
Exerc´ıcio 1 Gere uma sequˆencia de n´umeros pares com in´ıcio em 4 e a terminar no n´umero 100.
Exerc´ıcio 2 Gere uma sequˆencia num´erica decrescente com in´ıcio em 5 e a terminar em -5.
Exerc´ıcio 3 Gere uma sequˆencia num´erica com 100 elementos pertencentes ao intervalo [0... 1].
Exerc´ıcio 4 Considere uma matriz A com 20 linhas e 30 colunas. Construa um comando que permita extrair para uma matriz B uma sub-matriz de A constitu´ıda pelas linhas de 10 a 15 e as colunas de 9 a 12.
Exerc´ıcio 5 Gere uma sequˆencia de n´umeros m´ultiplos de 3 compreendidos entre 100 e 132, dispostos num vector por ordem decrescente.
Exerc´ıcio 6 Gere uma sequˆencia a come¸car em π e a acabar em −π com um passo de −π/ 15.
Express˜oes
O Matlab permite a constru¸c˜ao de express˜oes matem´aticas sem qualquer declara¸c˜ao do formato num´erico ou dimens˜ao das matrizes. Existem quatro constituintes b´asicos nas express˜oes do Mat- lab:
Todas as vari´aveis do Matlab s˜ao do tipo matriz e a sua cria¸c˜ao ´e autom´atica. Por exemplo, o comando
ÀCusto total= 1000
resulta na cria¸c˜ao em mem´oria de uma matriz de 1 × 1 com o valor 1000. O Matlab distingue as letras mai´usculas das min´usculas nos nomes das vari´aveis e s´o toma em considera¸c˜ao os primeiros 31 caracteres. Para visualizar o valor de uma vari´avel basta escrever o seu nome. Existe uma vari´avel especial que ´e utilizada pelo Matlab quando n˜ao se atribui o resultado de uma express˜ao a qualquer vari´avel. Esta vari´avel designa-se por“ans” (do termo“answer”, resposta) e pode ser utilizada numa sess˜ao interactiva para continua¸c˜ao dos c´alculos, tal como o exemplo seguinte demonstra
À2*sin(2) ans=
Àans/ ans =
O Matlab utiliza uma nota¸c˜ao standard para a representa¸c˜ao dos n´umeros, admitindo nota¸c˜ao cient´ıfica e n´umeros complexos. A unidade imagin´aria j = sqrt(−1) ´e representada no Matlab pelas letras i ou j. Como estas letras podem ser utilizadas no nome de outras vari´aveis conv´em ter o cuidado de confirmar o seu valor antes de as usar. A seguir ilustram-se alguns exemplos:
1+i 10j 3e 10e6j 10e-2 -2.3e-
Na constru¸c˜ao de express˜oes podemos utilizar operadores, fun¸c˜oes e vari´aveis. Eis alguns exemplos:
Àr= (pi+1)/(pi-1) r =
Àa= abs(4+3i) a= 5 Àt= angle(4+3i) t=
Àa= 0/ Warning: Divide by zero. a = NaN Àx= sqrt(-2) x = 0 + 1.4142i Àx= log(-1) x= 0 + 3.1416i
Existe no ambiente Matlab um conjunto de fun¸c˜oes para manipular polin´omios. A defini¸c˜ao de polin´omios ´e feita criando vectores cujos elementos s˜ao os coeficientes do polin´omio ordenados por potˆencia decrescente tal como o exemplo seguinte ilustra. Para representar o polin´omio p(x) = x^2 − 3 x + 2, cria-se o vector p=[1 -3 2]; e para calcular as suas ra´ızes existe a fun¸c˜ao r= roots(p) r= 2 1 Para obter os coeficientes de um polin´omio a partir das ra´ızes pode-se utilizar a fun¸c˜ao poly(r) ans= 1 -3 2 Tamb´em ´e poss´ıvel calcular o valor de um polin´omio num conjunto de pontos utilizando a fun¸c˜ao polyval tal como o exemplo ilustra polyval(p,r) ans= 0 0 e que, como se pode ver, calculou o valor do polin´omio nos seus zeros. O produto entre dois polin´omios ´e obtido atrav´es da fun¸c˜ao conv (convolu¸c˜ao). O exemplo seguinte ilustra o produto entre os polin´omios x^2 + 1 e x^3 + x − 1 dado por x^5 + 2x^3 − x^2 + x − 1 p1= [1 0 1] p2= [1 0 1 -1] conv(p1,p2) ans= 1 0 2 -1 1 -
Exerc´ıcio 7 Calcule o seno, o coseno, a tangente, a ra´ız quadrada e a ra´ız c´ubica de π/ 2.
Exerc´ıcio 8 Calcule o logaritmo e a ra´ız quadrada de -1.
Exerc´ıcio 9 Calcule o valor da fun¸c˜ao ex^ em 100 pontos do intervalo [− 1... 1].
Exerc´ıcio 10 Calcule o valor da fun¸c˜ao sin(x + pi/10) ∗ cos(x) em 100 pontos do intevalo [−π... π].
Exerc´ıcio 11 Calcule o produto dos polin´omios x^6 + 10 e x^2 − 2 x + 3.
Exerc´ıcio 12 Obtenha o polin´omio cujas ra´ızes s˜ao os n´umeros inteiros 1, 2 e 3.
Exerc´ıcio 13 Calcule os zeros do seguinte polin´omio p(x) = x^3 + 4x^2 − 3 x + 1. Calcule o valor do polin´omio em 100 pontos da forma x = ejω^ com ω ∈ [0... 2 π].
Exerc´ıcio 14 Calcule o valor do m´odulo do polin´omio p(x) = 1/
x^2 + 1
em 100 pontos da forma x = ejω^ com ω ∈ [0... 2 π].
Manipula¸c˜ao de matrizes
Esta sec¸c˜ao introduz alguns conceitos elementares sobre a cria¸c˜ao e manipula¸c˜ao de matrizes.
As cinco fun¸c˜oes seguintes permitem a cria¸c˜ao de algumas matrizes elementares:
Vejamos alguns exemplo de utiliza¸c˜ao destas fun¸c˜oes: ÀZ= zeros(2,5) Z = 0 0 0 0 0 0 0 0 0 0 Àa= ones(2,3)* a = 3 3 3 3 3 3 Àn= round(3rand(1,10)) n = 3 1 2 1 3 2 1 0 2 1 ÀA= randn(1,3)+jrandn(1,3) A = -0.43256 + 0.28768i -1.6656 - 1.1465i 0.12533 + 1.1909i
E poss´^ ´ ıvel remover de uma dada matriz qualquer conjunto de linhas e colunas. Para tal, basta atribuir o valor de uma matriz vazia definida por“[]” `as linhas e colunas que se pretende remover. No exemplo que se segue, elimina-se a 2acoluna da matriz A.
Àa= [1 2; 3 4]; ÀA= [a a; a a] A = 1 2 1 2 3 4 3 4 1 2 1 2 3 4 3 4 ÀA(:,2)= [] A = 1 1 2 3 3 4 1 1 2 3 3 4 A remo¸c˜ao de um elemento isolado de uma matriz n˜ao ´e poss´ıvel uma vez que esta deixaria de respeitar as propriedades de uma matriz
ÀA(1,2)=[] ??? Indexed empty matrix assignment is not allowed.
Exerc´ıcio 22 Gere uma matriz com dimens˜ao 8 × 8 constitu´ıda por n´umeros aleat´orios obtidos com a fun¸c˜ao randn, e obtenha uma sub-matriz constitu´ıda pelas colunas de ´ındice ´ımpar utilizando a t´ecnica de remo¸c˜ao de colunas.
Exerc´ıcio 23 Resolva o exerc´ıcio anterior utilizando uma solu¸c˜ao sem “[]”.
Exerc´ıcio 24 Gere um vector com todos os n´umeros inteiros de 1 a 101 e elinine os elementos pares.
Gr´aficos
A gera¸c˜ao de gr´aficos no Matlab representa um dos seus aspectos mais ´uteis. Nesta sec¸c˜ao ser˜ao apresentados alguns dos comandos mais importantes para a cria¸c˜ao de gr´aficos a partir dos valores armazenados em matrizes.
A fun¸c˜ao plot ´e a mais utilizada no Matlab para gerar gr´aficos variando o seu comportamento con- soante os parˆametros de entrada. A sua forma mais simples consiste em passar como entrada apenas um vector:
Àplot(y)
O gr´afico gerado apresenta em abcissas os ´ındices i dos elementos do vector e em ordenadas o valor de cada um dos elementos do vector. Tamb´em ´e poss´ıvel utilizar um segundo vector para o eixo das abcissas tal como no exemplo seguinte:
Àw=0:pi/100:2*pi; Àx= sin(w); Àplot(w,x)
-1 0 1 2 3 4 5 6 7
-0.
-0.
-0.
-0.
0
1
Figura 1:
-1 0 1 2 3 4 5 6 7
-0.
-0.
-0.
-0.
0
(^1) sin cossin*cos
Figura 2:
A fun¸c˜ao plot admite a representa¸c˜ao simultˆanea de v´arias curvas, acrescentando mais argumentos de entrada, devendo os vectores possuir o mesmo n´umero de amostras. Vejamos um exemplo:
Àw=0:pi/100:2pi; Àx1= sin(w); Àx2= sin(w+pi/2); Àx3= x1.x2; Àplot(w,x1,w,x2,w,x3) Àlegend(’sin’,’cos’,’asin*cos’)
A fun¸c˜ao plot permite escolher o tipo de linha, a cor, etc; e existem ainda fun¸c˜oes para por exemplo, acrescentar etiquetas aos eixos, criar uma grelha, etc, (ver o “help” da fun¸c˜ao plot para referˆencia). Destas fun¸c˜oes destacam-se as seguintes:
-1 -1 -0.5 0 0.5 1
-0.
-0.
-0.
-0.
0
1
Exerc´ıcio 34 Visualize em gr´afico a parte real e a parte imagin´aria da fun¸c˜ao ejω, para valores de ω ∈ [0... 2 π] e passo de π/ 10.
Para visualizar uma fun¸c˜ao de duas vari´aveis da forma z = f (x, y) o Matlab possui a fun¸c˜ao mesh. Para utilizar esta fun¸c˜ao ´e necess´ario gerar duas matrizes X e Y em que a primeira possui colunas idˆenticas e a segunda linhas idˆenticas, com os valores de x e y em que se pretende calcular a fun¸c˜ao f. A fun¸c˜ao meshgrid gera as matrizes X e Y a partir dos valores iniciais, finais e respectivo incremento. O seguinte exemplo ilustra a forma de gerar um gr´afico 3D da fun¸c˜ao sin (r) /r, com r =
p x^2 + y^2. À[X,Y] = meshgrid(-8:.5:8); ÀR = sqrt(X.^2 + Y.^2) + eps; ÀZ = sin(R)./R; Àmesh(X,Y,Z)
O ambiente Matlab
A janela de comando do Matlab possui algumas potencialidades na apresenta¸c˜ao dos resultados, gest˜ao da vari´aveis, formata¸c˜ao num´erica dos resultados, edi¸c˜ao da linha de comandos, etc. Nesta sec¸c˜ao vamos descrever algumas das suas potencialidades.
Todas as vari´aveis do Matlab s˜ao guardadas na “´area de trabalho” (“workspace”). Para visualizar as vari´aveis que est˜ao na “´area de trabalho” num dado momento podemos utilizar os comados who e
whos. O primeiro apresenta no ecran uma lista abreviada das vari´aveis indicando apenas o seu nome, enquanto que o segundo apresenta tamb´em o espa¸co ocupado em mem´oria, dimens˜ao, etc. Para apagar vari´aveis da mem´oria pode-se utilizar o comando clear. Para apagar por exemplo as vari´aveis x e b faz-se
Àclear x b
O comando clear sem argumentos apaga todas as vari´aveis armazenadas em mem´oria.
O comando format controla a forma como os valores num´ericos s˜ao apresentados. Este comando controla apenas a forma com os valores s˜ao apresentados e n˜ao a forma como estes s˜ao representados internamente. Os seguintes exemplos ilustram os formatos mais comuns.
Àa= [1/5 pi] format short 0.2000 3. format short e 2.0000e-001 3.1416e+ format long 0.20000000000000 3. format long e 2.000000000000000e-001 3.141592653589793e+ Uma op¸c˜ao ´util do comando format ´e Àformat compact
que elimina as linhas em branco extra introduzidas entre a apresenta¸c˜ao das vari´aveis permitindo uma apresenta¸c˜ao dos resultados mais compacta.
Quando as matrizes s˜ao de grande dimens˜ao torna-se bastante inc´omodo para o utilizador a apresen- ta¸c˜ao do resultado no ecran de todos os c´alculos efectuados. Para evitar a apresenta¸c˜ao dos resultados basta colocar no final da linha de comando um ponto e v´ırgula tal como o seguinte exemplo demonstra:
Àa= [1/5 pi];
A janela de comando do Matlab permite a edi¸c˜ao de comandos escritos anteriormente. Se por exemplo se entrou o seguinte comando:
Àa= sqrt(1:10] | Improper function reference. A ’’,’’ or ’’)’’ is expected.
o Matlab devolve, como se pode constatar, um erro de sintaxe. Para alterar a linha e substituir o parˆentesis recto por um curvo, basta carregar na tecla ↑ que a linha aparecer´a de novo. Com as teclas ←− e −→ desloca-se o cursor ao longo da linha. O Matlab guarda uma lista de todos os comandos introduzidos numa sess˜ao. Se quiser obter um comando introduzido anteriormente, basta escrever os primeiros caracteres desse comando e carregar em ↑ para que o comando apare¸ca. A lista seguinte mostra as teclas de edi¸c˜ao dispon´ıveis
Exerc´ıcio 36 Ap´os ter criado as vari´aveis A e b tal como ´e indicado no texto, execute o comando whos e compare a mem´oria ocupada por cada uma delas. Visualize a vari´avel b nos seguintes formatos num´ericos: long, short e e long e. Finalmente, apague as vari´aveis e verifique com o comando whos.
Quando se pretende executar repetidamente um conjunto de comandos muito longo, ter de os escrever torna-se muito moroso. Para resolver este problema, ´e poss´ıvel colocar num ficheiro de texto com a extens˜ao “.m” o conjunto de comandos que se pretende executar. Para executar os comandos guardados no ficheiro, basta escrever na janela de comando do Matlab o nome do ficheiro sem a extens˜ao. Para criar e come¸car a editar um ficheiro basta escrever o comando edit, para que arranque um pequeno editor de texto com “debugging” integrado.
T´opicos sobre matrizes
Nesta sec¸c˜ao iremos descobrir mais algumas das possibilidades que o Matlab oferece para operar com matrizes.
E poss´^ ´ ıvel resolver com o Matlab diversos problemas da ´algebra linear, sendo f´acil realizar c´alculos elaborados com matrizes, como por exemplo, o produto de duas matrizes, invers˜ao de matrizes, c´alculo dos valores pr´oprios, etc. Dadas as matrizes A e B, por exemplo, a sua soma ´e calculada da seguinte forma:
ÀA= rand(4); ÀB= rand(4); ÀC= A+B;
Para calcular o produto entre as duas matrizes anteriores basta fazer
ÀC= A*B
que efectua produtos internos entre as linhas de A e as colunas de B. Se quisermos calcular o produto interno entre dois vectores linha x e y
Àx= 1: Ày= 3: Àx*y’ ans= 50
enquanto que o produto externo entre estes vectores ´e dado por
À A = x’*y A = 3 4 5 6 6 8 10 12 9 12 15 18 12 16 20 24 O determinante da matriz A pode ser calculado fazendo apenas Àd= det(A)
e se quisermos calcular os valores pr´oprios da matriz A, pode-se utilizar o comando
Àeig(A)
e a inversa da matriz A obt´em-se fazendo
Àinv(A)
E igualmente poss´^ ´ ıvel calcular a n potˆencia de uma matriz quadrada fazendo simplesmente
ÀA^n
e se se pretender calcular o polin´omio caracter´ıstico de uma matriz temos
Àp= poly(A) p= 1 2.1 1.1 -5 2
o que indica que o polin´omio caracter´ıstico
det (A − λI)
´e
λ^4 + 2. 1 λ^3 + 1. 1 λ^2 − 5 λ^1 + 2
Exerc´ıcio 37 Construa um vector linha x constitu´ıdo pelos n´umeros inteiros pares pertencentes ao intervalo [1... 8]. Calcule os valores pr´oprios do produto externo de x com x.
Exerc´ıcio 38 Resolva o seguinte sistema de equa¸c˜oes com o Matlab
x + 2y − z = 10 2 x − 7 y = − 1 −x + 3y − 4 z = 0
Verifique com o Matlab a solu¸c˜ao obtida.
Exerc´ıcio 39 Crie uma matriz quadrada A com a fun¸c˜ao rand e calacule os seus valores pr´oprios. Verifique que A e os seus valores pr´oprios satisfazem a equa¸c˜ao caracter´ıstica de A. Nota: utilize a fun¸c˜ao polyval.
Exerc´ıcio 40 Verifique que fazendo o produto externo entre um vector coluna v e um vector linha preenchido com um n´umero n de uns, se obt´em uma matriz com n colunas iguais a v.
Exerc´ıcio 41 Calcule os valores pr´oprios da matriz sim´etrica B do exerc´ıcio 39 e verifique que pelo menos um deles ´e superior `a unidade. Calcule A^20 e verifique que os elementos da matriz resul- tante aumentaram de valor. Calcule agora
20
e verifique que os elementos da matriz resultante diminuiram de amplitude e que os valores pr´oprios s˜ao todos inferiores `a unidade.
Em muitas situa¸c˜oes pretende-se efectuar opera¸c˜oes aritm´eticas com matrizes aplicando a opera¸c˜ao entre os elementos das matrizes. Para transformar um operador matricial na forma elemento-a- elemento, basta acrescentar o car´acter “.” antes do operador. Note-se que no caso da adi¸c˜ao “+” e da subtra¸c˜ao “-” n˜ao existe qualquer diferen¸ca para os operadores “.+” e “.-” respectivamente. O exemplo seguinte ilustra o produto elemento-a-elemento de duas matrizes com a mesma di- mens˜ao:
ÀA= [1 2 3; 4 5 6] ÀB= [2 3 4; 9 8 7] ÀA.*B ans= 2 6 12 36 40 42 Vejamos agora uma lista de operadores elemento-a-elemento