Leandro Gazoni Fernanda Raupp

Livre

0
0
60
1 year ago
Preview
Full text

  Introdução ao MATLAB Introdução ao MATLAB Leandro Leandro Gazoni Gazoni Fernanda Fernanda Raupp Raupp O que é o MATLAB ? „ mat rix lab oratory é um software para computação

  científica

  „

  resolve problemas matemáticos de forma rápida e eficiente

  „

  possui uma família de aplicativos específicos (toolboxes) para: „ otimização, manipulação algébrica, redes neurais, processamento de sinais, simulação de sistemas dinâmicos, entre outros. Evolução do MATLAB Ano

  Ano

  Versão

  Versão

  Resumo

  Resumo

  1978 Classic MATLAB Versão em Fortran

  1984 MATLAB 1 Reescrito em C

  1985 MATLAB 2 30% a mais de funções e comandos

  • rápido, gráficos coloridos

  1987 MATLAB 3

  1992 MATLAB 4 Animação, inteface, debugger, MS-Win

  1997 MATLAB 5 OO, álgebra linear, eq. diferenciais

  2000 MATLAB 6 LAPACK, ARPACK, BLAS, Suporte Java Variáveis no MATLAB „

  existe somente um tipo de variável:

  „ matriz

  „

  o tipo matriz pode ser expresso como:

  „

  escalar: matriz 1 x 1

  „

  vetor: matriz 1 x n ou n x 1

  „

  matriz propriamente: matriz m x n

  „

  a dimensão de matrizes e vetores é automática Representação de variáveis Variáveis Escalares Vetores Matrizes

  Vetores Linha Vetores Coluna String Numérico

  × x

  L N C C

[ ]

  [ ] (1 4) ×

  = × ⎢ ⎥ ⎢ ⎥ ⎣ ⎦ y

  4 ⎡ ⎤ ⎢ ⎥ ⎢ ⎥

  3

  1

  4

  2

  1

  ( )

  = ⎢ ⎥ ⎢ ⎥ ⎣ ⎦

  0.12

  9 3 3 ⎡ ⎤ ⎢ ⎥

  8

  7

  6

  5

  4

  3

  2

  1

  0.12 (1X1) (1X1) ( )

  

1 2 3 Características na declaração de uma variável „

  variáveis são alocadas na memória ao serem declaradas;

  „

  nomes de variáveis são sensíveis a letras maiúsculas e minúsculas;

  „

  vetores e matrizes devem ser declarados entre [ ];

  „

  elementos de uma mesma linha numa matriz são separados por espaço(s) ou vírgula;

  „

  ponto-e-vírgula(;) indica o final de uma linha de uma matriz ou expressão; Exemplos de declarações de variáveis >> A = [ 1 2 3 4 5 ]

  A = 1 2 3 4 5

  >>B = [ 1; 2; 3; 4; 5 ] ou >>B = A’ B =

  1

  2

  3

  4

  5 Vetor Linha

  Vetor Coluna Exemplos de declarações de variáveis >> A = [ 1 2 3; 4 5 6; 7 8 9 ] Matriz

  A = 1 2 3 4 5 6 7 8 9

  Matriz Transposta >> A = A'

  A = 1 4 7 2 5 8 3 6 9

  • - Subtração
    • *

      Multiplicação

  Símbolo O peração + Adição

  / Div isão: a/b=a*b^(-1)

  ^ Potenciação

   Matriz transposta Exemplos com operadores matemáticos >> A = [ 1 2; 3 4 ];

  1

  2

  5

  6 ⎡ ⎤ ⎡ ⎤ >> B = [ 5 6; 7 8 ];

  A B = = ⎢ ⎥ ⎢ ⎥

  3

  4

  7

  8 ⎣ ⎦ ⎣ ⎦ >> C2 = A*B >> C = A + B

  C = C2 = 6 8

  19 22 10 12 43 50

  >> C1 = A – B >> C3 = A/B

  ( = A*inv(B) )

  C1 = C3 =

  • 4 -4

  3.0000 -2.0000

  • 4 -4

  2.0000 -1.0000 divisão

  peração O potenciação

  multiplicação

  ./ .* .^ Símbolo Exemplos de operadores matemáticos ponto-a-ponto

  >>A = [ 1 2 ; 3 4 ];

  1

  2

  5

  6 ⎡ ⎤ ⎡ ⎤ A B

  = =

  >>B = [ 5 6 ; 7 8 ];

  ⎢ ⎥ ⎢ ⎥ 3 4

  7

  8 ⎣ ⎦ ⎣ ⎦

  >> C = A.*B >> C = A./B

  C = C = 5 12

  0.2000 0.3333 21 32 0.4286 0.5000

  >> C = A.^B >> C = A.^3

  C = C = 1 64 1 8

  2187 65536 27 64 Característica na declaração de uma variável v = [ inicio : incremento : fim ] v = [ inicio : fim ] incremento=1 ou v = inicio : incremento : fim v = inicio : fim „

  Exemplo:

  >> A = 1 : 9

  A = 1 2 3 4 5 6 7 8 9 Característica na

