• Nenhum resultado encontrado

Capítulo 02. Princípios ásicos do MATLAB

N/A
N/A
Protected

Academic year: 2021

Share "Capítulo 02. Princípios ásicos do MATLAB"

Copied!
64
0
0

Texto

(1)

Capítulo 02

Princípios

Básicos do MATLAB

(2)

OBJETIVOS

• Aprender como números reais e complexos são atribuídos a variáveis,

• Aprender como atribuir valores a vetores e a matrizes utilizando a atribuição

simples, o operador dois-pontos e as funções linspace e logspace.

• Entender as regras de prioridade para construir expressões matemáticas.

• Compreender o que são funções nativas e aprender mais sobre elas com os

recursos de ajuda do MATLAB

• Aprender como usar vetores para gerar um gráfico simples com base em uma

equação.

(3)

Objetivo: Estimar o coeficiente de arraste medindo a

velocidade final de vários saltadores de massa conhecida.

d 2

c

dv g v

dt   m

9,81 /

gm s

VOCÊ TEM UM PROBLEMA

BUNGEE JUMPING

0 g c d v t 2

  m

t

d

v gm

c

(4)

VOCÊ TEM UM PROBLEMA

t

d

v gm

c

No item anterior vimos que a velocidade final pode ser

Expressa na forma:

Isolando o coeficiente de arrasto, temos:

d 2

t

c mg

v

Massa e velocidades terminais para vários saltadores

(5)

O AMBIENTE MATLAB

(6)

O AMBIENTE MATLAB

O MATLAB usa 3 tipos de janelas principais.

• Command Window ( Janela de comandos)

Usada para entrar comandos e dados.

• Graphics window(s) (Janela Gráfica)

Usada para mostrar gráficos.

• Edit window (Janela de Edição)

Usada para criar e editar arquivos M (programas )

(7)

Modo de Calculadora

• A janela de comandos pode ser usada como uma

calculadora para escrever comandos linha por

linha.

>> 55 - 16

ans = 39

• Sempre que um calculo é feito, o MATLAB atribui

o resultado para a variável ans

>> ans + 11

ans = 50

(8)

Variáveis MATLAB

• A variável ans pode ser útil em cálculos rápidos, mas

ela é pouco útil na utilização de programas.

• MATLAB permite atribuir valores para variáveis definidas

pelo usuário.

• MATLAB pode armazenar valores individuais e matrizes,

sendo que esses valores podem ser numéricos ou texto.

• MATLAB não exige que você pré-inicialize variáveis. Se

ela não existe, será criada para você.

(9)

Escalares

• Para atribuir um valor para uma variável

simplesmente digite o nome da variável, o sinal

de = seguido do valor:

>> a = 4

a = 4

• Observe que a nome da variável deve começar

com uma letra.

• Observe que após a atribuição, o nome e o valor

da variável são impressos na tela para confirmar

(10)

Escalares

• Você pode suprimir essa mensagem finalizando a

linha de comando com um ponto e vírgula (;).

• Você pode perguntar ao MATLAB para mostrar

valores armazenados em uma variável digitando

seu nome:

>> a

a = 4

(11)

IMPORTANTÍSSIMO

O MATLAB é sensível a maiúsculas e minúsculas. Isto

é, a variável a não é o mesmo que a variável A.

>> a = 4;

a = 4

>> A

Undefined function or variable 'A'.

Did you mean:

>> a

(12)

Escalares

• É possível digitar vários comandos na mesma

linha separando-os com vírgula ou com ponto e

vírgula.

>> a=4,A=6;x=1;

a = 4

(13)

Números Complexos

• É possível atribuir valores complexos às variáveis usando

a variável i (ou j) para representar a unidade

imaginária.

>> x=2+i*4

x = 2.000000000000000 + 4.000000000000000i

• Existem diversas variáveis pré-definidas, por exemplo: pi

>> pi

ans = 3.141592653589793

(14)

Formato de Exibição

• Você pode solicitar ao MATLAB para retornar os valores

usando vários formatos diferentes usando o comando

format .

Exemplos

>> format short; pi

ans =

3.1416

>> format long; pi

ans =

3.14159265358979

>> format short eng; pi

ans =

3.1416e+000

>> pi*10000

ans =

(15)

Arranjos, Vetores e Matrizes

• Um arranjo é uma coleção de valores

representados por um único nome de variável.

Podem ser de dois tipos:

• Arranjos de uma dimensão são chamados

vetores.

• Arranjos bidimensionais são chamados matrizes.

