Você está na página 1de 41

MATLAB - Matrix Laboratory

Adaptado de Profa. Carla Salso Freitas e profa. Luciana Nedel Por Profa. Patrcia Jaques

Adaptado por Deise Saccol

MATLAB Software para anlise numrica


Clculo com matrizes Processamento numrico Testes lgicos, testes condicionais, laos de repetio Construo de grficos, etc

Problemas expressos numa forma mais prxima da notao matemtica Interpreta comandos do usurio dados na janela de comando. Experimente: >>sqrt(64) Elemento bsico de informao: MATRIZ tima performance Alto nvel

MATLAB - INF01040 - Profa. Patrcia Jaques

Pacotes cientficos

MATLAB (www.mathworks.com)
linguagem de programao ambiente para desenvolvimento sistema grfico funes matemticas

MATLAB - INF01040 - Profa. Patrcia Jaques

Introduo Trabalha apenas com um tipo de objeto: Matrizes Os elementos das matrizes podem ser nmeros complexos Escalares so matrizes 1x1 ex: >> a= 6 Vetores so matrizes 1xN ou Nx1 Entrando com uma matriz (3 maneiras):

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

>>A = [1 2 3 456 7 8 9]

atravs de um arquivo (ex: gera.m) >>gera

MATLAB - INF01040 - Profa. Patrcia Jaques

Matriz

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

Diferencia maisculas de minsculas!


MATLAB - INF01040 - Profa. Patrcia Jaques

Introduo Se no final da linha for colocado um ;, o Matlab executa o comando mas no mostra o resultado >>A = [1 2 3;4 5 6;7 8 9]

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


Elementos das matrizes podem ser uma expresso
>>x = [-1.3 sqrt(2) ((1+2+3)*4/5)^2] resulta em: x = -1.3000 1.4142 23.0400

Elementos so referenciados por ndices entre parnteses: x(1) = 5


resulta em: x = -1.3000 1.4142 23.0400 ndices comeam em 1 0 0 5

MATLAB - INF01040 - Profa. Patrcia Jaques

Acessando um elemento da Matriz

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

1 1 2 3

2
1 2

3
4

linha

colun a

1
4 10 7

2
5 8

3
6 9

7 8

A(2,1)=10
A(2)=10

MATLAB - INF01040 - Profa. Patrcia Jaques

Introduo Grandes matrizes podem ser geradas a partir de pequenas:


>>r=[10 11 12]; O comando abaixo anexa matriz A o vetor r >>A=[A;r]
A= 1 4 7 10 2 5 8 11 3 6 9 12

MATLAB - INF01040 - Profa. Patrcia Jaques

Introduo Pequenas matrizes podem ser extradas de grandes matrizes usando :


>>A=A(1:3,:) seleciona as 3 primeiras linhas e todas as colunas da matriz A atual, modificando-a para sua forma original.
A= 1 4 7 10

2 5 8 11

3 6 9 12

MATLAB - INF01040 - Profa. Patrcia Jaques

Variveis e informaes da rea de trabalho Variveis so declaradas na forma:


varivel = expresso ans (answer) varivel default caso um nome seja omitido.

Se a expresso to grande que no cabe em uma linha, pode-se continuar a expresso na prxima linha usando um espao em branco e 3 pontos:
>> s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 -1/8 + 1/9 - 1/10 + 1/11 - 1/12 + 1/13;

MATLAB - INF01040 - Profa. Patrcia Jaques

10

Variveis e informaes da rea de trabalho

O comando who lista as variveis da rea de trabalho whos mostra detalhes sobre as variveis clear; clear var;

Teclas para retomar comandos digitados anteriormente

MATLAB - INF01040 - Profa. Patrcia Jaques

11

Nmeros e expresses aritmticas Notao decimal convencional Ex:


3 9.6374586 -99 1.602E-20 0.00001 6.06375e23

Operadores:
^ / \ * + exponenciao diviso direita diviso esquerda multiplicao adio subtrao