declaração de uma variável

„

  Exemplos:

  >> v = [ 2 : 2 : 10]

  v = 2 4 6 8 10

  >> M = [1:1:3; 4:1:6; 7:1:9]

  M = 1 2 3 4 5 6 7 8 9 Manipulação de matrizes „

  acessando um elemento de uma matriz;

  3

  B >> B (2,3) ans =

  = ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎣ ⎦ a a a a a a a a a

  6 ⎡ ⎤ ⎢ ⎥

  9

  8

  7

  5

  4

  2

  [ ]

  1

  ( linha, coluna) 11 12 13 21 22 31 32 33 23

  ( linha, coluna)

  sempre

  15 = A >> A (3) ans =

  5

  17

  1 3 7 9 11 13

  6 Manipulação de matrizes „

  É possível incluir matrizes em matrizes;

  >> A = [1 2 3; 4 5 6; 7 8 9];

  A => matriz 3x3

  >> a = [10 20 30]; >> A = [A;a]

  A = 1 2 3 4 5 6 7 8 9

  10 20 30 A => matriz 4x3 Manipulação de matrizes „

  É possível extrair matrizes de matrizes;

  9

  >> x = A ( 2, [ 2 3 ] ) ou >> x = A ( 2, 2:3)

  Acessando os elementos na 2a e 3a colunas da 2a linha de A

  = ⎢ ⎥ ⎢ ⎥ ⎣ ⎦

  30 A ⎡ ⎤ ⎢ ⎥ ⎢ ⎥

  20

  10

  8

  1

  7

  6

  5

  4

  3

  2

  x = 5 6