• Para se inserir arranjos : usa-se colchetes

• Entradas em uma linha são separadas por

espaço.

• Linhas são separadas por ponto e vírgula

(16)

Exemplos de vetores

>> a = [1 2 3 4 5 ]

a =

1 2 3 4 5

>> b = [2;4;6;8;10]

b =

2

4

6

8

10

• Matriz transposta

>> b = [2 4 6 8 10]’

(17)

Exemplo de matrizes

>> A = [1 2 3; 4 5 6; 7 8 9]

A =

1 2 3

4 5 6

7 8 9

Também é possível utilizar a tecla ENTER para separar as linhas.

A = [1 2 3

4 5 6

7 8 9]

(18)

Exemplo de matrizes

>>A = [[1 2 3]’ [4 5 6]’ [7 8 9]’]

A =

1 2 3

4 5 6

7 8 9

Finalmente, a mesma matriz pode ser construída concatenando (

juntando) os vetores que representam cada coluna.

(19)

Comando who

• O comando who irá mostrar uma lista de todas as

variáveis correntes.

>> who

Your variables are:

A a ans b x

(20)

Comando who - Detalhes

>> whos

Name Size Bytes Class Attributes

A 1x1 8 double

a 1x5 40 double

ans 5x1 40 double

b 5x1 40 double

x 1x1 16 double complex

(21)

Acessando elementos

• Elementos individuais de uma matrizes podem ser lidos

ou definidos individualmente usando o índice de

localização de linha e coluna.

>> b= [2;4;6;8;10]

b =

2

4

6

8

10

>> b(4)

• ans = 8

(22)

Acessando elementos

>> A = [[1 2 3]' [4 5 6]' [7 8 9]']

A =

1 4 7

2 5 8

3 6 9

>> A(2,3)

ans = 8

>> A(3,3)

ans = 9

>> A(4,3)

Index exceeds matrix dimensions.

(23)

Criação de Matrizes - funções

• Existem algumas funções que auxiliam a criação

de matrizes:

– zeros(r,c) cria uma matrizes de r linhas e c

colunas contendo apenas zeros

– zeros(n) cria uma matrizes de n linhas e n

colunas contend zeros

– ones(r,c) cria uma matrizes de r linhas e c

colunas contendo apenas 1’s

– ones(n) cria uma matrizes de n linhas e n

colunas contendo apenas 1’s.

(24)

Exercícios em Sala

01) Determine o tamanho das seguintes matrizes. Verifique suas respostas criando as

matrizes no MATLAB e utilizando o comando whos se necessário. Observe que as

últimas matrizes podem depender das definições de matrizes definidas

anteriormente neste exercício.

a. u  [10 20 10 20] 

b. v   [ 1; 20;3]

c. w [1 0 9; 2 2 0;1 2 3]

d. x  [ ' u v ]

e. y (3,3)   7

f. z [ zeros   4,1 ones   4,1 zeros   1, 4 ']

g. v     4  x 2,1

02) Qual o valor de w   2,1 ?

03) Qual o valor de x   2,1 ?

04) Qual o valor de y   2,1 ?

 

(25)

Operador : (dois pontos)

• O operador dois-pontos (:) é útil em vários contextos.

• Se dois-pontos são usados para separar dois números, o

MATLAB gera um conjunto de números entre eles

usando um incremento unitário.

>> t = 1:5

t = 1 2 3 4 5

(26)

Operador : ( dois pontos)

• Se dois-pontos são usados para separar três números, o

MATLAB gera um conjunto de números entre o primeiro

e o terceiro utilizando um incremento igual ao segundo

número.

>> t = 1:0.5:3

t = 1.0000 1.5000 2.0000 2.5000 3.0000

>> t = 1:0.7:3

t = 1.0000 1.7000 2.4000

(27)

Operador : ( dois pontos)

• O Incremento também pode ser negativo

>> t = 10:-1:5

t = 10 9 8 7 6 5

• Qual o resultado do comando abaixo:

>> t=10:-1:15

(28)

Operador : ( dois pontos)

• O operador : também serve para selecionarmos

elementos de arranjos

A = 1 4 7

2 5 8

3 6 9

>> A(2,:)

ans = 2 5 8

(29)

Operador : ( dois pontos)

O operador : também serve para selecionarmos elementos

de arranjos

>> t = 10 9 8 7 6 5

>> t(2:4)

ans = 9 8 7

(30)

Comandos – linspace

• O comando é utilizado para criação de um vetor linha com um

