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
Download

1 2 3 4 5 6 7 8 9