Manipulação de matrizes

  20

  x = 4 5 6 7 8 9

  >> x = A ([2 3] , [1 2 3 ]) ou >> x = A (2:3, 1:3)

  Acessando os elementos da 2a e 3a linhas

  A

  = ⎢ ⎥ ⎢ ⎥ ⎣ ⎦

  30 ⎡ ⎤ ⎢ ⎥ ⎢ ⎥

  1

  2

  9

  8

  7

  6

  5

  4

  3

  10 Manipulação de matrizes „

  Podemos acessar diretamente elementos da diagonal de uma matriz; Vamos acessar a diagonal

  1

  2

  3

  da matriz A

  ⎡ ⎤ ⎢ ⎥ >> x = diag(A)

  A

  4

  5

  x =

  6 = ⎢ ⎥

  1

  ⎢ ⎥

  7

  8

  9 ⎣ ⎦

  5

  9 Funções especiais para geração de matrizes „

  A = rand (m,n) ou rand(n) Gera matriz com elementos aleatórios.

  „

  A = eye (m,n) ou eye(n) Gera matriz com elementos na diagonal iguais a 1.

  Uma matriz identidade nXn é gerada por eye(n).

  „

  A = zeros (m,n) ou zeros(n) Gera matriz com todos elementos iguais a 0.

  „

  A = ones (m,n) ou ones(n) Gera matriz com todos elementos iguais a 1. Exemplos de funções especiais para geração de matrizes » a = rand(2)

  a =

  0.3840 0.0928 0.6831 0.0353

  » a = eye(2) a =

  1 0 0 1

  » a = ones(2) a =

  1 1 1 1

  » a = zeros(2) a =

  0 0 0 0 Operadores matemáticos

  sin seno cos cosseno tan tangente csc cossecante sec secante cot cotangente acos arco-coseno asin arco-seno atan arco-tangente asec arco-secante acsc arco- cossecante acot arco-cotangente Variáveis e Comandos Permanentes contador de resposta mais operações

  ans flops

  recente matemáticas precisão da

  Not a Number

  eps NaN

  máquina maior número de Infinito

  realmax inf

  ponto flutuante menor número de tipo de computador

  realmin computer

  ponto flutuante lista de variáveis 3,141592653...

  pi who

  utilizadas unidade versão do MATLAB

  i version

  Imaginária

  ⎤ ⎢ ⎥ = ⎢ ⎥ ⎢ ⎥ ⎣ ⎦

  ⎣ ⎦

  24

  51

  9

  12

  4

  ⎣ ⎦ 0.32 2.5 pi 2 A 1e2

  ⎡ ⎤ ⎢ ⎥ = ⎢ ⎥ ⎢ ⎥

  9.81 f 1 −

  43 ⎡ ⎤ ⎢ ⎥ = ⎢ ⎥ ⎢ ⎥ −

  Exercícios: „

  13

  74

  87 B 32 4.65

  34

  5

  t

  e = (-2.234, 0, pi/2)

  t

  Armazene os valores das seguintes variáveis: a = 3.132 b = -23.004 c = 5*pi d = (3, 5.4, 7.43)

  • - - 19.8720 19.8720 12.5760 12.5760 [5.2340 5.4000 5.8592] [5.2340 5.4000 5.8592]
  • 24.854 3.5708

  Exercícios: „

  A * B

  . 7442 7156 . . 1 0128

  . 0203 0006 . 0055 .

  − − − − − . 1933 0825 . 1288 .

  ⎢ ⎢ ⎣ ⎡

  ⎥ ⎥ ⎥ ⎦ ⎤ ⎢

  . 6696 5450 . 8108 .

  − − . 5840 5095 . 7830 . . 3906 7205 . 7396 .

  ⎢ ⎢ ⎣ ⎡

  ⎥ ⎥ ⎥ ⎦ ⎤ ⎢

  ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎣ ⎦

  f)

  Verifique os seguintes resultados:

  f * B

  e)

  e’ + 2 * f

  d)

  d – e

  c)

  c – b * (a / b)

  b)

  a + b + eps

  a)

  1 Outras funções polinômio

  exp poly

  exponencial característico

  log det

  logaritmo natural determinante

  log10 abs

  logaritmo base 10 módulo

  inv sqrt

  inverte matriz raiz quadrada parte real de número

  max real

  máximo valor complexo parte imag. de núm.

  min imag

  mínimo valor complexo conj. dos núm.

  mean conj

  média aritmética complexos

  std round desvio padrão arredonda num. Polinômios no MATLAB „

  Polinômios no MATLAB são manipulados como vetores.

  „

  Os coeficientes de um polinômio são armazenados como elementos um vetor linha, come çando pelo

  coeficiente do termo de maior grau. 3 2

  Exemplo:

  p x ( ) = x

  • „

  10 x

  29 >> p = [1 10 -29]; Funções relacionadas a polinômios

  roots polyder acha raízes acha derivada deconv conv divide multiplica avalia polyval polyfit ajusta curva polinômio Exemplos com funções de polinômios

  3

  2

  10

  2 − − 29 = + p x x x

  >> roots(p) ans =

  • 9.9064
  • 1.7584 1.6648

  >> p = [1 10 -2 -29] p =

  1 10 -2 -29

  >> polyder(p) ans =

  3 20 -2 igual maior perador menor diferente

  O maior ou igual menor ou igual

  > < == ~= >= <= Símbolo

  e