número específico de pontos entre dois extremos.

linspace(x1, x2, n)

• Irá criar um vetor de n pontos entre x1 e x2

>>linspace(0, 1, 6)

ans = 0 0.2000 0.4000 0.6000 0.8000 1.0000

• Se o n é omitido, são criados 100 pontos.

• Para gerar um vetor coluna podemos usar:

>> linspace(0,1,6)'

(31)

Comandos – logspace

• O comando é utilizado para criação de um vetor linha de pontos

logaritmicamente espaçados.

logspace(x1, x2, n)

que gera n pontos logaritmicamente espaçados entre e

>>logspace(-1, 2, 4)

ans =0.1000 1.0000 10.0000 100.0000

>> logspace(1,2,4)

ans =

10.0000 21.5443 46.4159 100.0000

• Se o n é omitido, são criados 50 pontos.

10 x 1 10 x 2

(32)

Caracteres (Strings) & Reticências

• Conteúdo alfanumérico (string) é envolto por apóstrofe(')

>> f = ‘Gilberto ';

>> s = ‘Tenani‘

• Unindo duas strings

>> x = [f s]

x = Gilberto Tenani

• Podemos usar reticências (...) para continuar linhas muito longas

>> a = [1 2 3 4 5 ...

6 7 8]

(33)

Caracteres (Strings) & Reticências

• Não podemos usar reticências para continuar uma string. Mas

podemos juntar pedações de strings usando reticências

>> texto = [‘Qualquer idiota pode fazer uma regra,' ...

' e qualquer idiota a seguirá']

texto = Qualquer idiota pode fazer uma regra, e qualquer

idiota a seguirá

(34)

Operações Matemáticas

• Operações matemáticas em MATLAB podem ser

realizadas com escalares ou matrizes.

• O operadores mais comuns são:

^ Potenciação 4^2 = 8

- Negação -8 = -8

*

/

Multiplicação e

Divisão

2*pi = 6.2832

pi/4 = 0.7854

\ Divisão à

esquerda

6\2 = 0.3333

+

-

Adição e

Subtração

3+5 = 8

3-5 = -2

(35)

Ordem das operações

• A ordem das operações é definida primeiro pelo

parênteses, e então pela ordem padrão:

y = -4 ^ 2 resulta y = -16

desde que a potenciação acontece primeiro, mas

y = (-4) ^ 2 resulta y = 16

(36)

Números Complexos

• Todas as operações vistas até agora podem ser feitas

com números complexos.

>> x = 2+i*4; (ou 2+4i, ou 2+j*4, ou 2+4j)

>> y = 16;

>> 3 * x

ans = 6.0000 +12.0000i

>> x+y

ans = 18.0000 + 4.0000i

>> x'

(37)

Adição e Subtração de Arranjos

>> A=[8 5 4]; B= [10 2 7];

>> C = A + B

C = 18 7 11

>> A =[5 -3 8; 9 2 10]; B =[10 7 4; -11 15 1];

>> C = A + B

C = 15 4 12

-2 17 11

>> C - 8

ans =

7 -4 4

-10 9 3

(38)

Multiplicação de Arranjos (*)

• Se A e B são duas matrizes, a operação A*B tem sentido se, e

somente se, o número de colunas da matriz A for igual ao número

de linhas da matriz B. O resultado é uma matriz que possui o

mesmo número de linhas de A e o mesmo número de colunas de

B.

>> A = [1 4 3; 2 6 1; 5 2 8];

>> B = [5 4; 1 3; 2 6];

>> A*B

ans =

15 34

18 32

43 74

>> B*A

Error using *

Inner matrix dimensions must agree.

(39)

Multiplicação de Arranjos (^)

• Se A for uma matriz quadrada podemos usar o símbolo ^ para

multiplicar A por ela mesmo um certo número de vezes.

• Para que essa operação tenha sentido é necessário que A seja

uma matriz quadrada.

>> A = [1 2; -2 3];

>> A^2

ans =

-3 8

-8 5

(40)

Multiplicação de Arranjos (^)

• Se A for uma matriz quadrada podemos usar o símbolo ^ para

multiplicar A por ela mesmo um certo número de vezes.

• Para que essa operação tenha sentido é necessário que A seja

uma matriz quadrada.

>> A = [1 2; -2 3];

>> A^3

ans =

-19 18

-18 -1

>> A*A*A

ans =

-19 18

-18 -1

(41)

Multiplicação de Arranjos (*)

• Dois vetores podem ser multiplicados um pelo outro somente se

possuírem o mesmo número de elementos e se um dos vetores

for um arranjo linha e o outro vetor um arranjo coluna. O

resultado é um arranjo 1x1, ou seja, um escalar. Por isso esse

produto também é chamado de produto escalar.

>> L = [2 5 1]

L = 2 5 1

>> C = [3; 1; 4]

C =

3

1

4

>> L*C

ans = 15

(42)

Multiplicação de Arranjos (*)

• O MATLAB possui uma função nativa dot(a,b) que calcula o

produto escalar de dois vetores independente de serem linha ou

coluna.

>> C*L

ans =

6 15 3

2 5 1

8 20 4

>> dot(C,L)

ans = 15

(43)

Operações elemento por elemento

• Quando usamos * e ^ em arranjos, as operações matemáticas

seguem rigorosamente as regras da álgebra linear.

• As vezes, nós queremos realizar um cálculo item por item em uma

matriz ou vetor.

• MATLAB define .* e .^ (observe os pontos) como uma

multiplicação ou potenciação elemento por elemento. ( Ambas as

matrizes devem ser de mesma dimensão ou uma delas deve ser

1x1)

(44)

Operações elemento por elemento

>> A = [2 6 3; 5 8 4];

>> B = [1 4 10;3 2 7];

>> A.*B

ans =

2 24 30

15 16 28

>> A.^3

ans =

8 216 27

125 512 64

>> A*B

Error using *

(45)

Operações elemento por elemento

>> X=[-2:2:10]

X = -2 0 2 4 6 8 10

>> Y=X.^2-4*X

Y = 12 0 -4 0 12 32 60

>> Z = cos(X)

Z = -0.4161 1.0000 -0.4161 -0.6536 0.9602

-0.1455 -0.8391

(46)

Operações elemento por elemento

>> Z = [1:2:15]

Z = 1 3 5 7 9 11 13 15

>> Y = (Z.^3+5*Z)./(4*Z.^2-10)

Y =

-1.0000 1.6154 1.6667 2.0323 2.4650

2.9241 3.3964 3.8764

(47)

Vetorização

>> D = [1 4 9; 16 25 36; 49 64 81]

D =

1 4 9

16 25 36

49 64 81

>> R = sqrt(D)

R =

1 2 3

4 5 6

(48)

Nossa equação   tanh d

d

gc

v t gm t

c m

 

 

>> t=[0:2:20]';

>> g=9.81; m = 68.1; cd = 0.25;

>> v= sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t)

