Preview only show first 10 pages with watermark. For full document please download

Tutorial Matlab

apostila com conceitos básicos

   EMBED


Share

Transcript

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