MATLAB - Matrix Laboratory
Adaptado de Profa. Carla Salso Freitas
e profa. Luciana Nedel
Por Profa. Patrícia Jaques
Programação
• Diversos níveis:
–
–
–
–
–
linguagem de máquina
linguagem assembler
linguagem C
planilhas eletrônicas (Excel)
pacotes científicos (MATLAB, Scilab, Mathematica)
• Qual escolher?
– É preciso analisar as necessidades
MATLAB - INF01040 - Profa. Patrícia Jaques
2
MATLAB
• Software voltado ao cálculo numérico
• Integra:
–
–
–
–
análise numérica;
cálculo com matrizes;
processamento de sinais;
construções com gráficos.
• Elemento básico de informação: MATRIZ.
• Ótima performance.
• Alto nível.
• (www.mathworks.com)
MATLAB - INF01040 - Profa. Patrícia Jaques
3
Pacotes científicos
• MATLAB (www.mathworks.com)
–
–
–
–
–
linguagem de programação
ambiente para desenvolvimento
sistema gráfico
funções matemáticas
interface com linguagens de programação (C,
FORTRAN)
MATLAB - INF01040 - Profa. Patrícia Jaques
4
Pacotes científicos
• SCILAB
– sistema aberto (freeware) desenvolvido pelo INRIA (instituto
francês)
– implementa um subconjunto das funções do MATLAB
– Disponível em: http://scilabsoft.inria.fr/
MATLAB - INF01040 - Profa. Patrícia Jaques
5
Apresentação
•
•
•
•
•
Software para análise numérica
Cálculo com matrizes
Processamento de sinais
Construção de gráficos
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)
MATLAB - INF01040 - Profa. Patrícia Jaques
6
Introdução
• Trabalha apenas com um tipo de objeto: Matrizes
• Os elementos das matrizes podem ser números
complexos
• Escalares são matrizes 1x1 ex: >> a= 6
• Vetores são matrizes 1xN ou Nx1
• 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
MATLAB - INF01040 - Profa. Patrícia Jaques
7
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!
MATLAB - INF01040 - Profa. Patrícia Jaques
8
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(6) = 5
resulta em: x = -1.3000 1.4142 23.0400
MATLAB - INF01040 - Profa. Patrícia Jaques
0
0
5
9
Acessando um elemento da Matriz
• A = [1 2 3;4 5 6;7 8 9]
1
1
2
3
2
3
1
1
2
4
3
7
4
10
7
2
5
5
6
8
3
8
6
9
9
A(2,1)=10
A(2)=10
MATLAB - INF01040 - Profa. Patrícia Jaques
10
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=[A;r]
A=
1
4
7
10
2
5
8
11
3
6
9
12
MATLAB - INF01040 - Profa. Patrícia Jaques
11
Introdução
• Pequenas matrizes podem ser extraídas 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
MATLAB - INF01040 - Profa. Patrícia Jaques
3
6
9
12
12
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.
• Se a expressão é tão grande que não cabe em uma
linha, pode-se continuar a expressão na próxima
linha usando um espaço 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. Patrícia Jaques
13
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
MATLAB - INF01040 - Profa. Patrícia Jaques
14
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
MATLAB - INF01040 - Profa. Patrícia Jaques
15
Números complexos
• Número complexo  z= a + b*i
– onde i= √-1
• Funções “i”
>> z= 3 + 4 * i
• Matrizes complexas permitem também a forma:
>> A= [1 2; 3 4]+i*[5 6; 7 8]
• Caso “i” seja usado como variável e tenha seu valor
modificado, pode-se criar uma nova unidade
complexa:
>> ii = sqrt(-1)
>> z = 3 + 4 * ii
MATLAB - INF01040 - Profa. Patrícia Jaques
16
Formatos de saída
• O comando format modifica o modo como as matrizes são
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. Patrícia Jaques
17
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
MATLAB - INF01040 - Profa. Patrícia Jaques
18
Funções
• Conjunto extenso de funções:
•
•
•
•
•
•
•
•
•
•
•
matemática elementar
funções especiais
matrizes elementares
matrizes especiais
decomposição e fatorização de matrizes
análise de dados
polinômios
solução de equações diferenciais
equações não-lineares e otimização
integração numérica
processamento de sinais
MATLAB - INF01040 - Profa. Patrícia Jaques
19
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
• det(A)
– Determinante da matriz A.
• inv(A)
– Inversa da matriz A.
MATLAB - INF01040 - Profa. Patrícia Jaques
20
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
=
MATLAB - INF01040 - Profa. Patrícia Jaques
2 6 10
6 10 14
10 14 18
21
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
MATLAB - INF01040 - Profa. Patrícia Jaques
22
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
MATLAB - INF01040 - Profa. Patrícia Jaques
23
Operações com matrizes
• Divisão  indicada por “/” ou “\”.
• Se A for quadrada, A\B e B/A correspondem a inv(A)*B e
B*inv(A) respectivamente
– A\B = inv(A)*B
– B/A = B*inv(A)
• Em geral:
– X = A\B  A*X = B
– X = B/A  X*A = B
MATLAB - INF01040 - Profa. Patrícia Jaques
24
Operações com matrizes
• Exponenciação -> indicada por “^”.
• A^p eleva A à p-ésima potência se A for quadrada e p
for um escalar.
• Se p é inteiro maior do que 1, isso é feito através de
múltiplas multiplicações.
MATLAB - INF01040 - Profa. Patrícia Jaques
25
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
>>a.*b
MATLAB - INF01040 - Profa. Patrícia Jaques
26
Operações com conjuntos
• Operações comparativas (<, <=, >, >, ==, ~=) podem ser
realizadas entre matrizes de mesma dimensão
• 1 para verdadeiro
• 0 para falso
– O resultado é uma matriz de 0s e 1s correspondendo a Falso e
Verdadeiro
– & (e) e | (ou) também podem ser usados
MATLAB - INF01040 - Profa. Patrícia Jaques
27
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)
Pode-se usar outros incrementos:
>> y = 0:pi/4:pi
y = 0.0000 0.7854 1.5708 2.3562 3.1416
• A função k=linspace(0,1,6) gera um vetor linearmente
espaçado de 0 a 1, contendo 6 elementos
k=0
0.2000 0.4000 0.6000 0.8000 1.0000
MATLAB - INF01040 - Profa. Patrícia Jaques
28
Manipulação de vetores e matrizes
• Elementos das matrizes: utiliza-se índices entre
parênteses.
– >>A=[1 2 3;4 5 6;7 8 9];
– >>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
ans = 3
6
MATLAB - INF01040 - Profa. Patrícia Jaques
29
Manipulação de vetores e matrizes
• exclusão de linhas ou colunas
– atribuir [ ] à linha ou coluna
 exclui terceira coluna da matriz
 exclui duas primeiras linhas da matriz