MATLAB - INF01040 - Profa. Patrcia Jaques

12

Formatos de sada
O comando format modifica o modo como as matrizes so mostradas format
short (default) short e long long e hex rat bank 1.3333 1.3333e+000 1.33333333333333 1.33333333333333e+000 40040000000000000 4/3 1.33

Exemplo: >>a=2/3 >>format bank >>a

MATLAB - INF01040 - Profa. Patrcia Jaques

13

Help O comando de ajuda help fornece informaes sobre os tpicos help <tpico> -> mostra comandos relacionados ao tpico help <comando> -> mostra detalhes sobre o comando Exemplo: >> help format

MATLAB - INF01040 - Profa. Patrcia Jaques

14

Operaces com matrizes Transposta indicada pelo caracter apstrofo '.


A=[1 2 3;4 5 6;7 8 9]; B=A' B= 1 4 7 258 369

A
1 2 3

A
1 4 7 2 5 8

4 5 6 7 8 9

3 6 9

det(A)
Determinante da matriz A.

inv(A)
Inversa da matriz A

MATLAB - INF01040 - Profa. Patrcia Jaques

15

Operaes com matrizes Adio e subtrao indicada pelos sinais + e - respectivamente.


C=A+B;

Essas operaes s so definidas para matrizes com a mesma dimenso. B=A+A

A
1 2 3 4 5 6

7 8 9

1 4 7 2 5 8 3 6 9

2 6 10 6 10 14 10 14 18

MATLAB - INF01040 - Profa. Patrcia Jaques

16

Operaes com matrizes Multiplicao indicada por *. S vlida quando a 2a. dimenso da 1a. matriz for igual a 1a. dimenso da 2a. matriz.

mxn e nxp
Ex: >> A*B

MATLAB - INF01040 - Profa. Patrcia Jaques

17

Operaes com matrizes A multiplicao de escalar por matriz e vice-versa tambm vlida. Ex: >> B=2*A

A
1 2 3

2*

4 5 6 7 8 9

2 8

4 6 10 12

14 16 18
18

MATLAB - INF01040 - Profa. Patrcia Jaques

Operaes com conjuntos So operaes aritmticas realizadas elemento por elemento da matriz. Usa-se os mesmos caracteres das operaes usuais precedidos por um ponto (.*, ./, .\, .^) Exemplo: Crie duas matrizes quadradas a e b Faa: >>a*b >>a.*b

MATLAB - INF01040 - Profa. Patrcia Jaques

19

Manipulao de vetores e matrizes Gerando vetores: a declarao >>x = 1:5 gera o vetor linha x = 1 2 3 4 5 . (incremento de 1) A funo k=linspace(0,1,6) gera um vetor linearmente espaado de 0 a 1, contendo 6 elementos
k=0 0.2000 0.4000 0.6000 0.8000 1.0000

MATLAB - INF01040 - Profa. Patrcia Jaques

20

Manipulao de vetores e matrizes Elementos das matrizes: utiliza-se ndices entre parnteses.
>> >>A(3,3) = A(1,3) + A(3,1)
A=1 2 3 4 5 6 7 8 10

A(2,1) = 4 A(1:2, 2:3) = 0 elementos A(1,2), A(1,3), A(2,2), A(2,3) so zerados. A(:,3) = 0 elementos da terceira coluna so zerados. >>A(1:2,3) especifica uma submatriz 2x1 com os 2 primeiros elementos da terceira coluna de A
ans = 3 6
MATLAB - INF01040 - Profa. Patrcia Jaques

21

Manipulao de vetores e matrizes excluso de linhas ou colunas


atribuir [ ] linha ou coluna
A(:,3) = [] A(1:2,:) = [] exclui terceira coluna da matriz exclui duas primeiras linhas da matriz

concatenao
formar matriz usando outras (inteiras ou partes) como elementos
Ex.: sendo A = [1 2 3; 4 5 6; 7 8 9] uma matriz 3 x 3,
A(1,:) = 1 2 3 e A(3,:) = 7 8 9 Ento, B = [A(1,:); A(3,:)] uma matriz 2 x 3 contendo a primeira e a terceira linhas de A.

