Post on 28-Nov-2014
Universidade Estadual de Campinas
Faculdade de Engenharia Mecânica
Departamento de Projeto Mecânico
Laboratório de Dinâmica de Estruturas e Máquinas
Estática – EM306A 1º semestre 2010
Introdução ao Matlab
Prof. Dr. Robson Pederiva
robson@fem.unicamp.br
Hugo Heidy Miyasato
hugomiyasato@gmail.com
F. 3521-3180 (Ldem)
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Sobre o Matlab
• Software da empresa Mathworks
• Ambiente para computação numérica
• Vetores e Matrizes
• Gráficos de funções e dados 2D e 3D
• Linguagem de programação
• Aquisição e processamento de sinais
• Resolução de sistemas de equações differenciais lineares/não-lineares(ODE)
• Projeto e simulação de sistemas de controle
• Interfaces gráficas (GUIs)
• Computação Simbólica
• Modelagem gráfica – Simulink
• E muito mais…
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Um pouco de história
• Criação: 1970
• Local: Universidade do Novo México
• Autor: Cleve Moler – chairman do Departamento de Ciência da
Computação
• Nome do Software: Matlab - Matrix Laboratory
• Objetivo: utilizar pacotes matemáticos LINPACK e EISPACK sem a
necessidade de saber FORTRAN
• Aplicação em na área de controle: Jack Little
• A partir de 2000: uso do pacote Lapack para manipulação de matrizes e
vetores
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
O ambiente de desenvolvimento
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Perguntas iniciais
•“Onde estou?”
•“O que estou fazendo?”
•“O que eu fiz?”
•“O que eu tenho na memória?”
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
O ambiente
“O que estou fazendo?”
Command Window
“O que eu fiz?”
Command
History
“Onde estou?”
Current
Directory
“O que tenhona memória?”
Workspace
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
“Onde estou?” Current Directory
Visualizar/ alterar
Diretórioutilizado
Arquivos
no
Diretório
Por ele, épossível
abrir/fechar, criar/apagar, arquivos ou
pastas.
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Alterando o Diretório de Trabalho
Clique no botão com “…” e selecione/crie a
pasta onde desejatrabalhar.
A pasta Documents\Matlab é a pasta de trabalhopadrão, aparecendo toda vez que o software é aberto.
Você pode alterá-la.
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
“O que estou fazendo?” Command Window
>> 27
ans =
27
>>
Este espaço é detinado para os comandos do usuário. Faça o teste, digite qualquer número no Command
Window:
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
“O que eu fiz?” Command History
Este espaço registra todo o comando realizadopelo usuário. Depois de digitar o valor, automaticamente o Command History é
atualizado com a ação:
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
“O que eu tenho na memória?” Workspace
O Workspace mostra todas as variáveisarmazenadas na memória. Como não escolhemosnenhuma variável para armazenar o valor digitado, ele é automaticamente guardado na variável ans:
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Perguntas iniciais
•“Vou ter que digitar todo meuprograma no Command Window?”
•“Não posso salvar nada?”
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
“Não posso salvar nada?” M-File
New M-File
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Script: Sequência de Comandos
Editor: Aqui você podedigitar os comandos,
podendo salvá-lo.
Digitando no Command Window, fatalmente você
pode perder seus dados aofechar ao programa.
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Faça um teste
Digite uma sequência qualquer de números no editor.
Em seguida salve o seu M-File
clicando em
no diretório onde deseja armazená-lo.
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Faça um teste
O M-File será aprofundado numa seção futura.
Após salvar o arquivo, aperte F5 e sua sequência de comandos será executada no
Command Window.
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Um recurso importante: Help
Vantagem: Você não precisaimplementar tudo, pois as bibliotecas de funções sãoconstantemente atualizadas.
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Um exemplo: Help
Se você digitar help + nome de umafunção no Command Window, é mostrada
uma breve descrição do comando:
No campo Search da janela de Help, também é possível ver uma descrição
com exemplos da utilização do comando:
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Tipos de Variáveis
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Simplificando os tipos
Diferentemente de outras linguagens, no Matlab o tipo da variável é descritoautomaticamente:
c = 1;double c = 1;
int c = 1;
float c = 1;
long c = 1;
short c = 1;
MatlabC, C++, JAVA
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Variáveis: Nomes
• O nome da variável não pode ser inciada por número.
• Nenhuma posição possuir algum operador da sua linguagem (+,-, *,%,@, /, <,>)
>> a1d = 2
a1d =
2
>> ad1 = 2
ad1 =
2
>> 1ad = 2
??? 1ad = 2
|
Error: Unexpected MATLAB expression.
>> &ad = 2
??? &ad = 2
|
Error: Unexpected MATLAB operator.
>> >ad = 2
??? >ad = 2
|
Error: Unexpected MATLAB operator.
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Variáveis: Nomes
Os nomes das variáveis
podem conter muitos
caracteres.
>> Pneumoultramicroscopicossilicovulcanoconiotico = 100
Pneumoultramicroscopicossilicovulcanoconiotico =
100
>> Pneumoultramicroscopicossilicovulcanoconiose = 200
Pneumoultramicroscopicossilicovulcanoconiose =
200
>> Hipopotomonstrosesquipedaliofobia = 300
Hipopotomonstrosesquipedaliofobia =
300
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Variáveis: Números Complexos
>> a = 1+2*i
a =
1.0000 + 2.0000i
>> a = 1+2*j
a =
1.0000 + 2.0000i
>> a = complex(1,2)
a =
1.0000 + 2.0000i
>>
Os números complexos são representados por uma parte real, somada a uma parteimaginária, multiplicada por “i” ou “j”.
Número complexo com “i”
Número complexo com “j”
Número complexo gerado por
complex(parte_real, parte_imaginaria)
MUITO IMPORTANTE:
não utilize i e j como variável !!!
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Variáveis: São todas matrizes
A matriz é iniciada por “[” e terminada por “]”. Espaço “ ” separa as colunas e “;” as linhas.
Pode conter números REAIS ou COMPLEXOS:
Matriz 1 x 4
Matriz 4 x 1
Matriz 2 x 2
Matriz 1 x 4
Matriz 3 x 3
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Variáveis: São todas matrizes
Como todas as variáveis são matrizes, uma variável simples é uma matrix 1x1:
c = 1 é o mesmo que c = [1]
IMPORTANTE: a separação de casas decimais é feita por ponto “.”. A vírgula “,” éutilizada como separados de comandos, podendo gerar erros de lógica.
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Variáveis: casos especiais – possíveis erros
Inf (Infinito): divisão por zero ou máximo da precisão numérica do computador.
NaN (Not a Number): divisão de infinito por infinito e de zero por zero.
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Organização:
Desalocar, limpar tela e fechar janelas
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Desalocar, limpar tela e fechar janelas
clear all: desaloca todas as variáveis alocadas no Workspace
clc: limpa todos os comandos do Command Window
close all: fecha todas as janelas abertas (gráficos)
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Manipulação de Matrizes
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Alocando uma matriz vazia
>> A = zeros(5,5)
A =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
>> B = zeros(3,2)
B =
0 0
0 0
0 0
O comando zeros(m,n) permite a criação de uma matriz de zeros com m linhas e n colunas.
Matriz de zeros 5x5:
5 linhas e 5 colunas
Matriz de zeros 3x2:
3 linhas 2 colunas
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Acesso a elementos numa matriz
O comando Matriz(i,j) permite o acesso ao elemento da linha I coluna j da variável Matriz.
>> B = zeros(2,2)
B =
0 0
0 0
>> B(1,2) = 1
B =
0 1
0 0
>> B(2,1) = 3
B =
0 1
3 0
Acesso ao elemento da linha 1 coluna 2.
Inserção de valor 1 na posição.
Acesso ao elemento da linha 2 coluna 1.
Inserção de valor 3 na posição.
Matriz vazia 2x2
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Acesso a elementos numa matriz
IMPORTANTE: Diferentemente de outras linguagens de programação, como o C, visto na maioria das aulas de introdução à programação, os índices de posição em vetores e matrizes
são iniciadas a partir da posição 1, não 0.
V[0] V[1] V[2]
Vetores em C:
V(1) V(2) V(3)
Vetores em Matlab:
M[0][0] M[0][1]
M[1][0]
Matrizes em C:
M[1][1]
M(1,1) M(1,2)
M(1,2)
Matrizes em Matlab:
M(2,2)
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
“Mas porque eu preciso saber disso?”
IMPORTANTE: Pensando numa próxima fase deste curso, quando posições de vetores e matrizes forem acessados, é necessário ter em mente as dimensões dos mesmos.
>> M = [1 2 3; 3 2 1]
M =
1 2 3
3 2 1
>> M(0,1)
??? Attempted to access M(0,1); index must be a
positive integer or logical.
>> M(2,4)
??? Attempted to access M(2,4); index out of bounds
because size(M)=[2,3].
>> M(3,2)
??? Attempted to access M(3,2); index out of bounds
because size(M)=[2,3].
>> M(1,2)
ans =
2
Matriz 2x3
Erro: índice 0 para linha
Erro: índice maior que número de linhas
Erro: índice maior que número de linhas
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Verificando as dimensões de uma matriz
>> C = [1 2 3]
C =
1 2 3
>> size(C)
ans =
1 3
O comando size(m) mostra o número de linhas e colunas de uma matriz.
Com size(m,1) é obtido o número de linhas e com size(m,2) o número de colunas.
Aplicação: verificar a compatibilidade de dimensões para operações matemáticas
e utilizar as dimensões conhecidas para correr as posições da matriz.
F =
1 3 0
1 1 1
>> size(F,1)
ans =
2
>> size(F,2)
ans =
3
Matriz 1x3
Dimensões:
1 linha
e 3 colunas
Matriz 2x3
2 linhas
3 colunas
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Acesso a elementos numa matriz
O operador dois pontos “:” pode ser utilizado para selecionar toda uma linha ou toda a coluna de uma matriz.
Aplicação: plotar sequências de dados.
F =
1 3 0
1 1 1
>> F(1,:)
ans =
1 3 0
>> F(:,2)
ans =
3
1
Acesso a todos os elementos da 1ª linha
Acesso a todos os elementos da 2ª coluna
Matriz 2x3
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Alocando uma matriz identidade
>> C = eye(3)
C =
1 0 0
0 1 0
0 0 1
>> F = eye(2)
F =
1 0
0 1
O comando eye(m) permite a criação de uma matriz identidade com m linhas e m colunas.
Matriz identidade 3x3:
3 linhas e 3 colunas
Matriz identidade 2x2:
2 linhas e 2 colunas
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Alocando uma matriz com valores 1
>> C = ones(1,6)
C =
1 1 1 1 1 1
>> G = 4*C
G =
4 4 4 4 4 4
O comando ones(m,n) permite a criação de uma matriz de m linhas e n colunas com 1 emtodas suas posições.
Aplicação: gerar matrizes ou vetores com um valor constante.
Matriz com 1 em todas as posições.
Dimensões: 1 linha e 6 colunas.
Multiplicando a matriz por 4,
Obtemos uma matriz com 4 em todas as posições.
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Diagonal de Matrizes
O comando diag(vetor) permite a criação de uma matriz cuja diagonal conterá todos oselementos do vetor dado, sendo o restante das posições zero.
Com a sintaxe diag(matriz) a diagonal da matriz quadrada é extraída num vetor, ou atéas posições no qual o índice da linha é igual ao índice da coluna, quando a matriz não équadrada.
>> vetor = [1 2 3]
vetor =
1 2 3
>> D = diag(vetor)
D =
1 0 0
0 2 0
0 0 3
>> A = [1 2;4 5]
A =
1 2
4 5
>> diag(A)
ans =
1
5
Matriz 1x3
Matriz 3x3
com elementos do vetor na sua
diagonal
Matriz 2x2
Matriz 2x1
com elementos da diagonal nas suas posições
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Transpondo Matrizes
O comando transp(matriz) realiza a transposição da matriz mxn para uma matriz nxm.
>> A = [1 2+i 3;4 5-i 6]
A =
1.0000 2.0000 + 1.0000i 3.0000
4.0000 5.0000 - 1.0000i 6.0000
>> B=transp(A)
B =
1.0000 4.0000
2.0000 + 1.0000i 5.0000 - 1.0000i
3.0000 6.0000
Matriz 2x3 contendo valores complexos
A transposta é uma matriz 3x2 contendo valores complexos
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Transpondo Matrizes
O operador aspas simples (“ ’ ”) obtém a transposta conjugada da matriz mxn parauma matriz nxm. Aspas simples e ponto (“ .’ ”) realiza somente a transposição.
>> A = [1 2+i 3;4 5-i 6]
A =
1.0000 2.0000 + 1.0000i 3.0000
4.0000 5.0000 - 1.0000i 6.0000
>> C = A'
C =
1.0000 4.0000
2.0000 - 1.0000i 5.0000 + 1.0000i
3.0000 6.0000
>> C = A.'
C =
1.0000 4.0000
2.0000 + 1.0000i 5.0000 - 1.0000i
3.0000 6.0000
Matriz 2x3 contendo valores complexos
A transposta é uma matriz 3x2 contendo valores complexos
A resposta é uma matriz 3x2 complexo conjugada da original
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Inversão de Matrizes
O comando inv(matriz) realiza a inversão de matriz quadrada mxm.
Aplicação: resolução de sistemas lineares.
>> R = [1 2;4 5]
R =
1 2
4 5
>> InvR = inv(R)
InvR =
-1.6667 0.6667
1.3333 -0.3333
>> Ident = InvR*R
Ident =
1 0
0 1
Matriz 2x2
Inversa: Matriz 2x2
Multiplicando a inversa pela matriz original, obtemos a
matriz identidade
Matriz 2x2
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Ordenação de elementos
sort(matriz,1) ordena as colunas de uma matriz nxm
sort(matriz,2) ordena as linhas de uma matriz nxm
A =
1 3 2
4 6 8
3 5 4
>> sort(A,1)
ans =
1 3 2
3 5 4
4 6 8
>> sort(A,2)
ans =
1 2 3
4 6 8
3 4 5
Ordeno as colunas da matriz
crescente
Ordeno as linhas da matriz
crescente
A =
1 3 2
4 6 8
3 5 4
>> sort(A,1,'descend')
ans =
4 6 8
3 5 4
1 3 2
>> sort(A,2,'descend')
ans =
3 2 1
8 6 4
5 4 3
Ordeno as colunas da matriz
decrescente
Ordeno as linhas da matriz
decrescente
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Manipulação de vetores
IMPORTANTE: Os vetores também são matrizes, porém uma de suas dimensões é 1.
Portanto, a grande maioria as funções aplicáveis a uma matriz podem ser aplicadas ao vetor.
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Gerando vetores sequenciais
O comando linspace(Valor_inicial, Valor_final,N) gera um vetor N númerossequenciais igualmente espaçados entre o valor inicial e o valor final.
>> v1 = linspace(2,-1,5)
v1 =
2.0000 1.2500 0.5000 -0.2500 -1.0000
>> v2 = linspace(1,3,6)
v2 =
1.0000 1.4000 1.8000 2.2000 2.6000 3.0000
Gerando vetor de 2 a -1
(decrescente)
com 5 elementos
Gerando vetor de 1 a 3
(crescente)
com 6 elementos
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Gerando vetores sequenciais
Uma alternativa é um vetor com o operador dois pontos (“:”):
Valor_inicial:delta:Valor_final
Gera um vetor números sequenciais igualmente espaçados segundo a variável delta entre o valor inicial e o valor final.
>> t1 = 0:1:5
t1 =
0 1 2 3 4 5
>> t2 = 5:-1:2
t2 =
5 4 3 2
Gerando vetor de 0 a 5
(crescente)
espaçado de 1
Gerando vetor de 5 a 2
(decrescente)
espaçado de -1
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Acessando posições em um vetor
>> t1 = 0:1:5
t1 =
0 1 2 3 4 5
>> t1(1,2)
ans =
1
>> t1(4)
ans =
3
>> t1(1,2:end)
ans =
1 2 3 4 5
Vetor de 0 a 5 espaçado de 1
Elemento da linha 1 coluna 2
Alternativa:
Elemento 4 do vetor
Dimensão da linha é subentendida
Elementos da posição 2 até o fim (end) do vetor
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Operações matemáticas entre Matrizes
e/ou Escalares
IMPORTANTE 1: Os vetores também são matrizes, porém uma de suas dimensões é 1.
Portanto, a grande maioria as funções aplicáveis a uma matriz podem ser aplicadas ao vetor.
IMPORTANTE 2: No caso de matrizes, certifique-se de que possuem dimensões
adequadas para a operação matemática (Exemplo: multiplicação).
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Soma (“+”) e subtração (“-”)
IMPORTANTE:
As matrizes devem possuir
o mesmo número de linhas e colunas
Em caso de erro:
utilizar o comando size(Matriz)
>> A = [ 1 3;2 0]
A =
1 3
2 0
>> B = [1 1;2 2]
B =
1 1
2 2
>> C = A+B
C =
2 4
4 2
>> D = A-B
D =
0 2
0 -2
Matriz 2x2
Matriz 2x2
Soma
Subtração
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Multiplicação (“x”) - Matrizes
IMPORTANTE:
A multiplicação ocorre se
M1nxm X M2mxp
= M3nxp
Em caso de erro:
size(Matriz)
>> A = [1 3; 4 5]
A =
1 3
4 5
>> C = [1;2]
C =
1
2
>> D = A*C
D =
7
14
>> D = C*A
??? Error using ==> mtimes
Inner matrix dimensions must agree.
Matriz 2x2
Matriz 2x1
Multiplicação:
Matriz 2x1
ERRO:
Não se multiplica matriz 2x1 por matriz 2x2!
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Multiplicação (“x”) – Matrizes e escalares
>> A = [1 3; 4 5]
A =
1 3
4 5
>> d = 12
d =
12
>> H = d*A
H =
12 36
48 60
>> t = 0.5*A
t =
0.5000 1.5000
2.0000 2.5000
Matriz 2x2
Variável
Multiplicação por variável:
Matriz 2x2
Multiplicação por número real:
Matriz 2x2
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Divisão à esquerda (“/”) e à direita (“\”)
– Matrizes e escalares>> A = [1 2;3 4]
A =
1 2
3 4
>> b = 1/2
b =
0.5000
>> A/b
ans =
2 4
6 8
>> b\A
ans =
2 4
6 8
A b A1
b
b A1
bA
Divisão à esquerda
Divisão à direita
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Divisão à esquerda (“/”) – Matrizes
>> A = [1 3; 4 5]
A =
1 3
4 5
>> B = [2 2;1 1]
B =
2 2
1 1
>> B/A
ans =
-0.2857 0.5714
-0.1429 0.2857
B A B A 1
>> A = [1 3; 4 5]
A =
1 3
4 5
>> B = [2 2;1 1]
B =
2 2
1 1
>> B*inv(A)
ans =
-0.2857 0.5714
-0.1429 0.2857
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Divisão à direita (“\”) – Matrizes
A =
1 3
4 5
>> B = [1;2]
B =
1
2
>> A\B
ans =
0.1429
0.2857
A B A 1 BA =
1 3
4 5
>> B = [1;2]
B =
1
2
>> inv(A)*B
ans =
0.1429
0.2857
Aplicação:
RESOLUÇÃO
DE
SISTEMAS
DE
EQUAÇÕES
LINEARES
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Multiplicação, divisão e exponencial
ponto-a-ponto
>> F = linspace(1,5,5)./linspace(5,1,5)
F =
0.2000 0.5000 1.0000 2.0000 5.0000
>> t = linspace(1,5,5).*linspace(5,1,5)
t =
5 8 9 8 5
>> v = linspace(1,5,5).^linspace(5,1,5)
v =
1 16 27 16 5
Precedido pelo operador ponto (“.”) é possível realizar a multiplicação e a divisão ponto-a-ponto entre vetores e matrizes de mesmas dimensões.
Aplicação: cálculos de polinômio.
Elementos de vetor de 1 a 5 é divididopor
elementos de vetor de 5 a 1
Elementos de vetor de 1 a 5 émultiplicado por
elementos de vetor de 5 a 1
Elementos de vetor de 1 a 5 é elevado a
elementos de vetor de 5 a 1
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Multiplicação, divisão e exponencial
ponto-a-ponto
A1 A2 A3 B1 B2 B3
C1 C2 C3
“*”,”/” ou “^”
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Funções Trigonométricas
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Funções Trigonométricas
IMPORTANTE: Em Matlab, as funções trigonométricas operam em radianos (rad).
csc(x)Cossecante
sec(x)Secante
cot(x)Cotangente
tan(x)Tangente
cos(x)Cosseno
sin(x)Seno
Função MatlabFunção Trigonométrica
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Funções Trigonométricas Inversas
IMPORTANTE: Em Matlab, as funções trigonométricas inversas resultam e ângulos em radianos (rad).
acsc(x)Arco Cossecante
asec(x)Arco Secante
acot(x)Arco Cotangente
atan(x)Arco Tangente
[-1,1]acos(x)Arco Cosseno
[-1,1]asin(x)Arco Seno
Limite para x para resultado realFunção MatlabFunção Trigonométrica
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Funções Trigonométricas – Exemplo:>> teta = 30*pi/180
teta =
0.5236
>> sin(teta)
ans =
0.5000
Ângulo de 30ºconvertido para
radianos
Calculo o seno para o ângulo
>> phi = 0:10:60
phi =
0 10 20 30 40 50 60
>> phi = phi*pi/180
phi =
0 0.1745 0.3491 0.5236 0.6981 0.8727 1.0472
>> cos(phi)
ans =
1.0000 0.9848 0.9397 0.8660 0.7660 0.6428 0.5000
Vetor de 0º a 60º
Vetor convertido
para radianos
Cosseno dos
Ângulos do vetor
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Polinômios
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Escrevendo Polinômios em Matlab
Em Matlab, os polinômios são descritos na forma de vetor:
Matematicamente:
01
2
2)( axaxaxaxPn
n ++++= K
0)(2
1 ++= xxxP
xxxP += 4
2 3)(
223)(2
3 ++= xxxP
Em Matlab:
P = [an … a2 a1 a0]
>> p1 = [1 1 0];
>> p2 = [ 3 0 0 1 0];
>> p3 = [ 3 2 2];
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Substituindo valores nos polinômios
0)(2
1 ++= xxxP
O comando polyval(p,x) calcula o valor do polinômio p para um determinado valor x.
>> p1 = [1 1 0];
>> x1 = 2;
>> p1x1 = polyval(p1,x1)
p1x1 =
6
>> p2 = [ 3 0 0 1 0];
>> v2 = [1 2]
v2 =
1 2
>> p2x2 = polyval(p2,v2)
p2x2 =
4 50
6022)2(2
1 =++==xP
xxxP += 4
2 3)(
411.3)1(2 =+==xP
5024822.3)2(4
2 =+=+==xP
Para variável:
Para vetor:
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Raízes de Polinômios
O comando roots(p) calcula as raízes de determinado polinômio p.
>> p = [1 0 -4]
p =
1 0 -4
>> x = roots(p)
x =
2.0000
-2.0000
( )( )2.24)(2 +−=−= xxxxP
>> p = [1 0 4]
p =
1 0 4
>> x = roots(p)
x =
0 + 2.0000i
0 - 2.0000i
( )( )ixixxxP 2.24)(2 +−=+=
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Exemplo prático – exercício 7.51 (Hibbeler)
)10(250)( xxV −=
1502500125)65100(25)(22 −+−=−−= xxxxxM
Cortante calculada:
Momento Fletor calculado:
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Exemplo prático – exercício 7.51 (Hibbeler)
x = 0:0.1:20
V = [-250 2500]
M = [-125 2500 -150]
Vx = polyval(V,x);
Mx = polyval(M,x);
figure %nova janela grafica
plot(x,Vx)
title('Gráfico da cortante')%titulo
xlabel('x (ft)')%rotulo do eixo x
ylabel('V (lb)')%rotulo do eixo y
grid on %linhas de grid do grafico
figure %nova janela grafica
plot(x,Mx)
title('Gráfico do Momento')%titulo
xlabel('x (ft)')%rotulo do eixo x
ylabel(‘M (lb.ft)')%rotulo do eixo y
grid on %linhas de grid do grafico
0 2 4 6 8 10 12 14 16 18 20-2500
-2000
-1500
-1000
-500
0
500
1000
1500
2000
2500Gráfico da cortante
x (ft)
V (
lb)
0 2 4 6 8 10 12 14 16 18 20-2000
0
2000
4000
6000
8000
10000
12000
14000Gráfico do Momento
x (ft)
M (
lb.f
t)
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Gráficos - plot
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Gráficos em 2D em janelas separadas
O comando plot(x,y) origina um gráfico no qual o vetor x designa as coordenadasem x dos pontos a serem plotados e o vetor y as suas coordenadas em y.
IMPORTANTE: o comando figure antecedendo o comando plot abre uma nova janela para os gráficos, evitando que comandos seguidos plot ocasionem a sobreposição de gráficos numa
mesma janela.
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
figure %crio nova janela
plot(x,y1)
figure %crio nova janela
plot(x,y2)
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Gráficos em 2D numa só janela
O comando hold on faz com que os comandos sucessivos de plot registrem seusgráficos numa só janela.
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
figure %crio nova janela
plot(x,y1)
hold on %mantenho janela
plot(x,y2,'r') %vermelho
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Alterando cores
wBranco
kPreto
yAmarelo
mMagenta
cCiano
rVermelho
gVerde
bAzul
Nome curtoCor
O comando plot(x,y,’caracter’) com o terceiro campo preenchido com um dos caracteres indicativos de cor abaixo, entre aspas simples (‘’), pode alterar a cor do
seu gráfico.
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
figure %crio nova janela
plot(x,y1,'g') %verde
hold on %mantenho janela
plot(x,y2,'k') %preto
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Alterando tipo de ponto do gráfico
O comando plot(x,y,’caracter’) com o terceiro campo preenchido com um dos
caracteres indicativos de linha ao lado, entreaspas simples (‘’), pode alterar a linha do
seu gráfico.
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
figure %crio nova janela
plot(x,y1,'bo') %azul
hold on %mantenho janela
plot(x,y2,'rx')%vermelho
hexágonoh
pentágono (estrela de 5 pontas)p
triangulo (para direita)>
triangulo (para esquerda)<
triangulo (para cima)^
triangulo (para baixo)v
diamanted
quadrados
estrela*
mais (cruz)+
marca xx
circuloo
ponto.
MarcadorCaractere
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Alterando tipo de traço do gráfico
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
figure %crio nova janel
plot(x,y1,'b--') %azul
hold on %mantenho janela
plot(x,y2,'r.-')%vermelhonenhuma linha(none)
tracejada--
traço-ponto-.
pontilhada:
sólida-
Tipo de LinhaCaractere
O comando plot(x,y,’caracter’) com o terceiro campo preenchido com um dos caracteres indicativos de traço abaixo, entre aspas simples (‘’), pode alterar o traço
do seu gráfico.
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Rótulos nos eixos e título
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1Gráfico Teste
Angulo (rad)
Am
plitu
de
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
figure %crio nova janela
plot(x,y1,'b--') %azul
hold on %mantenho janela
plot(x,y2,'r-.')%vermelho
title('Gráfico Teste')
xlabel('Angulo (rad)')
ylabel('Amplitude')
title(‘texto na parte superior do grafico’)
xlabel(‘texto no eixo x’)
ylab
el(‘
text
o n
o e
ixo
y’)
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Legendas
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
figure %crio nova janela
plot(x,y1,'b--') %azul
hold on %mantenho janela
plot(x,y2,'r-.')%vermelho
title('Gráfico Teste')
xlabel('Angulo (rad)')
ylabel('Amplitude')
legend('sen(x)','cos(x)')0 1 2 3 4 5 6 7
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1Gráfico Teste
Angulo (rad)
Am
plitu
de
sen(x)
cos(x)
O comando legend(‘traço 1’, ‘traço 2’,…, ‘traço n’) insere uma legenda para ostraços na ordem em que foram plotados no gráfico.
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Aplicações para Geometria Analítica
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Resolução de sistemas de equações lineares
A x B x A 1 B
[ ]{ } [ ]BxAb
b
z
y
aa
aa
bzaya
bzaya=⇒
=
⇒
=+
=+
21
11
2221
1211
212221
111211
Um exemplo de sistema linear 2x2:
Se as equações forem linearmente independentes (LI) a resposta pode ser obtida por:
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Resolução de sistemas de equações lineares
Utilizo o comando linsolvex = linsolve(A,B)
Inverto a matriz A e multiplico por Bx = inv(A)*B
Obtenho resposta por divisão à direitax = A\B
A x B>> A = [1 3; 4 5]
A =
1 3
4 5
>> x = A\B
x =
0.1429
0.2857
>> x = inv(A)*B
x =
0.1429
0.2857
>> x = linsolve(A,B)
x =
0.1429
0.2857
>> B = [1;2]
B =
1
2
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Escrevendo um vetor no espaço
xy
z
O
>> tetax = 30*pi/180
tetax =
0.5236
>> tetay = 45*pi/180
tetay =
0.7854
>> tetaz = 60*pi/180
tetaz =
1.0472
>> ModuloV = 10
ModuloV =
10
>> V = ModuloV*[cos(tetax) cos(tetay) cos(tetaz)]
V =
8.6603 7.0711 5.0000
( )kjivv zyxˆ).cos(ˆ).cos(ˆ).cos( θθθ ++=
rr
Com os cossenos diretores, temos:
xθ
yθ
zθ
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Norma de um vetor
kjiv ˆ.2ˆ.1ˆ.1 ++=r
kcjbiav ˆ.ˆ.ˆ. ++=r
xy
z
O
222cbav ++=
r
>> V = [1 1 2]
V =
1 1 2
>> moduloV = norm(V)
moduloV =
2.4495
>> moduloV = sqrt(V(1)^2+V(2)^2+V(3)^2)
moduloV =
2.4495
222211 ++=v
r
O comando norm(Vetor) calcula a norma euclidiana do vetor dado.
Aplicação: vetor unitário
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Obtendo um vetor unitário
kjiv ˆ.2ˆ.1ˆ.1 ++=r>> V = [1 1 2]
V =
1 1 2
>> moduloV = norm(V)
moduloV =
2.4495
>> lambdaV = V/moduloV
lambdaV =
0.4082 0.4082 0.8165
>> norm(lambdaV)
ans =
1
222211 ++=v
r
v
vr
rr
=λ
1=λr
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Produto Escalar entre Vetores
xy
z
O
>> r1 = [1 0 2]
r1 =
1 0 2
>> r2 = [2 1 1]
r2 =
2 1 1
>> r1r2 = dot(r1,r2)
r1r2 =
4
)cos(...),( 212121 θrrrrrrdotrrrrrr
==
1rr
2rr
θ
kjir ˆ.2ˆ.0ˆ.11 ++=r
kjir ˆ.1ˆ.1ˆ.22 ++=r
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Produto Vetorial
xy
z
O>> r = [1 2 0]
r =
1 2 0
>> F = [0 0 10]
F =
0 0 10
>> M = cross(r,F)
M =
20 -10 0
FrFrcrossrrrr
×=),(
rr
Fr
kjir ˆ.0ˆ.2ˆ.1 ++=r
kjiF ˆ.10ˆ.0ˆ.0 ++=r
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Produto Misto
>> r = [1 2 0]
r =
1 2 0
>> F = [0 0 10]
F =
0 0 10
>> lambda = [1 1 1]/norm([1 1 1])
lambda =
0.5774 0.5774 0.5774
>> M1 = dot(lambda,cross(r,F))
M1 =
5.7735
kjir ˆ.0ˆ.2ˆ.1 ++=r
kjiF ˆ.10ˆ.0ˆ.0 ++=r
( )FrFrcrossdotrrrrrr
×= .)),(,( λλ
Vetor unitário:
Divido vetor pelo seu módulo
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Exercício prático 1 – Exemplo 3.6 (Hibbeler)
Encontrando força resultante
x
y
z
3 m
2 m
6 m
OF1 = 400 N
F2 = 800 N
F3 = 700 N
B ][ˆ.0ˆ.400ˆ.01 NkjiF ++=r
][ˆ.800ˆ.0ˆ.02 NkjiF −+=r
kjirBˆ.6ˆ.3ˆ.2 +−−=
r
F1 = [0 400 0]
F2 = [0 0 800]
rOB = [-2 -3 6]
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Exercício prático 1 – Exemplo 3.6 (Hibbeler)
Encontrando força resultante
x
y
z
3 m
2 m
6 m
OF1 = 400 N
F2 = 800 N
F3 = 700 N
B
][33 Nr
rFF
B
B
= r
rr
lambdaOB = rOB/norm(rOB)
F3 = ModuloF3*(lambdaOB)
)( 321 FFFRrrrr
++−=
R = -(F1+F2+F3)
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Exercício prático 1 – Exemplo 3.6 (Hibbeler)
Encontrar ângulos diretores
222
zyx RRRR ++=r
)(cos1
R
Rxr
−=α
)(cos1
R
Ryr
−=β
)(cos1
R
Rzr
−=γ
ModuloR = norm(R)
alfa = acos(R(1)/ModuloR)*180/pi
beta = acos(R(2)/ModuloR)*180/pi
gama = acos(R(3)/ModuloR)*180/pi
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Exercício prático 1 – Exemplo 3.6 (Hibbeler)
Código Completo + Saída no Prompt
%Forca 1
F1 = [0 400 0]; %[N]
%Forca 2
F2 = [0 0 -800]; %[N]
%Vetor que vai do ponto O ao ponto B
rOB = [-2 -3 6];
%Modulo da forca F3
ModuloF3 = 700; %N
%vetor unitário na linha de ação de F3
lambdaOB = rOB/norm(rOB);
%Para obter a forca F3
%multiplico o módulo pelo vetor unitário
F3 = ModuloF3*(lambdaOB);
%força resultante
R = -(F1+F2+F3)
%modulo da força resultante
ModuloR = norm(R)
%angulos diretores
alfa = acos(R(1)/ModuloR)*180/pi%convertido para graus
beta = acos(R(2)/ModuloR)*180/pi%convertido para graus
gama = acos(R(3)/ModuloR)*180/pi%convertido para graus
R =
200 -100 200
ModuloR =
300
alfa =
48.1897
beta =
109.4712
gama =
48.1897
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Exercício prático 2
Com o que foi visto até agora, tente resolver alguns dos problemas propostos do capítulo 2 e 3 do livro texto
(Hibbeller,10ª edição).
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Matlab:
uma linguagem de programação
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Operadores relacionais
“a” é igual a “b”“a” não é igual a “b”a ~= bDiferente~=
“a” não é igual a “b”“a” é igual a “b”a == b Igual==
“a” é menor do que “b”“a” é maior ou igual a “b”a >= bMaior ou igual>=
“a” é menor ou igual a “b”“a” é maior do que “b”a > bMaior>
“a” é maior do que “b”“a” é menor ou igual a “b”a <= bMenor ou igual<=
“a” é maior ou igual a “b”“a” é menor do que “b”a < bMenor<
Retorna false quando:Retorna true quando:SintaxeNomeOperador
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Operadores lógicos
C1 for falso~C1not~
Pelo menos uma das condições forem verdadeirasC1||C2or||
C1 e C2 forem verdadeirosC1&&C2and&&
True somente se:SintaxeNomeOperador
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Exemplo: Operadores relacionais + lógicos
Suponha A = 9. Verifique:
1) A é maior do que 5 e menor do que 10? SIM2) A é maior do que 5 e menor do que 8? NÃO3) A é maior do que 5 ou menor do que 8? SIM4) A é maior do que 5 ou menor do que 10? SIM5) A não é igual a 8? SIM6) A é igual a 8? NÃO
>> (A>5)||(A<10)
ans =
1
>> ~(A==8)
ans =
1
>> (A==8)
ans =
0
>> A = 9;
>> (A>5)&&(A<10)
ans =
1
>> (A>5)&&(A<8)
ans =
0
>> (A>5)||(A<8)
ans =
1
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Palavras reservadas: if/else
%variaveis
a = 1;
b = 2;
c = 3;
d = 4;
%codigo sem elseif
if a==0
disp('a é igual a 0')
else
if b==a
disp('a é igual a b')
else
if c>d
disp('c é maior que d')
else
disp('a é diferente de 0')
disp('a é diferente de b')
disp('c é menor que d')
end
end
end
Saída no Command Window:
a é diferente de 0
a é diferente de b
c é menor que d
if expressão lógica
comandos caso a expressão lógica seja verdadeira
else
comandos caso a expressão lógica seja falsa
end
Na expressão lógica, podem ser utilizados os operadores (&&,>,<,==, ~=, <=,>=, etc.).
Após os comandos, existe a palavra end, indicando o fim dos comandos referentes à comparação ifanterior, sendo equivalente ao fechamento de chaves “{}” em outras linguagens de programação (C,C++, JAVA).
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Palavras reservadas: while
%calculo dos termos de uma P.G.
%primeiro termo
a1 = 1;
%razao da PG
r = 2
%total de termos considerados
n = 10
cont = 1
%vetor contendo os termos
a = zeros(1,n);
%carrego primeiro termo
a(1,1) = a1;
cont = 2;
%calculo os termos da P.G.
while cont<=n %expressao
a(1,cont) = a1*r^cont;
cont = cont+1;%incremento cont
end
%mostro termos da PG
disp(a)
while expressao
comandos enquanto a expressao for verdadeira
end
Na expressão lógica, podem ser utilizados os operadores (&&,>,<,==, ~=, <=,>=, etc.).
Enquanto a expressão for verdadeira, os comandos contidos no laço serão executados. Dessa forma, é uma expressão útil para procedimentos repetitivos ou algoritmos expressos matematicamente.
Exemplo: Progressão Geométrica
an a1r n 1
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Palavras reservadas: for
for x = valor_inicial:valor_final
comandos enquanto x não atingir o valor final
end
Sintaxe com incremento com passo especificado a
cada iteração:
for x = valor_inicial:incremento:valor_final
comandos enquanto x não atingir o valor final
end
%primeiro termo
a1 = 1;
%razao da PG
r = 2
%total de termos considerados
n = 10
cont = 1
%vetor contendo os termos
a = zeros(1,n);
%carrego primeiro termo
a(1,1) = a1;
%calculo os termos da P.G.
for cont = 2:n %expressao
a(1,cont) = a1*r^cont;
end
%mostro termos da PG
disp(a)
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Exemplo: for
A = [1 2 3]
B = [4 5 6]
C = zeros(size(A,2),size(B,2))
for countA = 1:size(A,2)
for countB = 1:size(B,2)
C(countA,countB) = A(1,countA)*B(1,countB);
end
end
disp(C)
4 5 6
8 10 12
12 15 18
Saída
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Exemplo: for – Como ele fez isso?
1 2 3
4 5 6 4 5 64 5 6
4 5 6
x x x
x x x
4 5 6
8 10 12
x x x
4 5 6
8 10 10
12 15 18
contA+1 contA+2contA=1
contB=1 contB+1 contB+2 contB=1 contB+1 contB+2 contB=1 contB+1 contB+2
contA=1
contA+1
contA+2
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Exemplo prático – exercício 4.31 (Hibbeler)
)cos().5,7.(18,1 θxM A +=
Massa suspensa 120 kgMomento desenvolvido em A em
função de x e θ.
oo900 ≤≤ θ
mx 50 ≤≤
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Exemplo prático – exercício 4.31 (Hibbeler)
%--------------------------------------------------------------------------
%Neste programa, x é mantido constante e são variados valores do ângulo
%para o cálculo do momento
%--------------------------------------------------------------------------
%parametro da lanca
x = 2;%m
%vetor angulo de 0 a 90 espacado de 10
teta = (0:10:90)*pi/180;
%vetor vazio onde serao armazenados os momentos em relacao a A
%LEMBRETE: size(teta,2) é o número de COLUNAS do vetor teta
MA = zeros(1,size(teta,2));
%corro o numero de colunas do vetor teta
for count = 1:size(teta,2)
%acesso posicao do vetor
MA(1,count) = 1.18*(7.5+x)*cos(teta(1,count));
end
%ploto grafico em nova janela
%eixo x - vetor do angulo
%eixo y - vetor dos momentos com relacao a A
figure
plot(teta*180/pi,MA(1,:))
xlabel('teta (º)') %nomenclatura do eixo x
ylabel('Momento (N.m)') %nomenclatura do eixo y
)cos().5,7.(18,1 θxM A +=
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Exemplo prático – exercício 4.31 (Hibbeler)
Nomenclaturaeixo x
Nomenclatura eixo x
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Exemplo prático – exercício 4.31 (Hibbeler)%parametro da lanca de 1 a 5m espaçado de 1m
x = 1:1:5;%m
%vetor angulo de 0 a 90 espacado de 10
teta = (0:10:90)*pi/180;
%vetor vazio onde serao armazenados os momentos em relacao a A
%LEMBRETE: size(teta,2) é o número de COLUNAS do vetor teta
%LEMBRETE: size(x,2) é o número de COLUNAS do vetor x
MA = zeros(size(x,2),size(teta,2));
%corro o numero de colunas do vetor teta
for lin = 1:size(x,2)
for col = 1:size(teta,2)
MA(lin,col) = 1.18*(7.5+x(1,lin))*cos(teta(1,col));%acesso posicao do vetor
end
end
%ploto grafico
figure
plot(teta*180/pi,MA(1,:)) %calculado para x = 1m
hold on
plot(teta*180/pi,MA(2,:),'r') %calculado para x = 2m
hold on
plot(teta*180/pi,MA(3,:),'k') %calculado para x = 3m
hold on
plot(teta*180/pi,MA(4,:),'m') %calculado para x = 4m
hold on
plot(teta*180/pi,MA(5,:),'g') %calculado para x = 5m
%insiro legenda - na ordem em que os resultados foram plotados
legend('x = 1m','x = 2m','x = 3m','x = 4m','x = 5m')
xlabel('teta (º)') %nomenclatura do eixo x
ylabel('Momento (N.m)') %nomenclatura do eixo y
Universidade Estadual de Campinas – Laboratório de Dinâmica de Estrutras e Máquinas – Prof. Dr. Milton Dias Junior
Introdução ao Matlab Miyasato, H.H., Simionatto, V.G.S
Exemplo prático – exercício 4.31 (Hibbeler)