v =

0

18.7292

33.1118

42.0762

46.9575

49.4214

50.6175

51.1871

51.4560

51.5823

51.6416

(49)

Funções Nativas Para Arranjos

• Existem várias funções nativas que você pode usar para cálculos

envolvendo arranjos.

>> A = [ 5 9 2 4]

A = 5 9 2 4

>> mean(A)

ans = 5

• Se A é um vetor, mean(A)retorna o valor médio dos elementos

do vetor.

(50)

Funções Nativas Para Arranjos

(51)

Funções Nativas Para Arranjos

(52)

Pedindo Ajuda

• Existem várias funções nativas que você pode usar para criar e

manipular dados.

• O comando help pode fornecer informação a respeito de uma

função específica ou uma classe

 help elmat irá listatodas as funções elementares que trabalham com

matrizes.

 help elfun listará todas funções matemáticas elementares, incluindo

trigonometria, exponencial, complexos e outras.

• Você pode usar o comando lookfor para procurer nos arquivos

de ajuda ocorrências de texto e pode ser útil se você não sabe o

nome de uma função.

(53)

Gráficos

• MATLAB tem um grande arsenal de funções nativas que

manipulam gráficos.

• Duas dessas funções são plot (para gráficos 2-D ) e

plot3 (para gráficos 3-D).

• Em adição, você pode fazer anotações no gráfico usando

comandos como title, xlabel, ylabel, e legend

.

(54)

Exemplo

>> t=[0:2:20]';

>> g=9.81; m = 68.1; cd = 0.25;

>> v= sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t);

>> plot(t,v)

10 20 30 40 50 60

(55)

Exemplo de anotações

>> grid on;

>> title ('Gráfico de v por t');

>> xlabel('Valores de x');

>> ylabel('Valores de y');

10 20 30 40 50 60

Gráfico de v por t

Valores de y

(56)

Comando plot

• Caso o usuário decida plotar cada ponto com um

símbolo pode incluir um especificador delimitado por