MATLAB - INF01040 - Profa. Patrcia Jaques

22

Funes de Construo de Matrizes eye - matriz identidade


eye(2)
ans = 1 0 0 1

zeros - matriz de zeros


zeros(2,3) ou zeros(2)
ans = 0 0 0 0

MATLAB - INF01040 - Profa. Patrcia Jaques

23

Funes de Construo de Matrizes ones - matriz de 1's


ones(2,3) ou ones (2)
ans = 1 1 1 1

rand - matriz gerada aleatoriamente


rand(5,4) ou rand(2)
ans = 0.2026 0.6721 0.8381 0.0196

MATLAB - INF01040 - Profa. Patrcia Jaques

24

Funes de Construo de Matrizes diag - matriz diagonal


Se x um vetor, diag(x) a matriz diagonal com x na diagonal; ans = x=[1 2 3]; 1 0 0 diag(x)
0 0 2 0 0 3

Se A uma matriz quadrada, ento diag(A) um vetor cujos componentes so os elementos da diagonal de A.
A=[3 11 5; 4 1 -3; 6 2 1] diag(A)
ans = 3 1 1
MATLAB - INF01040 - Profa. Patrcia Jaques

25

triu - parte triangular superior de uma matriz


triu(A)
ans = 3 11 5 0 1 -3 0 0 1

tril - parte triangular inferior de uma matriz


tril(A)
ans = 3 0 4 1 6 2 0 0 1

MATLAB - INF01040 - Profa. Patrcia Jaques

26

Funes Escalares
As funes escalares mais comuns so:
sin - seno asin - arcoseno abs - valor absoluto round - arredonda cos - cosseno acos - arco cosseno log - log natural sqrt - raz quadrada floor - arredonda na direo de menos infinito tan - tangente atan - arco tangente rem - resto da diviso ex: rem(10,3) sign - funo sinal ceil - arredonda na direo de mais infinito

MATLAB - INF01040 - Profa. Patrcia Jaques

27

Funes Vetoriais Outras funes do Matlab operam essencialmente sobre vetores (linha e coluna) Mas em uma matriz m x n, agem sobre coluna por coluna para produzir um vetor linha com o resultado de sua aplicao para cada coluna. possvel operar sobre linha por linha transpondo-se a matriz, por exemplo:
a = rand(5) mean(a) mdia de cada coluna mean(a) mdia de cada linha

MATLAB - INF01040 - Profa. Patrcia Jaques

28

Funes Vetoriais Outros exemplos de funes vetoriais so:


max(a) encontra o valor mximo sum(a) soma os elementos median(a) mediana any(a) true se existe um elemento diferente de zero min(a) menor valor prod(a) produto dos elementos all(a) true se todos os elementos so diferentes de zero sort(a) ordena em ordem crescente

Exemplo:

max(max(a)) max(a)

MATLAB - INF01040 - Profa. Patrcia Jaques

29

Anotando comandos usados diary nome do arquivo - cria arquivo texto no qual ficaro registrados os comandos e as variveis subseqentes. diary off - fecha arquivo e salva-o como texto. type nome do arquivo - apresenta na janela de comando todo o contedo do arquivo. possvel tambm abri-lo em editores de texto ASCII.

MATLAB - INF01040 - Profa. Patrcia Jaques

30

Paginando sada na janela de comando more on - quando uma sada for muito extensa, mostra somente uma tela de cada vez.
Enter avana uma linha. Barra de Espao avana uma tela. q pra de mostrar sada.

more off - retorna ao modo normal (padro).

MATLAB - INF01040 - Profa. Patrcia Jaques

31

Controle de fluxo Lao for


>> for i=1:5 x(i)=i^2; end x= 1 4 9 16 25 >> for i=1:5 for j=1:5 a(i,j)=i+j; b(i,j)=i-j; end end c=a+b;
a= b=

2 3 4 5 6

