aula introduo ao matlab

Post on 28-Nov-2014

1.086 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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:

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)

top related