aspas simples no comando plot.

>> t=[0:2:20]'; g=9.81; m = 68.1; cd = 0.25;

>> v= sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t);

>> plot(t,v,'o')

10 20 30 40 50 60

(57)

Comando plot

• Também é possível controlar a largura da linha, cor, tipo

de marcador

>> plot(t,v,'--dc', 'LineWidth',2,'MarkerSize',10,...

'MarkerEdgeColor', 'k', 'MarkerFaceColor','m');

10 20 30 40 50 60

(58)

Comando plot

CORES

Azul b

Verde g

Vermelho r

Ciano c

Magenta m

Amarelo y

Preto K

Branco w

Tipos de linha

Sólida -

Pontilhada :

Traço-ponto -.

Símbolos

Ponto .

Círculo o

Símbolo X x

Mais +

Estrela *

Quadrado s

Diamante d

(59)

Comando plot

• O MATLAB permite exibir mais de um conjunto de dados

no mesmo gráfico.

plot(t,v, t,2*v,'o');

20

40

60

80

100

120

(60)

Comando plot

• Os gráficos anteriores são apagados toda vez que um

novo comando plot é executado.

• O comando hold on é usado para manter o gráfico

anterior.

• O comando hold off retorna ao modo padrão.

>> plot(t,v)

>> hold on

>> plot (t,v,'o');

(61)

Comando subplot(m,n,p)

• Permite dividir a janela do gráfico em subjanelas.

• Divide a janela do gráfico em uma matriz mxn e

seleciona o p-ésimo gráfico como corrente.

>> subplot(1,2,1)

>> subplot(1,2,1);

>> plot(t,v);

>> axis square;

>> title 'gráfico 01';

>> subplot(1,2,2);

>> plot(t,v,'o');

>> title ('Outro gráfico');

0 5 10 15 20

0 10 20 30 40 50 60

gráfico 01

0 10 20 30 40 50 60

Outro gráfico

(62)

Comando plot3(x,y,z)

• Permite gerar gráficos tridimensionais.

>> t=0:pi/50:10*pi;

>> plot3(sin(t),cos(t),t);

>> grid on;

0.5

1

0

0.5

1

0

10

20

30

40

(63)

VOCÊ TEM UM PROBLEMA

t

d

v gm

c

No item anterior vimos que a velocidade final pode ser

Expressa na forma:

Isolando o coeficiente de arrasto, temos:

d 2

t

c mg

v

Massa e velocidades terminais para vários saltadores

(64)

VOCÊ TEM UM PROBLEMA

d 2

t

c mg

v

>> m=[83.6 60.2 72.1 91.1 92.9 65.3 80.9];

>> vt=[53.4 48.5 50.9 55.7 54 47.7 51.1];

>> g=9.81;

>> cd = g*m./vt.^2

cd = 0.2876 0.2511 0.2730 0.2881 0.3125 0.2815 0.3039

>> cd_medio = mean(cd)

cd_medio = 0.2854

>> cd_minimo=min(cd)

cd_minimo = 0.2511

>> cd_max = max(cd)

cd_max = 0.3125

Referências

Documentos relacionados

• Em todos os casos de alteração na execução de orçamentos já aprovados, a organização deve enviar um e-mail para comunidadepresente@fundacaoitausocial.org.br. detalhando o

Com relação ao CEETEPS, o tema desta dissertação é interessante por se inserir no Programa de Educação de Jovens e Adultos (PROEJA), sob a tutela da Coordenação de

Os chamados Manifestos de agosto de 1822 tiveram também grande importância no processo de Independência e foram redigidos por duas das principais lideranças

1 — Os apoios são concedidos pela Câmara Municipal da Guarda às IPSS legalmente cons- tituídas de acordo com o estipulado no n.º 3, do artigo 2.º do presente Regulamento... 2 —

A Lei de Proteção de Vegetação Nativa (Lei Federal nº12.651/2012), comumente denominada novo Código Florestal, tornou-se o principal marco regulatório da política

The Supreme Court upheld the exemption of small properties (up to four fiscal models) from restoring the Legal Forest Reserve deficits when these areas were deforested prior to

Já um tanque com a torneira meio aberta por 15 minutos pode chegar a gastar 279 litros de água.. Por isso, o melhor é deixar acumular roupa, colocar a água no tanque

• O exame citológico pode indicar o tipo e quantidade de bactérias envolvidas nas infecções de pele (Figura 3) • Bactérias fagocitadas no interior de neutrófilos são