MATLAB - Matrix Laboratory
Adaptado de Profa. Carla Salso Freitas
e profa. Luciana Nedel
Por Profa. Patrícia Jaques
MATLAB
• Software para análise numérica
• Problemas expressos numa forma mais próxima da
notação matemática
• Interpreta comandos do usuário dados na janela de
comando. Experimente: >>sqrt(64)
• Elemento básico de informação: MATRIZ
• Ótima performance
• Alto nível
2
Pacotes científicos
• MATLAB (www.mathworks.com)
–
–
–
–
linguagem de programação
ambiente para desenvolvimento
sistema gráfico
funções matemáticas
3
Introdução
• Trabalha apenas com um tipo de objeto: Matrizes
• ex: a= 6
• Vetores são matrizes 1xN ou Nx1 ex: A=[1,2,3]
• Entrando com uma matriz (3 maneiras):
>>A = [1 2 3;4 5 6;6 7 8]
>>A = [1 2 3
através de um arquivo
456
(ex: gera.m)
7 8 9]
>>gera
4
Matriz
• A = [1 2 3; 4 5 6;7 8 9]
1
2
3
4
5
6
7
8
9
Diferencia maiúsculas de minúsculas!
5
Introdução
• Se no final da linha for colocado um “;”, o Matlab
executa o comando mas não 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 expressão
>>x = [-1.3 sqrt(2) ((1+2+3)*4/5)^2]
resulta em: x = -1.3000 1.4142 23.0400
• Elementos são referenciados por índices entre
parênteses: x(1) = 5
resulta em: x = 5 1.4142 23.0400
Índices começam em 1
6
Acessando um elemento da Matriz
• A = [1 2 3; 4 5 6;7 8 9]
1
1
2
3
2
linha
3
1
1
2
4
3
7
4
10
7
2
5
5
6
8
3
8
6
9
9
colun
a
A(2,1)=10
A(2)=10
7
Introdução
• Grandes matrizes podem ser geradas a partir de
pequenas:
>> r=[10 11 12];
O comando abaixo anexa à matriz A o vetor r
>> A = [1 2 3;4 5 6;7 8 9]
>>Y=[A;r]
Y=
1
4
7
10
A
2
5
8
11
3
6
9
12
r
8
Introdução
• Pequenas matrizes podem ser extraídas de grandes
matrizes usando “:”
(deLinha:ateLinha,deColuna:ateColuna)
>>J=Y(1:3,:)
a partir da linha 1, seleciona 3 linhas e todas as colunas
A=
1
4
7
10
2
5
8
11
3
6
9
12
k=Y(1:2,3:3)
SELECIONA AS LINHAS DE 1 A 2 E A COLUNA 3
9
Variáveis e informações da área de trabalho
• Variáveis são declaradas na forma:
– variável = expressão
– “ans” (answer) variável default caso um nome seja
omitido.
10
Variáveis e informações da área de trabalho
• O comando “who” lista as variáveis da área de
trabalho
• “whos” mostra detalhes sobre as variáveis
• clear;
• clear var;
• Teclas para retomar comandos
digitados anteriormente
11
Números e expressões aritméticas
• Notação decimal convencional
• Ex:
3
9.6374586
-99
1.602E-20
0.00001
6.06375e23
• Operadores:
^
/
\
*
+
-
exponenciação
divisão à direita
divisão à esquerda
multiplicação
adição
subtração
12
Formatos de saída
• O comando format modifica o modo como os valores são
mostrados
• 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
13
Help
• O comando de ajuda “help” fornece informações
sobre os tópicos
• help <tópico> -> mostra comandos relacionados ao
tópico
• help <comando> -> mostra detalhes sobre o
comando
• Exemplo:
• >> help format
• Look for parteDoComando (usado qdo nao se sabe o
nome exato do comando)
14
Operacões com matrizes
• Transposta indicada pelo caracter apóstrofo '.
A=[1 2 3;4 5 6;7 8 9];
B=A'
B= 1 4 7
258
369
A
A’
1 2 3
1 4 7
2 5 8
3 6 9
4 5 6
7 8 9
• http://pt.wikipedia.org/wiki/Determinante
• det(A)
– Determinante da matriz A.
• inv(A)
– Inversa da matriz A
15
Operações com matrizes
• Adição e subtração indicada pelos sinais “+” e “-”
respectivamente.
C=A+B;
• Essas operações só são definidas para matrizes com a
mesma dimensão.
• B=A+A’
A
A’
1 2 3
4 5 6
7 8 9
1 4 7
2 5 8
3 6 9
+
B
=
2 6 10
6 10 14
10 14 18
16
Operações com matrizes
• Multiplicação indicada por “*”.
• Só é válida quando a 2a. dimensão da 1a. matriz for
igual a 1a. dimensão da 2a. matriz.
• mxn e nxp
• Ex: >> A*B
17
Operações com matrizes
• A multiplicação de escalar por matriz e vice-versa
também é válida.
• Ex: >> B=2*A
A
B
1 2 3
2*
4 5 6
7 8 9
=
2 4 6
8 10 12
14 16 18
18
Operações com conjuntos
• São operações aritméticas realizadas elemento por
elemento da matriz.
• Usa-se os mesmos caracteres das operações usuais
precedidos por um ponto (“.*”, “./”, “.\”, “.^”)
•
•
•
•
•
Exemplo:
Crie duas matrizes quadradas a e b
Faça:
>>a*b (multiplica as matrizes)
>>a.*b (multiplica os elementos da mesma
posicao)
19
Manipulação de vetores e matrizes
•
•
•
•
Gerando vetores: a declaração
>>x = 1:5
gera o vetor linha
x = 1 2 3 4 5 . (incremento de 1)
20
Manipulação de vetores e matrizes
• Elementos das matrizes: utiliza-se índices entre
parênteses.
– >>
– >>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) são
zerados.
– A(:,3) = 0 elementos da terceira coluna são zerados.
– A(1:2,3) especifica uma submatriz 2x1 com os 2 primeiros
elementos da terceira coluna de A
resposta (MATRIZ ORIGINAL): 3
6
21
Funções Escalares
• As funções escalares mais comuns são:
–
–
–
–
–
–
–
sin - seno
asin - arcoseno
abs - valor absoluto
round - arredonda
cos - cosseno
acos - arco cosseno
log - log natural
– sqrt - raíz quadrada
– floor - arredonda na direção
de menos infinito
– tan - tangente
– atan - arco tangente
– rem - resto da divisão
ex: rem(10,3)
– sign - função sinal
– ceil - arredonda na direção
de mais infinito
22
Funções Vetoriais
• Outros exemplos de funções vetoriais são:
–
–
–
–
–
–
–
–
max(a) encontra o valor máximo
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 são diferentes de zero
sort(a) ordena em ordem crescente
• Exemplo:
– max(a)
23
Arquivos m
• são arquivos que contém comandos do MATLAB
• 2 passos:
– criar arquivo .m usando um editor de texto ou:
• edit nome do arquivo ou File New M-File
• digitar código do script.
• File Save As - escolher diretório 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
24
Controle de fluxo
>> for i=1:5
for j=1:5
a(i,j)=i+j;
b(i,j)=i-j;
end
end
c=a+b;
Laço for
>> for i=1:5
x(i)=i^2;
end
x=
1
4
9
16
25
b=
a=
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
25
Controle de fluxo
• Laço 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
26
Arquivos m
• Exemplo 1 script
– criar arquivo
– digitar código
•
•
•
•
clear
clc
A = [1 2 3; 4 5 6; 7 8 9]
B = A’
– salvar como inicio.m
– executar na janela do MatLab
• >> inicio
• Comentários:
– % comentário de linha
– texto apos o % na mesma linha não será executado
27
Outros comandos
• Entrada de dados: Receber um dado numérico do usuário
– <variável> = input('<mensagem>');
– Exemplo:
• n1 = input('Digite um numero: ')
• Entrada de dados: Receber um dado texto do usuário
– <variável> = input('<mensagem>', 's')
– Exemplo:
• n1 = input('Digite seu nome: ', 's')
• Mostrar um texto ou conteúdo de uma variável:
– disp('<mensagem>');
– Exemplo:
• disp('Total calculado: ');
• disp(soma);
• Limpar a tela
– Exemplo:
» n1=input ('digite seu nome ', 's');
Vania
» fprintf (1, 'Oi %s', n1)
Oi Vania»
• clc;
28
Exercicios Parte II
Resolvendo Equações Polinomiais
•
•
Achar raízes de um polinômio:
4x²=0 tem duas raízes nulas.
– >>p=[4 0 0]
– >>r=roots(p)
•
4x²+5=0 não tem raízes reais.
– >>p=[4 0 5]
– >>r=roots(p)
•
r=
0
0
r = 0 + 1.1180i
0 - 1.1180i
4x²-12x=0 tem duas raízes reais: x'=3, x"=0
– >>p=[4 -12 0]
– >>r=roots(p)
r=
0
3
30
Resolvendo Equações 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 polinômio a partir de suas raízes:
>> pp = poly(r)
pp =
1.0000 -12.0000 -0.0000 25.0000 116.0000
31
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 saída:
–
–
–
–
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')
32