Upload
phunghuong
View
213
Download
0
Embed Size (px)
Citation preview
Capítulo 02Princípios
Básicos do MATLAB
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çãosimples, 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 osrecursos de ajuda do MATLAB
• Aprender como usar vetores para gerar um gráfico simples com base em umaequação.
Professor Tenani wwww.professortenani.com.br
Objetivo: Estimar o coeficiente de arraste medindo avelocidade final de vários saltadores de massa conhecida.
2dcdvg v
dt m
9,81 /g m s
VOCÊ TEM UM PROBLEMABUNGEE JUMPING
20 dt
cg v
m
t
d
gmv
c
Professor Tenani wwww.professortenani.com.br
VOCÊ TEM UM PROBLEMA
t
d
gmv
c
No item anterior vimos que a velocidade final pode ser Expressa na forma:
Isolando o coeficiente de arrasto, temos:
2d
t
mgc
v
Massa e velocidades terminais para vários saltadores
Professor Tenani wwww.professortenani.com.br
O AMBIENTE MATLAB
Professor Tenani wwww.professortenani.com.br
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)
Professor Tenani wwww.professortenani.com.br
Modo de Calculadora
• A janela de comandos pode ser usada como umacalculadora para escrever comandos linha porlinha.
>> 55 - 16
ans = 39
• Sempre que um calculo é feito, o MATLAB atribui o resultado para a variável ans>> ans + 11
ans = 50Professor Tenani wwww.professortenani.com.br
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ê.
Professor Tenani wwww.professortenani.com.br
Escalares
• Para atribuir um valor para uma variávelsimplesmente digite o nome da variável, o sinalde = seguido do valor:
>> a = 4
a = 4
• Observe que a nome da variável deve começarcom uma letra.
• Observe que após a atribuição, o nome e o valorda variável são impressos na tela para confirmaro que foi feito.
Professor Tenani wwww.professortenani.com.br
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
Professor Tenani wwww.professortenani.com.br
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
Professor Tenani wwww.professortenani.com.br
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
Professor Tenani wwww.professortenani.com.br
Números Complexos
• É possível atribuir valores complexos às variáveis usandoa variável i (ou j) para representar a unidadeimaginária.
>> x=2+i*4x = 2.000000000000000 + 4.000000000000000i
• Existem diversas variáveis pré-definidas, por exemplo: pi>> pians = 3.141592653589793
Professor Tenani wwww.professortenani.com.br
Formato de Exibição
• Você pode solicitar ao MATLAB para retornar os valoresusando vários formatos diferentes usando o comandoformat.
Exemplos>> format short; pi
ans =
3.1416
>> format long; pi
ans =
3.14159265358979
>> format short eng; pi
ans =
3.1416e+000
>> pi*10000
ans =
31.4159e+003
Professor Tenani wwww.professortenani.com.br
Arranjos, Vetores e Matrizes
• Um arranjo é uma coleção de valoresrepresentados por um único nome de variável.Podem ser de dois tipos:
• Arranjos de uma dimensão são chamadosvetores.
• Arranjos bidimensionais são chamados matrizes.
• Para se inserir arranjos : usa-se colchetes
• Entradas em uma linha são separadas porespaço.
• Linhas são separadas por ponto e vírgula
Professor Tenani wwww.professortenani.com.br
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]’
Professor Tenani wwww.professortenani.com.br
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]
Professor Tenani wwww.professortenani.com.br
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.
Professor Tenani wwww.professortenani.com.br
Comando who
• O comando who irá mostrar uma lista de todas asvariáveis correntes.
>> who
Your variables are:
A a ans b x
Professor Tenani wwww.professortenani.com.br
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
Professor Tenani wwww.professortenani.com.br
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
Professor Tenani wwww.professortenani.com.br
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.
Professor Tenani wwww.professortenani.com.br
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.
Professor Tenani wwww.professortenani.com.br
Exercícios em Sala01) 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. [10 20 10 20]u
b. [ 1;20;3]v
c. [1 0 9;2 2 0;1 2 3]w
d. [ ' ]x u v
e. (3,3) 7y
f. [ 4,1 4,1 1,4 ']z zeros ones zeros
g. 4 2,1v x
02) Qual o valor de 2,1w ?
03) Qual o valor de 2,1x ?
04) Qual o valor de 2,1y ?
05) Qual o valor de 3v após a execução da declaração (g)? Professor Tenani wwww.professortenani.com.br
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
Professor Tenani wwww.professortenani.com.br
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
Professor Tenani wwww.professortenani.com.br
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
Professor Tenani wwww.professortenani.com.br
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
Professor Tenani wwww.professortenani.com.br
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
Professor Tenani wwww.professortenani.com.br
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)'
Professor Tenani wwww.professortenani.com.br
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.
110x 210x
Professor Tenani wwww.professortenani.com.br
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]
a = 1 2 3 4 5 6 7 8
Professor Tenani wwww.professortenani.com.br
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á
Professor Tenani wwww.professortenani.com.br
Operações Matemáticas
• Operações matemáticas em MATLAB podem serrealizadas 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
Professor Tenani wwww.professortenani.com.br
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
Professor Tenani wwww.professortenani.com.br
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 * xans = 6.0000 +12.0000i
>> x+yans = 18.0000 + 4.0000i
>> x'ans = 2.0000 - 4.0000i
Professor Tenani wwww.professortenani.com.br
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
Professor Tenani wwww.professortenani.com.br
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úmerode linhas da matriz B. O resultado é uma matriz que possui omesmo número de linhas de A e o mesmo número de colunas deB.
>> 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.
Professor Tenani wwww.professortenani.com.br
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 sejauma matriz quadrada.
>> A = [1 2; -2 3];
>> A^2
ans =
-3 8
-8 5
Professor Tenani wwww.professortenani.com.br
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 sejauma matriz quadrada.
>> A = [1 2; -2 3];
>> A^3
ans =
-19 18
-18 -1
>> A*A*A
ans =
-19 18
-18 -1
Professor Tenani wwww.professortenani.com.br
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 vetoresfor um arranjo linha e o outro vetor um arranjo coluna. Oresultado é um arranjo 1x1, ou seja, um escalar. Por isso esseproduto 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
Professor Tenani wwww.professortenani.com.br
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 oucoluna.
>> C*L
ans =
6 15 3
2 5 1
8 20 4
>> dot(C,L)
ans = 15
Professor Tenani wwww.professortenani.com.br
Operações elemento por elemento
• Quando usamos * e ^ em arranjos, as operações matemáticasseguem 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 umamultiplicação ou potenciação elemento por elemento. ( Ambas asmatrizes devem ser de mesma dimensão ou uma delas deve ser1x1)
Professor Tenani wwww.professortenani.com.br
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 *
Inner matrix dimensions must agree.Professor Tenani wwww.professortenani.com.br
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
Professor Tenani wwww.professortenani.com.br
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
Professor Tenani wwww.professortenani.com.br
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
7 8 9Professor Tenani wwww.professortenani.com.br
Nossa equação tanh d
d
gcgmv t 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
Professor Tenani wwww.professortenani.com.br
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.
Professor Tenani wwww.professortenani.com.br
Funções Nativas Para Arranjos
Professor Tenani wwww.professortenani.com.br
Funções Nativas Para Arranjos
Professor Tenani wwww.professortenani.com.br
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.
Professor Tenani wwww.professortenani.com.br
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.
Professor Tenani wwww.professortenani.com.br
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)
0 2 4 6 8 10 12 14 16 18 200
10
20
30
40
50
60
Professor Tenani wwww.professortenani.com.br
Exemplo de anotações>> grid on;
>> title ('Gráfico de v por t');
>> xlabel('Valores de x');
>> ylabel('Valores de y');
0 2 4 6 8 10 12 14 16 18 200
10
20
30
40
50
60Gráfico de v por t
Valores de x
Valo
res d
e y
Comando plot• Caso o usuário decida plotar cada ponto com um
símbolo pode incluir um especificador delimitado poraspas 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')
0 2 4 6 8 10 12 14 16 18 200
10
20
30
40
50
60
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');
0 2 4 6 8 10 12 14 16 18 200
10
20
30
40
50
60
Comando plotCORES
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 -.
Tracejada --
Símbolos
Ponto .
Círculo o
Símbolo X x
Mais +
Estrela *
Quadrado s
Diamante d
Professor Tenani wwww.professortenani.com.br
Comando plot• O MATLAB permite exibir mais de um conjunto de dados
no mesmo gráfico.plot(t,v, t,2*v,'o');
0 2 4 6 8 10 12 14 16 18 200
20
40
60
80
100
120
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áficoanterior.
• O comando hold off retorna ao modo padrão.
>> plot(t,v)
>> hold on
>> plot (t,v,'o');
Professor Tenani wwww.professortenani.com.br
Comando subplot(m,n,p)• Permite dividir a janela do gráfico em subjanelas.
• Divide a janela do gráfico em uma matriz mxn eseleciona 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 200
10
20
30
40
50
60gráfico 01
0 5 10 15 200
10
20
30
40
50
60Outro gráfico
Professor Tenani wwww.professortenani.com.br
Comando plot3(x,y,z)• Permite gerar gráficos tridimensionais.
>> t=0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t);
>> grid on;
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
10
10
20
30
40
Professor Tenani wwww.professortenani.com.br
VOCÊ TEM UM PROBLEMA
t
d
gmv
c
No item anterior vimos que a velocidade final pode ser Expressa na forma:
Isolando o coeficiente de arrasto, temos:
2d
t
mgc
v
Massa e velocidades terminais para vários saltadores
Professor Tenani wwww.professortenani.com.br
VOCÊ TEM UM PROBLEMA
2d
t
mgc
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
Professor Tenani wwww.professortenani.com.br