Leandro Gazoni Fernanda Raupp

60 

Full text

(1)

Introdução ao MATLAB

Introdução ao MATLAB

Leandro

Leandro GazoniGazoni Fernanda

(2)

O que é o MATLAB ?

„ matrix laboratory é 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

(3)

Evolução do MATLAB

Ano

Ano VersãoVersão ResumoResumo

1978 Classic MATLAB Versão em Fortran

1984 MATLAB 1 Reescrito em C

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

1987 MATLAB 3 + rápido, gráficos coloridos

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

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

(4)

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

(5)

Representação de variáveis

Variáveis

Escalares Vetores Matrizes

Vetores Linha Vetores Coluna

String Numérico 0.12 0.12 (1X1) (1X1)

(

)

1 2 3

4 5 6

7 8 9

3 3 ⎡ ⎤ ⎢ ⎥ = ⎢ ⎥ ⎢ ⎥ ⎣ ⎦ × x

(

)

1 2 4 1 3 4 ⎡ ⎤ ⎢ ⎥ ⎢ ⎥ = × ⎢ ⎥ ⎢ ⎥ ⎣ ⎦ y

[

]

(1 4)

×

L N C C

(6)

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;

(7)

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

(8)

Exemplos de declarações

de variáveis

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

A =

1 2 3 4 5 6 7 8 9

>> A = A'

A =

1 4 7 2 5 8 3 6 9

Matriz

(9)

Operadores matemáticos

Símbolo

O

peração

+

Adição

-Subtração

*

Multiplicação

/

Div

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

^

Potenciação

(10)

Exemplos com

operadores matemáticos

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

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

1

2

5

6

3

4

7

8

A

=

B

=

>> C2 = A*B

C2 =

19 22 43 50

>> C3 = A/B ( = A*inv(B) )

C3 =

3.0000 -2.0000 2.0000 -1.0000

>> C = A + B

C =

6 8 10 12

>> C1 = A – B

C1 =

(11)

Operadores Matemáticos

Ponto-a-Ponto

Símbolo

O

peração

.*

multiplicação

./

divisão

.^

(12)

Exemplos de operadores

matemáticos ponto-a-ponto

1

2

5

6

3 4

7

8

A

=

B

=

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

>> C = A.*B

C =

5 12 21 32

>> C = A./B

C =

0.2000 0.3333 0.4286 0.5000

>> C = A.^3

C =

1 8 27 64

>> C = A.^B

C =

1 64

(13)

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 =

(14)

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 =

(15)

Manipulação de matrizes

„ acessando um elemento de uma matriz;

[

1 3

5

7

9 11 13

15

17

]

=

A

>> A (3) ans =

5

A referência deve ser sempre ( linha, coluna)( linha, coluna)

11 12 13

21 22

31 32 33

23

1

2

3

4

5

7

8

9

6

= ⎢

a a a

a a

a a a

a

B

>> B (2,3) ans =

(16)

Manipulação de matrizes

„ É possível incluir matrizes em matrizes;

>> A = [1 2 3; 4 5 6; 7 8 9]; >> a = [10 20 30];

>> A = [A;a]

A =

1 2 3 4 5 6 7 8 9 10 20 30

A => matriz 4x3

(17)

Manipulação de matrizes

„ É possível extrair matrizes de matrizes;

1

2

3

4

5

6

7

8

9

10

20

30

A

=

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

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

>> x = A ( 2, 2:3)

x =

(18)

Manipulação de matrizes

1

2

3

4

5

6

7

8

9

10

20

30

=

A

Acessando os elementos da 2a e 3a linhas

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

>> x = A (2:3, 1:3) x =

(19)

Manipulação de matrizes

„ Podemos acessar diretamente elementos da diagonal de uma matriz;

1

2

3

4

5

6

7

8

9

A

= ⎢

Vamos acessar a diagonal da matriz A

>> x = diag(A) x =

(20)

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)

(21)

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 =

(22)

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

(23)

Variáveis e Comandos Permanentes

ans resposta mais recente flops

contador de operações matemáticas

eps precisão da máquina NaN Not a Number

realmax maior número de ponto flutuante inf Infinito

realmin menor número de ponto flutuante computer tipo de computador

pi 3,141592653... who lista de variáveis utilizadas

(24)

Exercícios:

„ Armazene os valores das seguintes variáveis:

a = 3.132 b = -23.004 c = 5*pi

d = (3, 5.4, 7.43)t

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

5

34

87

B

32 4.65

74

0

13

43

= ⎢

9.81

f

0

1

= ⎢

0.32 2.5 pi 2

A

1e2

4

12

9

51

24

(25)

