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

Matlab

Tutorial de Matlab

   EMBED

  • Rating

  • Date

    December 2018
  • Size

    90KB
  • Views

    4,540
  • Categories


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