• A(:,3) = []
• A(1:2,:) = []
• troca entre linhas ou colunas
– B = A (:, [1 3 2])  troca ordem das colunas 2 e 3.
– A = A ([3 2 1], :)  inverte ordem das linhas.
• concatenação
– 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
– Então, B = [A(1,:); A(3,:)] é uma matriz 2 x 3 contendo a primeira
e a terceira linhas de A.
MATLAB - INF01040 - Profa. Patrícia Jaques
30
Funções de Construção de Matrizes
• É possível construir uma matriz a partir de blocos.
Exemplo, se A é uma matriz 3 x 3, então
– B = [A, zeros(3,2); zeros(2,3), eye(2)]
– Matriz 5 x 5.
Concatena na
próxima linha
B=
A 3
4
6
0
0
11 5
1 -3
2 1
0 0
0 0
0
0
0
1
0
0
0
0
0
1
Concatena na
próxima coluna
zeros(3,2)
eye(2)
zeros(2,3)
MATLAB - INF01040 - Profa. Patrícia Jaques
31
Funções de Construção 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. Patrícia Jaques
32
Funções de Construção 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. Patrícia Jaques
33
Funções de Construção 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, então diag(A) é um
vetor cujos componentes são os elementos da
diagonal de A.
– A=[3 11 5; 4 1 -3; 6 2 1]
– diag(A)  Tente também: diag(diag(A))
ans =
3
1
1
MATLAB - INF01040 - Profa. Patrícia Jaques
34
• 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. Patrícia Jaques
35
Exemplo
a=
1
5
1
5
2
6
2
6
3
7
3
7
4
8
4
8
» b = [a(1:2,1:1), a(1:2,3:4) ; a(4:4,1:1), a(4:4,3:4)]
b=
1
5
5
3
7
7
4
8
8
MATLAB - INF01040 - Profa. Patrícia Jaques
36
Funções Escalares
• Algumas funções no Matlab operam essencialmente
sobre escalares, mas operam sobre cada elemento se
forem aplicadas a uma matriz.
• As funções escalares mais comuns são:
–
–
–
–
–
–
–
–
sin - seno
asin - arcoseno
exp - exponencial
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
– sign - função sinal
– ceil - arredonda na direção
de mais infinito
MATLAB - INF01040 - Profa. Patrícia Jaques
37
Funções Vetoriais
• Outras funções 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 aplicação para cada coluna.
• É possível operar sobre linha por linha transpondo-se
a matriz, por exemplo:
– a = rand(5)
– mean(a)  média de cada coluna
– mean(a’)  média de cada linha
MATLAB - INF01040 - Profa. Patrícia Jaques
38
Funções Vetoriais
• Outros exemplos de funções vetoriais são:
– max(a)  encontra o valor máximo
–
–
–
–
–
–
–
• [Y,I] = MAX(X)
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(max(a))
– max(a)
MATLAB - INF01040 - Profa. Patrícia Jaques
39
Exercícios
• digitar
• criar matrizes
– A = [1 2 3 4 5 6 7 8 9]
– B = [1;2;3;4;5;6;7;8;9]
– C = [1 2 3;4 5 6;7 8 9]
• calcular
– A`
– B`
– C`
–
–
–
–
–
–
–
–
b
B
who
whos
clear B
clc
who
A,C
• calcular
–
–
–
–
–
–
–
MATLAB - INF01040 - Profa. Patrícia Jaques
sum(A)
sum(C)
sum(C`)
sum(C`)`
diag(C)
sum(diag(C))
sum(diag(fliplr(C)))
40
Exercícios
• calcular
• calcular
–
–
–
–
–
–
–
–
C
s = C(1,3) + C(2,3) + C(3,3)
C(1,3) + C(2,3) + C(3,3) + C(4,3)
CC = C
CC(4,3) = 1
CC
clear CC
clc
–
–
–
–
–
–
–
–
C(2,3)
C(6)
1:10
c = 1:10
100:-7:50
pi
c = 0:pi/4:pi
c
MATLAB - INF01040 - Profa. Patrícia Jaques
• calcular
–
–
–
–
–
–
–
–
C(1:3,3)
s
s = sum(C(1:3,3))
s = sum(C(:,3))
s = sum(C(:,end))
D = C(:,[1 3 2])
A+C
C+2
41
Exercícios
• calcular
–
–
–
–
–
–
–
–
C+D
C-D
clear
who
a = [8 1 6;3 5 7; 4 9 2]
b = 2 * ones(3,3)
a*b
a .* b
MATLAB - INF01040 - Profa. Patrícia Jaques
42
Exercício
• 9) Considere a seguinte matriz:
• 7.5 8.0 9.0
6.7 7.7 5.4
8.0 9.2 7.4
6.6 6.6 6.6
5.0 8.0 7.0
5.2 6.1 9.5
8.3 7.2 10.0
9.0 9.0 9.0
3.5 4.5 5.5
6.7 5.0 4.6
• que corresponde a notas de provas de alunos (10 alunos).
a) Calcule a nota final de cada aluno, como a média das 3
notas, sendo que a última nota tem peso 2.
b) Calcule a média aritmética das notas da turma: média de
cada prova e média das notas finais
c) Use as funções adequadas para listar a menor nota final e a
maior nota final.
MATLAB - INF01040 - Profa. Patrícia Jaques
43
MATLAB - continuação
Anotando comandos usados
• diary nome do arquivo - cria arquivo texto no qual
ficarão registrados os comandos e as variáveis
subseqüentes.
• diary off - fecha arquivo e salva-o como texto.
• type nome do arquivo - apresenta na janela de
comando todo o conteúdo do arquivo.
• é possível também abri-lo em editores de texto
ASCII.
MATLAB - INF01040 - Profa. Patrícia Jaques
45
Paginando saída na janela de comando
• more on - quando uma saída for muito extensa,
mostra somente uma tela de cada vez.
– Enter  avança uma linha.
– Barra de Espaço  avança uma tela.
– q  pára de mostrar saída.
• more off - retorna ao modo normal (padrão).
MATLAB - INF01040 - Profa. Patrícia Jaques
46
Salvando o Workspace
• File  Save Workspace As
• save nome do arquivo (salva no diretório corrente)
• File  Load Workspace
• load nome do arquivo (busca no diretório corrente)
• File  Set Path permite alterar diretório corrente
MATLAB - INF01040 - Profa. Patrícia Jaques
47
Controle de fluxo
Laço 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=
2
b=
3 4 5
6
3 4 5 6
7
4 5 6 7
8
5 6 7 8
9
6 - Profa.
7 Patrícia
8 9
MATLAB - INF01040
Jaques
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
48
Controle de fluxo
• Laço while
•
a = 1; b = 15;
while a<b
clc
a = a+1
b = b-1
pause(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. Patrícia Jaques
49
Arquivos m
• são arquivos que contém comandos do MATLAB
– scripts
• não recebem argumentos de entrada nem retornam
argumentos de saída.
• operam em dados do workspace.
• úteis para automatizar séries de passos que precisam ser
executados várias vezes.
– funções
• podem receber e/ou retornar argumentos.
• variáveis internas são locais à função.
• úteis para estender a linguagem MATLAB.
MATLAB - INF01040 - Profa. Patrícia Jaques
50
Arquivos m
• 2 passos:
– criar arquivo .m
usando um editor de
texto.
– chamar o arquivo m da
linha de comando, ou
de outro arquivo m.
MATLAB - INF01040 - Profa. Patrícia Jaques
51
Arquivos m
• criando um arquivo m
– edit nome do arquivo ou File  New  M-File
– digitar código do script ou da função.
– File  Save As - escolher diretório corrente ou que esteja
presente no search path do MATLAB.
• Search Path  referência para o MATLAB procurar os arquivos
m.
– File  Set Path
• usando um arquivo m
– nome do arquivo
MATLAB - INF01040 - Profa. Patrícia Jaques
52
Arquivos m
• Exemplo 1  script
– criar arquivo
– digitar código
•
•
•
•
Exemplos:
- procbasico
clear
clc
A = [1 2 3; 4 5 6; 7 8 9]
B = A’
- linhatri
- circulo
- malha
– 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
MATLAB - INF01040 - Profa. Patrícia Jaques
53
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:
• clc;
MATLAB - INF01040 - Profa. Patrícia Jaques
54
Rotinas de Entrada/Saída
• TEXTREAD
» [N,F,S]=textread(’dados.txt',’%d %f %s')
N=
6
5
dados.txt
6 0.5 dd1
5 0.3 dd3
3 1.334 dd5
3
F=
0.5000
0.3000
1.3340
S=
‘dd1’
‘dd3’
‘dd5’
Exercício
• Escreva um programa (arquivo-m) para:
– Ler um arquivo contendo os dados de temperaturas
mínimas e máximas de 15 dias, no formato (%d %f %f)
1 15.9 31.9
– Calcular a média, menor e maior temperatura (das
temperaturas mínima e máxima)
– Listar os resultados
MATLAB - INF01040 - Profa. Patrícia Jaques
56
Solução – exerciciotemp.m
[dia,minima,maxima] = textread('dadostemp.txt','%d %f %f');
mediamin = mean(minima);
mediamax = mean(maxima);
minmin = min(minima);
minmax = min(maxima);
maxmin = max(minima);
maxmax = max(maxima);
disp (['Media das Minimas', mean(minima)]);
disp (['Media das Maximas', mean(maxima)]);
disp (['Menor Minima', min(minima)]);
disp (['Menor Maxima', min(maxima)]);
disp (['Maior Minima', max(minima)]);
disp (['Maior Maxima', max(maxima)]);
MATLAB - INF01040 - Profa. Patrícia Jaques
57
Resolvendo Equações Polinomiais
• Achar raízes de um polinômio:
• 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
MATLAB - INF01040 - Profa. Patrícia Jaques
58
Atividade
• Exemplo:
– f(x) = 3*x^4-0.5.*x^3+x-5.2 (x assume valores escalares)
• p = [3 -0.5 1 -5.2];
• f = polyval(p,x);
• Digitar estes comandos e observar a saída:
p=[1 4 -7 -10];
x = linspace(-1,3);
v=polyval(p,x) - >gera f(x) para cada x contido no vetor x
plot(x,v)
title(‘Figure 19.1:x{^3} + 4x{^2} - 7x - 10´)
xlabel(´x´)
MATLAB - INF01040 - Profa. Patrícia Jaques
59
Expressões Simbólicas
• Defina as variáveis com o comando syms
syms x
• Crie as expressões utilizando estas variáveis
f(x) = 2x2+3x-5
x2-x+7
g(x) =
f(x) + g(x)
f(x) - g(x)
f(x) * g(x)
f(x) / g(x)
>>
>>
>>
>>
>>
>>
>>
>>
>>
f=2*x^2+3*x-5
g=x^2-x+7;
f + g
f-g
-> (2*x^2+3*x-5)*(x^2-x+7)
f*g
expand(ans)
-> 2*x^4+x^3+6*x^2+26*x-35
f / g
expand(ans)
pretty (ans)
MATLAB - INF01040 - Profa. Patrícia Jaques
60
Expressões Simbólicas
• Composição e substituição em funções:
>> f=1/(1-x^2)
>> g=sin(x)
>> compose(f,g)
ans = 1/(1-sin(x)^2)
>> compose(g,f)
ans = sin(1/(1-x^2))
>> finverse(g)
ans = asin(x)
>> subs(f,x,2)
ans = -1/3
• compose: calcula a composição das funções f(x) e g(x) em f(g(x)),
• finverse: encontra a inversa funcional de uma expressão
• subs: substitui uma variável por um número (ou por outra variável) em uma expressão
MATLAB - INF01040 - Profa. Patrícia Jaques
61
Expressões Simbólicas
• Solução de Equações
ax2+bx+c = 0
>> syms a b c x % manipula como variável simbólica
>> solve(a*x^2+b*x+c)
ans =
[1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[1/2/a*(-b-(b^2-4*a*c)^(1/2))]
>> pretty(ans) %mostra formato de fração
[
2
1/2]
[
-b + (b - 4 a c)
]
[1/2 --------------------]
[
a
]
[
]
[
2
1/2]
[
-b - (b - 4 a c)
]
[1/2 --------------------]
[
a
]
MATLAB - INF01040 - Profa. Patrícia Jaques
62
Resolvendo Sistema de Equações Lineares
usando “Divisão Esquerda”
•
Se [A] é uma matriz quadrada (m = n):
[A]{x} = {b}
{x} = [A]-1{b}
{x} = ?
[A] = mxn
{x} = nx1
{b} = mx1
» x =
inv(A)*b;
» x = A\b;
Erro se singular
Aviso se quase singular
Exemplo: Resolvendo Equações
• Resolver este conjunto de equações simultâneas:
» A = [-1 1 2; 3 -1 1;-1 3 4];
» b = [2;6;4];
» x = inv(A)*b
x =
1.0000
-1.0000
2.0000
» x = A\b
x =
1.0000
-1.0000
2.0000
-x1
+ x2 + 2x3 = 2
3x1 - x2 + x3 = 6
-x1 + 3x2 + 4x3 = 4
Gráficos planos 2D
• O comando plot cria gráficos de x-y no plano;
• Se x e y são vetores de mesmo tamanho, o comando
plot(x,y) abre uma janela gráfica e desenha um gráfico
x-y dos elementos de x versos os elementos de y.
• Exemplo:
– x=-4:.01:4;
– y=sin(x);
– plot(x,y)
Peaks – conjunto de dados
Para mostrar a capacidade
Gráfica (plot, mesh, surf,
contour3, contour, surfc, meshz)
MATLAB - INF01040 - Profa. Patrícia Jaques
65
Gráficos
• Comandos de plotar
– Plot(x, y) – gera gráficos lineares
– Semilogx(x, y) – gráfico com escala linear para y e escala
logarítmica para x
– semilogy(x, y) – a escala logarítmica é para y
– Loglog(x, y) – escala logarítmica para ambos (x e y)
– Bar(x, y) – gera um gráfico em barras com elementos do
vetor y localizados no vetor x
– Stairs(x, y) – gera um gráfico de degraus com elementos do
vetor y
– Hist(x,y) – plota histograma
– Rose(x,y) – plota histograma em ângulo
MATLAB - INF01040 - Profa. Patrícia Jaques
66
Gráficos planos 2D
• Outro exemplo: Desenhar o
gráfico de y=exp(-x.^2) no
intervalo –1.5 a 1.5.
– x = -1.5:0.01:1.5;
– y= exp(-x.^2);
– plot(x,y)
• O comando grid coloca
uma grade de linhas sobre
o gráfico atual.
– Experimente refazer o
comando anterior e depois
digite grid.
MATLAB - INF01040 - Profa. Patrícia Jaques
67
+ gráficos
• Gráficos podem ter títulos, eixos rotulados e textos.
Para isso usa-se os seguintes comandos que tem
strings como argumentos:
–
–
–
–
–
title título do gráfico
xlabel rótulo do eixo x
ylabel rótulo do eixo y
gtext texto posicionado interativamente (mouse ou setas)
text posiciona texto na posição especificada
» title 'Título'
» xlabel 'x'
» ylabel 'y'
MATLAB - INF01040 - Profa. Patrícia Jaques
68
+ gráficos
Exemplo:
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y);
%o caracter \pi cria o símbolo 
xlabel('x = 0:2\pi');
ylabel('Seno de x');
title('Função Seno','FontSize',12);
gtext ('y = sin(x)’);
MATLAB - INF01040 - Profa. Patrícia Jaques
69
+ gráficos
• Os eixos são auto escalonados. Podem ser
modificados utilizando-se o comando axis. Se
c=[ xmin, xmax, ymin, ymax ], então o comando
– axis(c) ajusta o escalonamento dos eixos para os limites
definidos no vetor c.
MATLAB - INF01040 - Profa. Patrícia Jaques
70
+ gráficos
– axis auto - retorna-se ao auto escalonamento
– axis square - garante que a mesma escala é usada para
ambos os eixos
– axis image - apresenta imagem com a mesma relação de
aspecto da imagem
– axis off - desativa os eixos
– axis on - ativa os eixos
MATLAB - INF01040 - Profa. Patrícia Jaques
71
Gráficos planos 2D múltiplos
• Há duas formas de se fazer gráficos múltiplos em
uma única janela.
• Exemplo 1:
–
–
–
–
–
x=0:0.01:2*pi;
y1=sin(x);
y2=sin(2*x);
y3=sin(4*x);
plot(x,y1,x,y2,x,y3)
MATLAB - INF01040 - Profa. Patrícia Jaques
72
+ gráficos
• É possível alterar os caracteres de tipo de linha e de
ponto usados como padrão.
• Exemplo:
–
–
–
–
–
x=0:0.01:2*pi;
y1=sin(x);
y2=sin(2*x);
y3=sin(4*x);
plot(x,y1,'--',x,y2,'*',x,y3,'+')
MATLAB - INF01040 - Profa. Patrícia Jaques
73
+ gráficos
•
• Tipos de linha:
–
–
–
–
–
–
–
–
–
–
–
–
–
sólido (-),
tracejado (--),
pontilhado (:),
traço e ponto (-.)
•
• Exemplo:
x1 = 0:pi/100:2*pi;
x2 = 0:pi/10:2*pi;
plot(x1,sin(x1),'r:',x2,sin(x2),‘c+')
Tipos de Marcadores:
ponto (.),
sinal de adição (+),
asterisco (*),
círculo (o),
letra x (x)
Quadrado (s)
Triangulo (v)
Losango (d)
Hexágono (h)
Cores:
–
–
–
–
–
–
–
Amarelo (y)
Magenta (m)
Verde (g)
Azul (b)
Preto (k)
Vermelho (r)
Ciano (c)
MATLAB - INF01040 - Profa. Patrícia Jaques
74
Gráficos planos 2D
• O comando subplot pode ser usado para particionar
a tela e permite a apresentação simultânea de vários
gráficos não superpostos.
• Exemplo:
– ...
MATLAB - INF01040 - Profa. Patrícia Jaques
75
Gráficos planos 2D
–
–
–
–
–
–
–
–
–
–
x=0:0.01:2*pi;
y1=sin(x);
y2=sin(2*x);
y3=sin(3*x);
y4=sin(4*x)+cos(x);
y5=cos(2*x)+sin(3*x);
subplot(2,2,1), plot(y1)
subplot(2,2,2), plot(y2)
subplot(2,2,3), plot(y3)
subplot(2,2,4), plot(y4)
• Exercício:
– modifique o código ao lado
para apresentar também a
função y5.
MATLAB - INF01040 - Profa. Patrícia Jaques
76
Gráficos em malhas 3D
• É possível desenhar superfícies em malhas 3D com
a função mesh.
• O comando mesh(z) cria um desenho 3D em
perspectiva dos elementos da matriz z.
• A superfície da grade é definida pelas coordenadas z
dos pontos, acima de uma grade retangular no plano
x-y.
MATLAB - INF01040 - Profa. Patrícia Jaques
77
Gráficos em malhas 3D
• Exemplo:
– mesh(eye(10))
• Para desenhar o gráfico de uma função z=f(x,y)
sobre um retângulo, deve-se primeiro definir os
vetores xx e yy que dão as partições dos lados do
retângulo.
MATLAB - INF01040 - Profa. Patrícia Jaques
78
Gráficos em malhas 3D
• Com a função meshgrid (domínio da grade) é
possível criar uma matriz x, cujas linhas igualam-se a
xx e cujas colunas têm comprimentos de yy e,
similarmente, uma matriz y, cujas linhas igualam-se à
matriz yy usando-se o comando:
– [x,y]=meshgrid(xx,yy);
• Depois, computa-se uma matriz z, obtida pela
avaliação da função f sobre as matrizes x e y, com a
qual o comando mesh pode ser utilizado.
MATLAB - INF01040 - Profa. Patrícia Jaques
79
Gráficos em malhas 3D
• Exemplo:
–
–
–
–
–
xx=-2:.1:2;
yy=xx;
[x,y]=meshgrid(xx,yy);
z=exp(-x.^2-y.^2);
mesh(z)
• As primeiras linhas podem ser omitidas, se
modificarmos a linha de meshgrid para:
– [x,y]=meshgrid(-2:.1:2, -2:.1:2);
MATLAB - INF01040 - Profa. Patrícia Jaques
80
Gráficos em malhas 3D
• Exemplo:
–
–
–
–
–
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z,'EdgeColor','black')
eps é o menor número em ponto flutuante do sistema. Sua
funçao no exemplo é evitar divisão por zero.
– surf(X,Y,Z)
MATLAB - INF01040 - Profa. Patrícia Jaques
81
Gráficos em malhas 3D
• Comandos para plotar gráficos tridimensionais e
contornos;
–
–
–
–
–
–
–
–
plot3 – plota um gráfico 3D
Comet3 – plota em 3D com trajetória de cometa
contour3 – plota contorno 3D
clabel – plota contorno com valores
mesh – plota malha 3D
meshc – combina mesh e contour
surf – plota superfície 3D
surfc – combina surf e contour
MATLAB - INF01040 - Profa. Patrícia Jaques
82
Gráficos em malhas 3D
• Anotações no gráfico;
–
–
–
–
–
–
–
Title – título do gráfico
Xlabel – título do eixo x
Ylabel – título do eixo y
Zlabel – título do eixo z
Text – insere anotações no gráfico
Gtext – insere anotações com o mouse
Grid – linhas de grade no gráfico
MATLAB - INF01040 - Profa. Patrícia Jaques
83
Exemplos de arquivos.m
• matrizA.m
– Gera matriz A (10x10)
• cartograf.m
– mapeamento de uma parte do fundo do oceano
• circulo.m, exemplo-funcao.m, exfuncao.m , procbasico.m
– usa comando plot, title, xlabel, ylabel….
• distacia.m
– distancia em linha reta entre dois pontos num plano, usa funcao sqrt
• exemploG3D.m, D3Dmesh.m, malha.m, superficies.m
– comandos mesh, surf para gerar gráficos 3D
• exemplopol.m
– Exemplo de polinômios
• G2D.m, G2Dplot.m, G2Dplotmult
– Usa o comando plot, plotar com múltiplas linhas
MATLAB - INF01040 - Profa. Patrícia Jaques
84
Exemplos de arquivos.m (2)
• exif.m
– Comando if-end
• imagem.m
– usa comando imagesc, matriz visualizada como imagem
• linhatrid.m
– Diagrama de linha tridimensional (uso do title, xlabel...)
• matrizex.m
– Exercício do cálculo das medias
• exerciciotemp.m
– Exercício das temperaturas
MATLAB - INF01040 - Profa. Patrícia Jaques
85
Download

A=A(1:3,:)