ou

não

  perador O

  ou exclusivo

  | ~ & xor Símbolo Exemplos com operadores lógicos e relacionais

  >> 2 + 2 == 4 ans =

  1

  >> a = [1 2 3; 4 5 6] ans =

  1 2 3 4 5 6

  >> a >= 4 >> A = [1 2; 3 4]; B = 2*ones(2); >> A==B ans =

  0 1 0 0

  >> 10 > 100 ans = ans =

  0 0 0 1 1 1

  

Exemplos com operadores

lógicos e relacionais

  >> x = [ 1 0; 0 1]; y = [ 1 1; 0 0]; >> x & y ans =

  1 0 0 0

  >> x | y ans =

  1 1 0 1

  >> xor (x;y) ans =

  0 1 0 1 Programação em MATLAB „

  expressa problemas mais extensos;

  „

  agiliza os comandos mais digitados;

  „

  é uma linguagem interpretada;

  „

  pode ser criada a partir de qualquer editor de texto;

  „

  apresenta formato livre como C, Fortran ou outras linguagens. Controladores de fluxo „ if : cria caminhos alternativo no programa

  if expressão 1

  instruções

  elseif expressão 2

  instruções

  else

  instruções

  end Controladores de fluxo „

  Exemplo com if x=rand(1); y=rand(1); if x < y temp = y y = x x = temp end

  Resposta: temp =

  6 y =

  3 x =

  6 Controladores de fluxo „

  Exemplo com if : x=rand(1); y=rand(1); if x < y temp = y; y = x; x = temp; else disp('x eh maior que y') x, y end

  Resposta: ans =

  1 x eh maior que y x = 0.8386 y = 0.2584 Resposta: temp = 0.7439 y = 0.5744 x = 0.7439 Controladores de fluxo „ for : permite que um comando ou um grupo de

  comandos se repitam for variável = expressão

  instruções

  end Controladores de fluxo „

  Exemplos com for : for i = 1:5 x(i) = 2*i; end x Resposta: x = 2 4 6 8 10 Controladores de fluxo

  n=2; a = eye(n); for j = 2:n for i = 1:j-1 % incremento=1 a(i,j) = i/j; a(j,i) = i/j; end end disp(a) Resposta: 1.0000 0.5000 0.5000 1.0000

  Controladores de fluxo „ while : permite que um ou mais comandos sejam

  repetidos enquanto a expressão de controle for verdadeira while (expressão de controle)

  instruções

  end

  

Controladores de fluxo

„

  exemplo com while i=0; while ( sqrt(i) < 5 ) i = i+1; end sqrt(i) Resposta: i = 1 2 3 4 Funções auxiliares no controle de fluxo „ input – recebe dados através do teclado, que podem

  ser ou não armazenados em uma variável

  „ break – encerra um laço mais interno controlado pelo

  comando for

  „ pause – pára a execução do programa até que uma

  nova tecla seja pressionada Arquivos .m „

  podemos criar novas funções ou scripts

  „

  MATLAB possui um editor próprio e um debugger

  „

  comentários começam por %

  „

  ao se criar uma função ou script ela dever ser definida no path Arquivos .m „

  scripts : executam os argumentos diretamente, automatizando uma série de comandos

  „

  função : argumentos podem ser passados para a função, havendo uma manipulação de variáveis

  

function [res1, res2, ...] = nome_da_função (arg1,arg2, ...)

% comentário para help lista de procedimentos da função return

  Exemplo de função.m % Exibe o gráfico de em [-5,5] y = ax^2 + bx + c clear aux = 's' ; while aux == 's’ clc a=input( 'a =' ); b=input( 'b =' ); c=input( 'c =' ); x = -5:0.1:5; y = a*x.^2 + b*x + c; plot(y) pause figure(1) pause close aux=input( 'Exibir outro grafico? (s/n) ==> ','s' ); end

  Exemplo de função.m „ arquivo: fun.m