3 4 5 6 7

4 5 6 7 8

5 6 6 7 7 8 8 9 9 10

0 -1 -2 -3 -4 1 0 -1 -2 -3 2 1 0 -1 -2 3 2 1 0 -1 4 3 2 1 0

MATLAB - INF01040 - Profa. Patrcia Jaques

32

Controle de fluxo
Lao while
a = 1; b = 15; while a<b clc a = a+1 b = b-1 end disp(fim do loop)

if
for i = 1:5 for j = 1:5 if i == j A(i,j) = 2; else if abs(i-j) == 1 A(i,j) = -1; else A(i,j) = 0; end end end end

MATLAB - INF01040 - Profa. Patrcia Jaques

33

Arquivos m so arquivos que contm comandos do MATLAB 2 passos:


criar arquivo .m usando um editor de texto ou:
edit nome do arquivo ou File New M-File digitar cdigo do script. File Save As - escolher diretrio corrente ou que esteja presente no search path do MATLAB.

chamar o arquivo m da linha de comando, ou de outro arquivo m.


nome do arquivo

MATLAB - INF01040 - Profa. Patrcia Jaques

34

Arquivos m Exemplo 1 script


criar arquivo digitar cdigo
clear clc A = [1 2 3; 4 5 6; 7 8 9] B = A

salvar como inicio.m executar na janela do MatLab


>> inicio

Comentrios:
% comentrio de linha texto apos o % na mesma linha no ser executado
35

MATLAB - INF01040 - Profa. Patrcia Jaques

Outros comandos
Entrada de dados: Receber um dado numrico do usurio
<varivel> = input('<mensagem>'); Exemplo:
n1 = input('Digite um numero: ')

Entrada de dados: Receber um dado texto do usurio


<varivel> = input('<mensagem>', 's') Exemplo:
n1 = input('Digite seu nome: ', 's')

Mostrar um texto ou contedo de uma varivel:


disp('<mensagem>'); Exemplo:
disp('Total calculado: '); disp(soma); n1=input ('digite seu nome ', 's'); deise fprintf (1, 'Oi %s', n1) Oi deise

Limpar a tela Exemplo:


clc;

MATLAB - INF01040 - Profa. Patrcia Jaques

36

Resolvendo Equaes Polinomiais Achar razes de um polinmio: 4x=0 tem duas razes nulas.
>>p=[4 0 0] >>r=roots(p)
r= 0 0

4x+5=0 no tem razes reais.


>>p=[4 0 5] >>r=roots(p)
r = 0 + 1.1180i 0 - 1.1180i

4x-12x=0 tem duas razes reais: x'=3, x"=0


>>p=[4 -12 0] >>r=roots(p)
r= 0 3

MATLAB - INF01040 - Profa. Patrcia Jaques

37

Resolvendo Equaes Polinomiais x4 - 12x3 + 0x2 + 25x + 116=0


>>p=[1 -12 0 25 116] r=roots (p)
r= 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i

Construir polinmio a partir de suas razes:


>> pp = poly(r)
pp = 1.0000 -12.0000 -0.0000 25.0000 116.0000

MATLAB - INF01040 - Profa. Patrcia Jaques

38

Atividade Exemplo:
f(x) = 3*x^4-0.5.*x^3+x-5.2 (x assume valores escalares)
p = [3 -0.5 0 1 -5.2]; f = polyval(p,x);

Digitar estes comandos e observar a sada:


p=[1 4 -7 -10]; x = linspace(-1,3); % gera 100 ptos entre -1 e 3 v=polyval(p,x) % gera f(x) para cada x contido no vetor x plot(x,v) title('Figure 19: x{^3} + 4x{^2} - 7x - 10') xlabel('x')

MATLAB - INF01040 - Profa. Patrcia Jaques

39

...Grfico gerado

MATLAB - INF01040 - Profa. Patrcia Jaques

40

Exerccios Pegar exerccios na pgina

MATLAB - INF01040 - Profa. Patrcia Jaques

41