You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Tutorial</strong> <strong>do</strong> <strong>MATLAB</strong><br />
São necessários alguns coman<strong>do</strong>s básicos para usar o programa <strong>MATLAB</strong>. Este tutorial<br />
resumi<strong>do</strong> descreve esses coman<strong>do</strong>s. Você precisa criar vetores e matrizes, alterá-los e operar<br />
com eles. To<strong>do</strong>s eles são coman<strong>do</strong>s curtos e de alto nível, pois o <strong>MATLAB</strong> trabalha<br />
constantemente com matrizes. Acredito que vocês vão gostar <strong>do</strong> poder que esse software<br />
fornece ao usuário para trabalhar com álgebra linear por meio de várias instruções resumidas:<br />
criar E<br />
E = eye(3)<br />
criar u<br />
u = E(:,1)<br />
1<br />
mudar E<br />
E(3,1) = 5<br />
multiplicar Eu<br />
υ = E ∗ u<br />
A palavra “eye” representa a matriz identidade. A submatriz u = E(:,1) seleciona a coluna 1. A<br />
instrução E(3,1) = 5 reconfigura a entrada (3,1) para 5. O coman<strong>do</strong> E ∗ u multiplica as matrizes<br />
E e u. To<strong>do</strong>s esses coman<strong>do</strong>s se repetem em nossa lista a seguir. Veja um exemplo de inversão<br />
de uma matriz para solucionar um sistema linear:<br />
criar A<br />
A = ones(3)+ eye(3)<br />
criar b<br />
b=A(:,3)<br />
inverter A<br />
C = inv(A)<br />
resolver Ax = b<br />
x = A\b ou<br />
x = C ∗ b<br />
A matriz com to<strong>do</strong>s os ones foi acrescentada ao eye(3) e b é sua terceira coluna. A seguir, inv(A)<br />
produz a matriz inversa (normalmente em decimais; para frações, use format rat). O sistema<br />
Ax = b é resolvi<strong>do</strong> por x = inv(A) ∗ b, que é a forma mais lenta. O coman<strong>do</strong> barra invertida<br />
x = A\b usa a eliminação gaussiana se A for quadra<strong>do</strong> e nunca calcula a matriz inversa. Quan<strong>do</strong><br />
o la<strong>do</strong> direito b se iguala à terceira coluna de A, a solução x deverá ser [0 0 1]´. (O transpose<br />
symbol ´ transforma x em um vetor coluna). A seguir, A ∗ x seleciona a terceira coluna de A, e<br />
teremos Ax = b.<br />
Alguns comentários. O símbolo <strong>do</strong> comentário é %:<br />
% Os símbolos a e A são diferentes: o <strong>MATLAB</strong> diferencia maiúsculas de minúsculas.<br />
% Digite help slash para uma descrição de como usar o símbolo de barra invertida. A<br />
palavra help pode ser seguida de um símbolo <strong>do</strong> <strong>MATLAB</strong> ou <strong>do</strong> nome <strong>do</strong> coman<strong>do</strong> ou<br />
<strong>do</strong> nome <strong>do</strong> arquivo-M.
Obs.: O nome <strong>do</strong> coman<strong>do</strong> está em letra maiúscula na descrição fornecida pela<br />
Ajuda, mas deve ser digita<strong>do</strong> em letra minúscula ao usar o programa. E a barra<br />
invertida A\b é diferente quan<strong>do</strong> A não for quadra<strong>do</strong>.<br />
% Para exibir to<strong>do</strong>s os 16 dígitos, digite format long. O format short normal fornece 4<br />
dígitos após o decimal.<br />
% Um ponto e vírgula após um coman<strong>do</strong> evita a exibição <strong>do</strong> resulta<strong>do</strong>.<br />
A = ones(3); não exibirá a matriz identidade 3 × 3.<br />
% Use o cursor seta para cima para voltar aos coman<strong>do</strong>s anteriores.<br />
Como inserir um vetor coluna ou vetor linha<br />
tem uma linha com três componentes (matriz 1 × 3)<br />
tem três linhas separadas por ponto e vírgula (matriz 3 × 1)<br />
ou é o vetor u transposto<br />
gera o vetor linha = [2 3 4 5] com passos unitários<br />
assume passo 2 para fornecer u = [1 3 5 7]<br />
Como inserir matriz (uma linha de cada vez)<br />
A = [1 2 3; 4 5 6] tem duas linhas (sempre um ponto e vírgula entre as linhas)<br />
A = [1 2 3 também produz a matriz A mas é mais difícil de digitar<br />
4 5 6]<br />
B = [1 2 3; 4 5 6]´ é a transposta de A. Por isso, A T é A´ no <strong>MATLAB</strong><br />
Como criar matrizes especiais<br />
diag produz a matriz diagonal com vetor υ na diagonal<br />
toeplitz<br />
toeplitz<br />
ones<br />
coluna<br />
fornece a matriz diagonal-constante simétrica com como primeira linha e primeira<br />
fornece a matriz simétrica com diagonal-constante com como primeira coluna<br />
e como primeira linha<br />
fornece uma matriz n x n de um´s<br />
2
zeros(n) fornece matriz n x n somente de zeros<br />
eye (n) fornece matriz identidade n x n<br />
rand(n) fornece matriz n x n com entradas aleatórias entre 0 e 1 (distribuição uniforme)<br />
randn(n) fornece matriz n x n com entradas normalmente distribuídas (média 0 e variância 1)<br />
one s(m, n) zeros(m,n) rand(m,n) fornecem matrizes m x n<br />
ones(size (A)) zeros(size (A)) eye(size A)) fornecem matrizes com o mesmo formato de A<br />
Como alterar entradas em uma dada matriz A<br />
A(3,2) = 7 redefine a entrada (3,2) para igualar a 7<br />
A(3, :) = redefine a terceira linha para igualar<br />
A(:,2) = redefine a segunda coluna para igualar a<br />
O símbolo <strong>do</strong>is pontos : significa to<strong>do</strong>s (todas as colunas ou todas as linhas)<br />
A([2 3], :) = A([3 2], :) permuta as filas 2 e 3 de A<br />
Como criar submatrizes de uma matriz A de m x n<br />
A(i, j) retorna a entrada (i, j) da matriz A (escalar = matriz 1 x 1)<br />
A(i,: ) retorna a linha i de A (como vetor linha)<br />
A(:, j) retorna a coluna j de A (como vetor coluna)<br />
A(2 : 4,3 : 7) retorna as linhas de 2 a 4 e as colunas de 3 a 7 (como matriz 3 x 5)<br />
A([2 4],:) retorna linhas 2 e 4 e todas as colunas (como matriz 2 x n )<br />
A(;) retorna uma coluna longa formada pelas colunas de A ( matriz mn x 1)<br />
triu(A) define todas as entradas abaixo da diagonal principal como- zero (triangular superior)<br />
tril(A) define todas as entradas acima da diagonal principal como zero (triangular inferior)<br />
Inversão e multiplicação matricial<br />
A ∗ B fornece a matriz produto AB (se A pode multiplicar B)<br />
A. ∗ B fornece o produto entrada por entrada (se dimensão(A) = dimensão (B)<br />
inv(A) fornece A -1 se A for quadrada e puder for inversível<br />
pinv(A) fornece a pseu<strong>do</strong>-inversade A<br />
A\B fornece inv(A) ∗ B se inv(A) existir: backlash é a divisão à esquerda<br />
x = A\b fornece a solução para Ax = b se inv(A) existir<br />
Veja help slash quan<strong>do</strong> A for uma matriz retangular!<br />
3
Números e matrizes associadas a A<br />
det(A) é odeterminante (se A for uma matriz quadrada)<br />
rank(A) é o posto (número de pivôs = dimensão <strong>do</strong> espaço da linha e <strong>do</strong> espaço da coluna)<br />
size(A) é o par de números [m n]<br />
trace(A) é o traço = soma das entradas diagonais = soma <strong>do</strong>s autovalores<br />
null(A) é a matriz cujas colunas n - r são uma base ortogonal para o espaço nulo de A<br />
orth(A) é a matriz cujas colunas r são uma base ortogonal para o espaço de coluna de A<br />
Exemplos<br />
E = eye(4);E(2,1) = -3 cria uma matriz elementar de eliminação 4 x 4<br />
E ∗ A subtrai 3 vezes a linha 1 de A da linha 2.<br />
B = [A b] cria a matriz aumentada com b como coluna extra<br />
E = eye(3); P = E([2 1 3],:) cria uma matriz de permutação<br />
Observe que triu(A) + tril(A) – diag(diag(A)) se iguala a A<br />
Arquivos-M construí<strong>do</strong>s para fatorações de matriz (to<strong>do</strong>s são<br />
importantes!)<br />
[L, U, P] = lu(A) fornece três matrizes com PA = LU<br />
e – eig (A) é um vetor que contém os autovalores de A<br />
[S,E] = eig (A) fornece uma matriz diagonal E de autovalores e uma matriz S de autovetores<br />
com AS = SE. Se A não for diagonalizável (poucos autovetores) então S não será<br />
inversível.<br />
[Q, R] = qr(A) fornece uma matriz Q ortogonal m x n e uma R triangular m x n com A = QR<br />
Crian<strong>do</strong> arquivos-M<br />
Os arquivos-m são arquivos de texto terminan<strong>do</strong> com a extensão .m, os quais o <strong>MATLAB</strong> usa<br />
para funções e roteiros. Um roteiro é uma seqüência de coman<strong>do</strong>s que podem ser executa<strong>do</strong>s<br />
com freqüência e podem ser coloca<strong>do</strong>s em um arquivo-m de mo<strong>do</strong> que os coman<strong>do</strong>s não<br />
precisem ser digita<strong>do</strong>s novamente. Os demos <strong>do</strong> <strong>MATLAB</strong> são exemplos desses roteiros. Um<br />
exemplo é o demo chama<strong>do</strong> house. A maioria das funções <strong>do</strong> <strong>MATLAB</strong> é, na verdade,<br />
constituída de arquivos-m que podem ser visualiza<strong>do</strong>s escreven<strong>do</strong>-se type xxx onde xxx é o<br />
nome da função.<br />
4
Para escrever seus próprios roteiros ou funções, você precisa criar um novo arquivo de texto<br />
com qualquer nome de sua preferência, desde que termine com .m, para permitir que o<br />
<strong>MATLAB</strong> reconheça o arquivo. Arquivos de texto podem ser cria<strong>do</strong>s, edita<strong>do</strong>s e salvos com<br />
qualquer editor de texto como emacs, EZ ou vi. Um arquivo de texto é, simplesmente, uma lista<br />
de coman<strong>do</strong>s <strong>MATLAB</strong>. Quan<strong>do</strong> se digita o nome <strong>do</strong> arquivo no prompt <strong>do</strong> <strong>MATLAB</strong>, o<br />
conteú<strong>do</strong> <strong>do</strong> arquivo será executa<strong>do</strong>. Para que um arquivo-m seja uma função, é preciso iniciar<br />
com a palavra function seguida pelas variáveis de saída entre colchetes, o nome da função e as<br />
variáveis de entrada.<br />
Exemplos<br />
function [C] = mult(A)<br />
r = rank(A);<br />
C = A´∗ A;<br />
Salve os coman<strong>do</strong>s acima em um arquivo de texto nomea<strong>do</strong> como mult.m . Essa função toma<br />
uma matriz A e retorna o produto matricial C. A variável r não é devolvida por que não foi<br />
incluída como uma variável de saída. Os coman<strong>do</strong>s são segui<strong>do</strong>s por ; de mo<strong>do</strong> que não serão<br />
impressos na janela <strong>do</strong> <strong>MATLAB</strong> toda vez que forem executa<strong>do</strong>s. Isso é útil quan<strong>do</strong> se trata de<br />
grandes matrizes. Eis um outro exemplo:<br />
function [V, D, r] = properties (A)<br />
% Esta função encontra rank, eigenvalues e eigenvectors de A<br />
[m,n] =size(A);<br />
se m = = n<br />
[V,D] =eig(A);<br />
r=rank(A);<br />
else<br />
disp (´Error: A matriz deve ser quadrada´);<br />
end<br />
Aqui a função toma a matriz A como entrada e retorna duas matrizes e o posto (rank) como<br />
resulta<strong>do</strong>. O % é usa<strong>do</strong> como comentário. A função verifica se a matriz de entrada é quadrada e<br />
a seguir encontra o posto, os autovalores e os autovetores de uma matriz A. Digitan<strong>do</strong>-se<br />
properties(A) o retorno será somente o primeiro resulta<strong>do</strong>, V, a matriz de autovetores. Para obter<br />
os três resulta<strong>do</strong>s, você precisará digitar [V, D, r}=properties(A).<br />
5
Manten<strong>do</strong> um diário de seu trabalho<br />
O coman<strong>do</strong> diary (‘file’) instrui o <strong>MATLAB</strong> a registrar tu<strong>do</strong> o que é feito na janela <strong>do</strong><br />
<strong>MATLAB</strong> e a salvar os resulta<strong>do</strong>s no arquivo denomina<strong>do</strong> ‘file’. Ao digitar diary on ou diary<br />
off você alterna o registro. Arquivos de diários antigos podem ser visualiza<strong>do</strong>s por meio de um<br />
editor de texto, ou impresso usan<strong>do</strong>-se lpr em Unix. No <strong>MATLAB</strong>, eles podem ser visualiza<strong>do</strong>s<br />
com o coman<strong>do</strong> type file.<br />
Salvan<strong>do</strong> suas variáveis e matrizes<br />
O coman<strong>do</strong> diary salva os coman<strong>do</strong>s que você digitou, assim como o resulta<strong>do</strong> <strong>do</strong> <strong>MATLAB</strong>,<br />
mas não salva o conteú<strong>do</strong> de suas variáveis e matrizes. Essas variáveis podem ser listadas pelo<br />
coman<strong>do</strong> whos que também lista os tamanhos das matrizes. O coman<strong>do</strong> save ‘xxx’ salvará as<br />
matrizes e todas as variáveis listadas pelo coman<strong>do</strong> whos no arquivo chama<strong>do</strong> xxx. O<br />
<strong>MATLAB</strong> rotula esses arquivos com a extensão .mat em vez de .m, que são roteiros ou funções.<br />
Os arquivos xxx.mat podem ser li<strong>do</strong>s pelo <strong>MATLAB</strong> mais tarde digitan<strong>do</strong>-se load xxx.<br />
Gráficos<br />
O coman<strong>do</strong> mais simples é plot (x, y) que utiliza <strong>do</strong>is vetores x e y <strong>do</strong> mesmo comprimento. Os<br />
pontos ( xi , yi) serão impressos e conecta<strong>do</strong>s por linhas sólidas.<br />
Se não houver vetor x o <strong>MATLAB</strong> assumirá que x(i)=i. Então plot (y) tem espaçamento<br />
igual no eixo-x: os pontos são (i, y(i)).<br />
O tipo e a cor da linha entre os pontos poderão ser altera<strong>do</strong>s por um terceiro argumento. O<br />
default sem argumento é uma linha sólida negra “-“. Use help plot para muitas opções, entre as<br />
quais indicamos algumas:<br />
<strong>MATLAB</strong> 5: plot (x, y,´r + :´) imprime em r = vermelho com + para pontos e linha pontilhada<br />
<strong>MATLAB</strong> 4: plot (x, y,´- -´) é uma linha em traços e plot (x, y,´.´) é uma linha pontilhada<br />
Você pode omitir as linhas e imprimir somente pontos discretos de várias maneiras:<br />
plot (x, y, ´o´) fornece círculos. Outras opções são ´+´ ou ´x´ ou ´∗´<br />
Para <strong>do</strong>is gráficos nos mesmos eixos use plot (x, y, X, Y). Substitua plot por loglog ou<br />
semilogy ou semilogx para alterar um ou ambos os eixos para a escala de logaritmos.<br />
6
O coman<strong>do</strong> axis ([a b c d]) colocará o gráfico em uma escala que se ajuste ao retângulo a ≤ x ≤<br />
b, c ≤ y ≤ d. Para dar nome ao gráfico ou rotular o eixo-x ou o eixo-y coloque o nome deseja<strong>do</strong><br />
entre aspas, como nesses exemplos:<br />
title (‘altura <strong>do</strong> satélite’) xlabel (‘tempo em segun<strong>do</strong>s’) ylabel (‘altura em metros’)<br />
O coman<strong>do</strong> hold mantém o gráfico atual quan<strong>do</strong> você imprimir um novo gráfico. Ao<br />
repetir hold, você limpará a tela. Para imprimir, ou salvar a janela de gráfico em um arquivo,<br />
veja help print ou use<br />
print -Pprintername print –d filename<br />
7