aula introduo ao matlab

101
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 [email protected] Hugo Heidy Miyasato [email protected] F. 3521-3180 (Ldem)

Upload: pedro-lemos

Post on 28-Nov-2014

1.086 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aula Introduo Ao Matlab

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

[email protected]

Hugo Heidy Miyasato

[email protected]

F. 3521-3180 (Ldem)

Page 2: Aula Introduo Ao Matlab

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…

Page 3: Aula Introduo Ao Matlab

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

Page 4: Aula Introduo Ao Matlab

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

Page 5: Aula Introduo Ao Matlab

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?”

Page 6: Aula Introduo Ao Matlab

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

Page 7: Aula Introduo Ao Matlab

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.

Page 8: Aula Introduo Ao Matlab

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.

Page 9: Aula Introduo Ao Matlab

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:

Page 10: Aula Introduo Ao Matlab

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:

Page 11: Aula Introduo Ao Matlab

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:

Page 12: Aula Introduo Ao Matlab

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?”

Page 13: Aula Introduo Ao Matlab

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

Page 14: Aula Introduo Ao Matlab

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.

Page 15: Aula Introduo Ao Matlab

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.

Page 16: Aula Introduo Ao Matlab

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.

Page 17: Aula Introduo Ao Matlab

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.

Page 18: Aula Introduo Ao Matlab

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:

Page 19: Aula Introduo Ao Matlab

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

Page 20: Aula Introduo Ao Matlab

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

Page 21: Aula Introduo Ao Matlab

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.

Page 22: Aula Introduo Ao Matlab

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

Page 23: Aula Introduo Ao Matlab

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 !!!

Page 24: Aula Introduo Ao Matlab

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

Page 25: Aula Introduo Ao Matlab

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.

Page 26: Aula Introduo Ao Matlab

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.

Page 27: Aula Introduo Ao Matlab

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

Page 28: Aula Introduo Ao Matlab

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)

Page 29: Aula Introduo Ao Matlab

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

Page 30: Aula Introduo Ao Matlab

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

Page 31: Aula Introduo Ao Matlab

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

Page 32: Aula Introduo Ao Matlab

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)

Page 33: Aula Introduo Ao Matlab

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

Page 34: Aula Introduo Ao Matlab

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

Page 35: Aula Introduo Ao Matlab

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

Page 36: Aula Introduo Ao Matlab

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

Page 37: Aula Introduo Ao Matlab

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.

Page 38: Aula Introduo Ao Matlab

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

Page 39: Aula Introduo Ao Matlab

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

Page 40: Aula Introduo Ao Matlab

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

Page 41: Aula Introduo Ao Matlab

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

Page 42: Aula Introduo Ao Matlab

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

Page 43: Aula Introduo Ao Matlab

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.

Page 44: Aula Introduo Ao Matlab

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

Page 45: Aula Introduo Ao Matlab

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

Page 46: Aula Introduo Ao Matlab

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

Page 47: Aula Introduo Ao Matlab

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).

Page 48: Aula Introduo Ao Matlab

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

Page 49: Aula Introduo Ao Matlab

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!

Page 50: Aula Introduo Ao Matlab

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

Page 51: Aula Introduo Ao Matlab

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

Page 52: Aula Introduo Ao Matlab

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

Page 53: Aula Introduo Ao Matlab

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

Page 54: Aula Introduo Ao Matlab

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

Page 55: Aula Introduo Ao Matlab

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 “^”

Page 56: Aula Introduo Ao Matlab

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

Page 57: Aula Introduo Ao Matlab

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

Page 58: Aula Introduo Ao Matlab

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

Page 59: Aula Introduo Ao Matlab

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

Page 60: Aula Introduo Ao Matlab

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

Page 61: Aula Introduo Ao Matlab

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];

Page 62: Aula Introduo Ao Matlab

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:

Page 63: Aula Introduo Ao Matlab

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 +−=+=

Page 64: Aula Introduo Ao Matlab

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:

Page 65: Aula Introduo Ao Matlab

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)

Page 66: Aula Introduo Ao Matlab

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

Page 67: Aula Introduo Ao Matlab

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

Page 68: Aula Introduo Ao Matlab

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

Page 69: Aula Introduo Ao Matlab

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

Page 70: Aula Introduo Ao Matlab

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

Page 71: Aula Introduo Ao Matlab

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

Page 72: Aula Introduo Ao Matlab

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’)

Page 73: Aula Introduo Ao Matlab

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.

Page 74: Aula Introduo Ao Matlab

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

Page 75: Aula Introduo Ao Matlab

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:

Page 76: Aula Introduo Ao Matlab

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

Page 77: Aula Introduo Ao Matlab

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:

Page 78: Aula Introduo Ao Matlab

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

Page 79: Aula Introduo Ao Matlab

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

Page 80: Aula Introduo Ao Matlab

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

Page 81: Aula Introduo Ao Matlab

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

Page 82: Aula Introduo Ao Matlab

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

Page 83: Aula Introduo Ao Matlab

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]

Page 84: Aula Introduo Ao Matlab

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)

Page 85: Aula Introduo Ao Matlab

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

Page 86: Aula Introduo Ao Matlab

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

Page 87: Aula Introduo Ao Matlab

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).

Page 88: Aula Introduo Ao Matlab

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

Page 89: Aula Introduo Ao Matlab

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

Page 90: Aula Introduo Ao Matlab

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

Page 91: Aula Introduo Ao Matlab

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

Page 92: Aula Introduo Ao Matlab

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).

Page 93: Aula Introduo Ao Matlab

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

Page 94: Aula Introduo Ao Matlab

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)

Page 95: Aula Introduo Ao Matlab

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

Page 96: Aula Introduo Ao Matlab

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

Page 97: Aula Introduo Ao Matlab

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 ≤≤

Page 98: Aula Introduo Ao Matlab

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 +=

Page 99: Aula Introduo Ao Matlab

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

Page 100: Aula Introduo Ao Matlab

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

Page 101: Aula Introduo Ao Matlab

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)