%..............................

  % avalia a seguinte função % f(x)=x*x-cos(x)

%..............................

  function f = fun(x) f = x*x-cos(x); return

  Exemplo de função.m „ %.......................... % Aplica o método da k = 0; % conta núm. de iterações % bisseção para encontrar eps = 0.01; % um zero de while ( abs(b-a) >= 2*eps ) % f(x)= x*x - cos(x) alfa = (a + b)/2; % num intervalo [a,b], tal if ( fun(alfa) > 0) que f(a)*f(b) < 0 . b = alfa; %.......................... else a = alfa; end function z = zero(a,b) k = k+1; % testa intervalo end if ( fun(a)*fun(b) >= 0 ) display('A raiz da função é: ' ); display('O intervalo de .. (a+b)/2 .. busca da raiz está errado.') display(‘número de iterações: '); stop k end return

  Gráficos no MATLAB „

  existem muitas funções para gerar gráficos 2D e 3D

  „

  os gráficos podem ser armazenados em arquivos, coloridos ou em preto e branco Gráficos 2D „ Pode-se desenhar gráficos simples como y = f(x). „

  Dados os vetores x e y, o gráfico é construído ligando-se os pontos (x(i),y(i)).

  >> x = [1.5 2.2 3.1 4.6 5.7 6.3 9.4]; >> y = [2.3 3.9 4.3 7.2 4.5 3.8 1.1]; 8 >> plot(x,y) 6 7

  5 4 2

  3

  1 1 2 3 4 5 6 7 8 9 10 Características dos Gráficos cores das linhas tipos de linhas

  r vermelho

  • -- tracejada

  g verde . ponto b azul o circulo w branco x x k preto + cruz y amarelo

  • * estrela

  m roxo : pontilhada Gráficos no MATLAB „

  Exemplo de gráfico y = f(x)

  » x = [0:5]; » y = x.^2; 25 » plot(x,y,‘ r : ’) 20

  15 x y = x²

  10

  1

  1

  2

  4 5

  3

  9

  4

  16

0.5

1 1.5 2 2.5 3 3.5 4 4.5 5

  5

  25 Gráficos 3D

  plot3 curvas 3D surf,surfc,surfl superfícies 3D mesh,meshc,meshz linhas em perspectiva 3D contour curvas de nível Gráficos no MATLAB „

  Exemplo de um gráfico 3D

  >> x = 0:pi/50:10*pi; >> plot3(sin(x),cos(x),x) 20 25 30

  35

  15 10 1 5

  0.5 -0.5 -1 -1 -0.5 0.5 1 Gráficos no MATLAB > t = 0:pi/50:10*pi; > plot3(sin(t),cos(t), t); >

  [X,Y] =meshgrid (-8:0.5:8,-8:0.5:8); > r =sqrt(X.^2+Y.^2)+eps;

  > Z = sin(r)./r; > subplot(221) > mesh(X,Y,Z);

  > subplot(222)

  > surf(X,Y,Z); > subplot(223) > meshc(X,Y,Z)

  > subplot(224)

  > contour(X,Y,Z)

  Animação de gráficos surf(peaks) axis vis3d for i=1:36 camorbit(10,0,'camera') drawnow end

  Animação de gráficos surf(peaks) axis vis3d for i=1:36 camorbit(10,2,'data',[0 1 0]) drawnow end

  

Animação de gráficos

surf(peaks) axis vis3d off for x = -200:5:200 campos([x,5,10]) drawnow end

  Animação de gráficos surf(peaks); axis vis3d xp = linspace(-150,40,50); xt = linspace(25,50,50); for i=1:50 campos([xp(i),25,5]); camtarget([xt(i),30,0]) drawnow end

  Help MATLAB on-line „

  „

Novo documento