Exercícios:

„ Verifique os seguintes resultados:

a) a + b + eps b) c – b * (a / b) c) d – e

d) e’ + 2 * f e) f * B

f) A * B

--

19.8720

19.8720

12.5760

12.5760

[5.2340 5.4000 5.8592]

[5.2340 5.4000 5.8592]

(26)

Outras funções

exp exponencial poly polinômio

característico log logaritmo natural det determinante

log10 logaritmo base 10 abs módulo

inv inverte matriz sqrt raiz quadrada

max máximo valor real parte real de número complexo

min mínimo valor imag parte imag. de núm. complexo

(27)

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.

„ Exemplo:

>> p = [1 10 -29];

3 2

( ) = +10 − 29

(28)

Funções relacionadas a polinômios

roots acha raízes polyder acha derivada

deconv divide conv multiplica

polyval avalia

(29)

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 =

(30)

Operadores relacionais

Símbolo

O

perador

==

igual

~=

diferente

>

maior

<

menor

>=

maior ou igual

<=

(31)

Operadores lógicos

Símbolo

O

perador

&

e

|

ou

~

não

xor

(32)

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 =

0

ans =

(33)

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 =

(34)

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

(35)

Controladores de fluxo

„ if : cria caminhos alternativo no programa

if expressão 1 instruções

elseif expressão 2

instruções

else

instruções

(36)

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 =

(37)

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

(38)

Controladores de fluxo

„ for : permite que um comando ou um grupo de comandos se repitam

for variável = expressão instruções

(39)

Controladores de fluxo

„ Exemplos com for :

for i = 1:5 x(i) = 2*i; end

x

Resposta: x =

(40)

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:

(41)

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

(42)

Controladores de fluxo

„ exemplo com while

i=0;

while ( sqrt(i) < 5 ) i = i+1;

end

sqrt(i)

Resposta: i =

(43)

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

(44)

Arquivos .m

„ podemos criar novas funções ou scripts

„ MATLAB possui um editor próprio e um debugger

„ comentários começam por %

(45)

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

(46)

Exemplo de função.m

% Exibe o gráfico de y = ax^2 + bx + c em [-5,5] 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');

(47)

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);

(48)

Exemplo de função.m

%... % Aplica o método da

% bisseção para encontrar % um zero de

% f(x)= x*x - cos(x)

% num intervalo [a,b], tal que f(a)*f(b) < 0.

%...

k = 0; % conta núm. de iterações eps = 0.01;

while( abs(b-a) >= 2*eps ) alfa = (a + b)/2;

if ( fun(alfa) > 0) b = alfa;

else

a = alfa;

end

k = k+1;

end

display('A raiz da função é: ' ); (a+b)/2

display(‘número de iterações: '); k

return

„

zero.m

function z = zero(a,b) % testa intervalo

if ( fun(a)*fun(b) >= 0 )

display('O intervalo de .. .. busca da raiz está errado.')

stop

(49)

Gráficos no MATLAB

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

(50)

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]; >> plot(x,y)

1 2 3 4 5 6 7 8 9 10 1

(51)

Características dos Gráficos

cores das linhas

r vermelho

g verde

b azul

w branco

k preto

y amarelo

m roxo : pontilhada

estrela *

cruz +

x x

circulo o

ponto .

tracejada

(52)

Gráficos no MATLAB

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 0

5 10 15 20 25

„ Exemplo de gráfico y = f(x)

» x = [0:5]; » y = x.^2;

» plot(x,y,‘ r : ’)

x y = x²

0 0

1 1

2 4

3 9

4 16

(53)

Gráficos 3D

plot3 curvas 3D

surf,surfc,surfl superfícies 3D

mesh,meshc,meshz linhas em perspectiva 3D

(54)

Gráficos no MATLAB

„ Exemplo de um gráfico 3D

>> x = 0:pi/50:10*pi;

>> plot3(sin(x),cos(x),x)

-1

-0.5 0

0.5 1

(55)

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)

(56)

Animação de gráficos

surf(peaks) axis vis3d for i=1:36

camorbit(10,0,'camera') drawnow

(57)

Animação de gráficos

surf(peaks) axis vis3d for i=1:36

camorbit(10,2,'data',[0 1 0]) drawnow

(58)

Animação de gráficos

surf(peaks)

axis vis3d off

for x = -200:5:200 campos([x,5,10]) drawnow

(59)

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

(60)

Help MATLAB on-line

„ http://www.mathworks.com/access/helpdesk/help/tec

hdoc/ref/ref.shtml

„ http://www.mathworks.com/access/helpdesk/help/tec

Figure

Updating...

Download now (60 pages)