Escolar Documentos
Profissional Documentos
Cultura Documentos
Introducao Ao MATLAB 2ed
Introducao Ao MATLAB 2ed
Introduca o ao MATLAB
Marcelo A. Trindade
Rubens Sampaio
3 de Setembro de 2010
Conteudo
Introduca o
4
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Aplicacoes
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
6
6
11
18
19
20
25
25
28
29
31
.
.
.
.
.
.
.
.
.
33
33
34
34
35
35
37
37
39
40
.
.
.
.
.
45
45
45
48
49
49
CONTEUDO
A Um programa para sistemas de equacoes
lineares
3
51
52
53
53
Captulo 1
Introduca o
O MATLABR pode ser usado como uma linguagem de programaca o ou como
uma ferramenta de calculo interativa. Em ambos os casos, o ambiente MATLAB
permite realizaca o de calculos, visualizaca o de resultados e desenvolvimento de
CAPITULO
1. INTRODUC
AO
TLAB, dos comandos basicos e de construca o de programa. A partir da, esperamos que o usuario seja capaz de desenvolver e direcionar os conhecimentos
adquiridos para sua a rea especfica.
Marcelo A. Trindade
Rubens Sampaio
Captulo 2
Comandos Basicos do MATLAB
2.1
Entrando no MATLAB
2.2
Primeiros passos
Uma variavel pode ser definida dando-se valores a ela. O tipo da variavel e automaticamente definido pelo MATLAB em funca o do valor dado a ela. A sintaxe
e a seguinte
>> t=1
t =
1
Neste caso, t e definido como um escalar pelo usuario. No entanto, o MATLAB
interpreta a variavel t como uma matriz de uma coluna e uma linha. Assim,
vetores e matrizes tambem sao definidos da mesma maneira.
>> T=[0 1 2 3 4 5 6 7 8 9 10]
T =
0
10
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
Esta ultima
definica o tambem pode ser realizada de uma maneira mais simples,
fornecendo o valor inicial, o incremento e o valor final,
>> T=0:1:10
T =
0
10
Size
Bytes
T
t
1x11
1x1
88
8
Class
double array
double array
Note que o vetor de ndices e definido da mesma maneira que uma variavel.
realizadas pelo MATLAB consideram variaveis matriciTodas as operacoes
ais, assim sendo a sintaxe do comando independe da dimensao da variavel. Por
exemplo, podemos calcular o seno de t e T usando a mesma sintaxe,
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
>> x = sin(t)
x =
0.8415
>> X = sin(T)
X =
Columns 1 through 7
0
0.8415
0.9093
0.1411
-0.7568
-0.9589
-0.2794
Columns 8 through 11
0.6570
0.9894
0.4121
-0.5440
Desta maneira, as novas variaveis x e X, relativas a t e T, sao matrizes com dimensao de t e T respectivamente, cujos elementos sao os senos dos elementos t e
T.
podem ser realizadas da mesma maneira
Outras operacoes
>> a = 2*T
a =
0
10
12
14
16
18
20
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
O modulo
e o argumento de um numero
complexo podem ser encontrados
com os comandos abs e angle. Estes comandos sao de especial interesse para o
estudo de vibracoes.
>> h=abs(b)
h =
5.3852
>> d=angle(b)
d =
0.3805
Note que o argumento e dado em radianos. A passagem para graus e feita da
seguinte maneira
>> d/pi*180
ans =
21.8014
da memoria
atraves do comando clear. Este comando e bastante interessante
manter na memoria
apenas as variaveis de maior interesse para facilitar o controle das mesmas. Quanto usado sem parametros, remove todas as variaveis da
memoria.
>> clear
>>
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
10
>> whos
>>
Este comando pode tambem ser usado para remover apenas algumas variaveis
selecionadas. Primeiro, definimos algumas variaveis
>> a=1; b=[2 3]; A=b*b;
>>
Atraves do comando whos, pode-se ver que estas variaveis foram armazenadas
na memoria
do MATLAB
>> whos
Name
Size
A
a
b
2x2
1x1
1x2
Bytes
32
8
16
Class
double array
double array
double array
Size
A
b
2x2
1x2
Bytes
32
16
Class
double array
double array
Funca o
Muda diretorio
corrente
Limpa a janela de comandos
Lista os topicos
de ajuda disponveis
Mostra informacoes
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
2.3
11
Operacoes
basicas com matrizes
2
5
3
6
Elementos podem ser extrados de uma matriz usando o mesmo procedimento utilizado anteriormente para vetores, lembrando que a sintaxe do MATLAB e A(i,j) com i e j denotando linha e coluna respectivamente.
>> A(2,3)
ans =
6
Linhas e colunas inteiras podem tambem ser extradas de uma matriz atraves da
utilizaca o o smbolo de dois pontos : para denotar todos os elementos.
>> A(1,:), A(:,2)
ans =
1
ans =
2
5
Pode-se tambem remover linhas e colunas de uma matriz usando a matriz vazia
[]
>> A(:,2)=[ ]
A =
1
4
3
6
na propria
matriz A. Poderamos tambem criar uma nova matriz B eliminando a
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
12
2
5
8
3
6
9
Este mesmo procedimento pode ser realizado para modificar valores de elementos especficos de uma matriz
>> A(3,2)=10
A =
1
4
7
2
5
10
3
6
9
2
5
10
2
5
3
6
9
3
6
1
4
7
5
10
4
5
6
7
10
9
Lembrando que o operador fornece na verdade o complexo conjugado transposto. No caso de variaveis complexas, o operador . e uma opca o para transposica o
1 Lembre-se
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
13
simples.
Os comandos para calcular o determinante e a inversa de uma matriz sao os
seguintes
>> det(A), inv(A)
ans =
12
ans =
-1.2500
0.5000
0.4167
1.0000
-1.0000
0.3333
-0.2500
0.5000
-0.2500
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
14
matriz identidade
matriz com todos elementos iguais a` 1
2
5
1
4
3
3
6
4
3
6
B =
Uma nova matriz C pode ser definida como resultado da multiplicaca o das matrizes A e B da seguinte maneira
>> C=A*B
C =
18
42
27
66
4
25
9
36
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
15
2268
5490
324
1764
729
4356
E =
-0.3818
-0.9242
D =
0.6479
0
0
83.3521
O problema de autovalores generalizados C*V=E*V*D tambem pode ser resolvido com a mesma funca o fornecendo adicionalmente a matriz E.
>> [V,D]=eig(C,E)
V =
0.9341
-0.3570
-0.8258
0.5640
D =
0.1693
0
0
0.0025
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
16
-0.9237
0.3831
84.6912
0
0
0.6376
S =
V =
0.5395
0.8420
-0.8420
0.5395
1.0000
0
42.0000
0
66.0000
-1.2857
U =
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
17
>> [L,U,P]=lu(C)
L =
1.0000
0.4286
0
1.0000
42.0000
0
66.0000
-1.2857
U =
P =
0
1
1
0
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
2.4
18
Size
3x3
3x1
3x1
Bytes
72
24
24
Class
double array
double array
double array
memoria
do MATLAB seriam gravadas no arquivo dados.mat.
Algumas vezes precisamos exportar os dados do MATLAB para um outro
aplicativo. Nestes casos, geralmente precisamos gravar os dados em formato ASCII. Isto pode ser feito usando o parametro -ascii no comando save. No entanto,
precisa-se tomar alguns cuidados ao gravar varias variaveis no mesmo arquivo.
Facamos, por exemplo,
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
19
2.0000000e+000 3.0000000e+000
5.0000000e+000 -6.0000000e+000
9.0000000e+000 1.1000000e+001
Podemos observar que os elementos das variaveis A, b e x foram gravados linhaa-linha no arquivo texto dados.txt. Este formato so deve realmente ser utilizado
dois problemas para
para exportar dados para outros aplicativos, pois ele impoe
variavel de nome dados. O segundo problema e que ao tentar criar uma unica
variavel com os elementos do arquivo dados.txt, o MATLAB sera incapaz pois as
2.5
Zeros de polinomios
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
20
+
+
-
0.8316i
0.8316i
0.7848i
0.7848i
do polinomio
que tem as razes x usamos o comando poly,
>> p=poly(x)
p =
1.0000
-8.0000
-4.8000
-0.0000
3.2000
-16.0000
2.6
permitindo tambem
O MATLAB, alem de realizar calculos, possui diversas funcoes
a partir de dados fornecidos. O procedicriar graficos em duas e tres dimensoes
mento usual para a construca o de um grafico no MATLAB e apresentado a seguir
1. Preparaca o dos dados
>> x = 0:0.3:30;
>> y1 = exp(-.01*x).*sin(x); y2 = exp(-.05*x).*sin(.7*x); y3 =
exp(-.1*x).*sin(.5*x);
2. Escolha de uma janela para tracar o grafico e utilizaca o de uma das funcoes
graficas do MATLAB
>> figure(1)
>> h = plot(x,y1,x,y2,x,y3);
3. Seleca o de tipos de linha e marcadores para as diferentes curvas
>> set(h,LineWidth,2,LineStyle,--;:;-.)
>> set(h,Color,r;g;b)
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
21
(0.05x)
@e
0.8
sen(0.7x)
0.6
0.4
Amplitude
0.2
0.2
0.4
0.6
0.8
10
Tempo
12
14
16
18
20
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
22
>> h = plot(x,y1,r--,x,y2,g:,x,y3,b-.);
As espessuras das linhas no entanto so podem ser definidas a posteriori neste
caso com o comando set, como mostrado anteriormente.
Podemos tambem adicionar uma outra curva no grafico ja existente usando
da curva (x,y,t) no mesmo grafico 3D, gracas ao comando hold on. As projecoes
foram feitas, tracando os seguintes conjuntos pontos: (x,y,0), (1,y,t) e (x,1,t). Para
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
23
isso foram utilizadas as matrizes especiais zeros e ones que dao origem neste
caso a vetores compostos de elementos nulos e unitarios respectivamente, do
mesmo tamanho dos vetores x, y e t.
Grfico 3D com plot3 Projees
10
T (seg)
0
1
1
0.5
0.5
0
0
0.5
Y (mm)
0.5
1
X (mm)
traca a trajetoria
animada tipo cometa dos pontos (x,y,t) e pode ser muito util
para facilitar a visualizaca o de curva complexas no espaco tridimensional.
>> comet3(x,y,t)
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
24
Eixo z
1
20
20
10
Eixo y
10
0
Eixo x
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
25
Eixo z
1
0
1
20
10
Eixo y
20
10
0
Eixo x
^2 ^3
1
0
1
20
20
15
10
10
5
x=2/j
O = Yi _i Ki
2.7
2.7.1
Programando em MATLAB
Arquivos .m
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
26
comet
Traca trajetoria
animada 2D dos pontos (x,y)
bar
Grafico de barras
hist
Histograma
polar
Grafico usando coordenadas polares com a ngulo em radianos
stairs
Grafico em forma escada
stem
Grafico 2D com sequencia
discreta de y
plot3
Traca curvas em 3D
comet3
Traca trajetoria
animada 3D dos pontos (x,y,z)
mesh
Traca uma malha colorida em 3D, meshc (+ contorno)
surf
Traca uma superfcie colorida em 3D, surfc (+ contorno)
Comandos para editar e modificar graficos
axis
Controla a escala e a visualizaca o dos eixos
colormap Especifica o mapa de cores utilizado
grid
Adiciona ou remove linhas de grelha do grafico corrente
hold
Mantem o grafico corrente (futuros graficos sao sobrepostos a este)
legend
Adiciona e define uma legenda no grafico corrente
subplot
Divide uma figura em varias sub-figuras e seleciona uma delas
text
Coloca um texto no grafico corrente
title
Ttulo do grafico corrente
xlabel
Ttulo do eixo x corrente
ylabel
Ttulo do eixo y corrente
mente, tambem uma por vez. Desta forma, o metodo de execuca o das linhas de
comandos e o mesmo. No entanto, se de varias linhas de comandos queremos
encia de comandos, neste caso basta moalterar apenas uma delas e repetir a sequ
dificar a linha correspondente no arquivo e re-executar o programa. Este arquivo
programa recebe o nome de roteiro (script) ja que ele informa ao MATLAB o ro encia de linhas de comandos contidas no
teiro a ser seguido na execuca o da sequ
arquivo programa.
Um arquivo .m pode ser criado usando-se qualquer editor de texto. Antes de
de uso pessoal para evitar conflito com arquivos de outros usuarios. O procedimento para
mudar de diretorio
e verificar o diretorio
corrente e o seguinte:
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
27
>> cd c:\users\myname
>> cd
c:\users\myname
ap3l.m
ap4.m
ap4l.m
d1 bode.m
mm1.m
mm2.m
odecomp.m
p1.m
p11.m
p12.m
p2.m
p eqlin.m
pend.m
pend eq.m
sample.tex
teste.eps
teste.m
>> what
M-files in the current directory d:\trindade\cursos\Vib
ap2
ap3
ap3l
ap4
ap4l
d1 bode
mm1
mm2
odecomp
p1
p11
p12
p2
p eqlin
pend
pend eq
teste
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
28
function f = sc(x)
f = sin(x).*cos(x);
E preciso gravar este arquivo com o mesmo nome da funca o, isto e sc.m. Note
que agora a recem-criada funca o sc pode ser utilizada no MATLAB da mesma
(comandos) do MATLAB.
maneira que as funcoes
>> a = sc(2)
a =
-0.3784
E interessante observar que as variaveis utilizadas na funca o, f e x, sao internas a`
funca o. De fato, executando-se o comando whos veremos que estas variaveis nao
2.7.2
O comando global
memoria
do MATLAB atraves do comando global <var1> <var2> .... Este comando determina que as variaveis <var1> <var2> ... sao globais, ou seja podem ser utilizadas em outros programas.
function f = sc(x) % Arquivo sc.m
global p
f = sin(p*x).*cos(x);
clear all % Arquivo principal.m (chama arquivo fun
ca
~o sc.m)
global p
p=3;
t=0:0.1:10;
y=sc(t);
plot(t,y,bo-)
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
2.7.3
29
O comando if
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
30
0.8
0.6
0.4
0.2
0.2
0.4
0.6
0.8
p=3
p=1
p=0.1
0
5
x
10
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
31
Operadores relacionais
<
menor que
>
maior que
<= menor que ou igual a
>= maior que ou igual a
== igual a
= diferente de
Conectivos logicos
&
e
|
ou
nao
xor ou excludente
2.7.4
O comando for
O comando for permite que se repita uma serie de comandos para diferentes
valores de uma ou mais variaveis. A sintaxe do comando for e a seguinte:
for k=ki:dk:kf
comandos
end
onde a linha comandos e executada para cada um dos seguintes valores da variavel
controladora k: ki, ki+dk, ki+2dk, ..., kf. Note que se (kf-ki) nao for multiplo
de dk, o ultimo
valor assumido por k e ki+N dk, onde N e o maximo valor inteiro
para o qual ki+N dk e menor que kf.
O valor do incremento dk pode tambem ser negativo desde que kf seja menor
que ki. Sempre que o incremento dk nao e fornecido, utilizando por exemplo
que dk e igual a 1. Tente reproduzir os exemplos
for k=ki:kf, o MATLAB supoe
2
abaixo :
for k=1:0.5:3
disp(k)
end
1
1.5000
2
2.5000
3
Aqui k comeca em 1 e e incrementado de 0.5 ate chegar em 3.
2 Lembre-se
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
32
for k=1:-0.4:-1
disp(k)
end
1
0.6000
0.2000
-0.2000
-0.6000
-1
Aqui k comeca em 1 e e decrementado de 0.4 ate chegar em -1.
for k=1:3.5
disp(k)
end
1
2
3
Aqui k comeca em 1 e e incrementado de 1 ate chegar em 3. Ele nao chega a
Captulo 3
Aplicacoes
3.1
Programas interativos
CAPITULO
3. APLICAC
OES
34
3.2
Zeros de funcoes
3.3
Calculando Integrais
Z b
a
f ( x ) dx
Esta integral pode ser aproximada usando a regra de Simpson com o comando
quad ou usando a regra trapezoidal com o comando trapz. Os dois comandos
trabalham de maneira bem diferente.
CAPITULO
3. APLICAC
OES
3.3.1
35
Regra trapezoidal
Z 1
0
2xe x dx
A aproximaca o para esta integral pode ser calculada atraves do seguinte programa:
function I=integral(dx)
x=0:dx:1;
f=2*x.*exp(-x.^2);
I=trapz(x,f);
Este programa cria um vetor x de a = 0 ate b = 1, com incremento dx definido
pelo usuario, calcula os valores de f ( x ) nestes pontos e usa o comando trapz para
aproximar a integral de f ( x ). A figura seguinte mostra graficamente a funca o
para dx = 0.1 e para dx = 0.02. A a rea sob a curva e a integral definida da funca o
f ( x ).
O calculo da integral e feito no MATLAB, usando a recem-definida funca o
integral, da seguinte maneira
>> integral(.1)
ans =
0.6298
>> integral(.02)
ans =
0.6320
da integral I para dx = 0.1 e dx = 0.02 sao
Observe que as aproximacoes
diferentes. De fato, usando o incremento menor dx = 0.02 aproxima-se melhor
a a rea sob a curva f ( x ). O valor exato desta integral e Iexato = 1 e1 ou calculando no MATLAB I = 0.63212055882856. Observando o grafico da funca o, e
facil imaginar porque a diminuica o do incremento dx melhora a aproximaca o da
3.3.2
Regra de Simpson
CAPITULO
3. APLICAC
OES
36
0.9
0.8
0.7
0.6
f(x)
0.5
0.4
0.3
0.2
0.1
0.1
0.2
0.3
0.4
0.5
x
0.6
0.7
0.8
0.9
103 .
ans =
0.63212053454568
Calculando agora com uma tolerancia de 108
>> quad(apl2,0,1,1e-8)
ans =
0.63212055882677
CAPITULO
3. APLICAC
OES
37
3.4
Equacoes
diferenciais
diferenciais ordinarias
Integradores de equacoes
Runge-Kutta explcito de ordem 4/5 (Dormand-Prince)
Runge-Kutta explcito de ordem 2/3 (Bogacki-Shampine)
Preditor-corretor de passo variavel (Adams-Bashforth-Moulton)
BDF de passo quase constante para EDOs rgidas (Klopfenstein-Shampine)
Implementaca o da regra trapezoidal
Implementaca o de um par Rosenbrock (2,3) modificado para EDOs rgidas
Runge-Kutta implcito trapezoidal/BDF (Bank-Rose-Hosea-Shampine)
3.4.1
Sistema massa-mola-amortecedor
f
m
sin t
c
m x
mk x =
f
m
sin t
c
m y2
mk y1
de primeira ordem
Em resumo, tem-se duas equacoes
y 1 = y2
f
y 2 = m sin t
c
m y2
mk y1
CAPITULO
3. APLICAC
OES
38
CAPITULO
3. APLICAC
OES
39
tros integradores de EDOs. Para isto, basta substituir ode45 por outro integrador
(ode15s por exemplo).
Assim, pode-se executar o programa principal no comand window do MATLAB
>> mma(1,.5,2,.5,1,0,0,10)
Deslocamento
0.8
0.5
0.6
0.4
0.2
0.5
0
0
10
Tempo
15
20
Velocidade
0.2
0.4
0.5
Velocidade
0.6
0
0.8
0.5
1
1
1.5
10
Tempo
15
20
1.2
1
0.5
0
0.5
Deslocamento
Figura 3.2: Resposta livre de um sistema de um grau de liberdade tipo massa iniciais.
mola-amortecedor a um conjunto de condicoes
3.4.2
Pendulo simples
CAPITULO
3. APLICAC
OES
40
41
2
0.5
0.8
0.6
0.5
0.4
0.2
Deslocamento
Deslocamento
CAPITULO
3. APLICAC
OES
1.5
0
1
10
Tempo
15
20
10
Tempo
15
20
0.2
0.4
0.6
0.5
0.8
10
Tempo
15
1
1
20
0.5
0.5
1
Velocidade
Velocidade
Velocidade
Velocidade
0.5
1
1
0
1.5
0.5
0
0.5
Deslocamento
10
Tempo
15
20
2
2
0
Deslocamento
Deslocamento
2
1
2
0
1
1
10
Tempo
15
20
Velocidade
Velocidade
1
0
2
1
2
3
10
Tempo
15
20
3
3
Deslocamento
1
0
1
Deslocamento
0
2
2
10
Tempo
15
20
Velocidade
1
4
4
1
Velocidade
2
2
0
3
10
Tempo
15
20
4
4
0
Deslocamento
Figura 3.3: Resposta livre de um pendulo sujeito a deslocamentos angulares iniciais de 1, 2 e 3 rad e considerando varias velocidades angulares iniciais.
CAPITULO
3. APLICAC
OES
3.4.3
42
Amplitude (dB)
20
1.5
1o modo (0.09 Hz) = [0.500, 0.707, 0.500]
1
10
0
10
20
0.5
30
1
10
10
0
20
0.5
Fase (graus)
40
60
80
100
120
140
1.5
160
1
10
0.5
1.5
2.5
3.5
4.5
5.5
10
Frequencia (Hz)
0.8
0.5
Massa 1
Massa 2
Massa 3
0.6
Massa 1
Massa 2
Massa 3
0.4
0.3
0.4
Deslocamento (m)
Deslocamento (m)
0.2
0.2
0.2
0.1
0.1
0.2
0.4
0.3
0.6
0.8
0.4
10
12
Tempo (seg.)
14
16
18
20
0.5
10
20
30
40
Tempo (seg.)
50
60
70
80
Figura 3.4: Sistema massa-mola-amortecedor com tres graus de liberdade: modos de vibraca o, resposta em frequencia, vibraca o livre, resposta com forcamento
harmonico.
CAPITULO
3. APLICAC
OES
43
10
Posicao da massa B
Posicao da massa A
8
1
6
4
2
0
2
10
15
20
25
10
10
15
20
25
10
15
20
25
15
Velocidade da massa B
Velocidade da massa A
10
10
15
20
25
10
5
0
5
10
Captulo 4
Outros comandos
4.1
Formato de sada
Ainda que todos os calculos em MATLAB sejam feitos com precisao dupla, o
:
formato da sada na tela pode ser modificado com as seguintes instrucoes
format short
format long
format short e
format long e
Quando um formato e prescrito este e mantido ate que seja prescrito outro formato.
4.2
Comando diary
O comando diary <nome de arquivo> faz com que tudo o que aparecer na tela,
daquele momento em diante, (exceto graficos), seja guardado no arquivo <nome
de arquivo> ate que ordenemos diary off. Para continuar guardando os dados
escrevemos diary on. Por exemplo
>>
>>
>>
>>
clear
diary ss
a=[1 2 3 4 5 6];
b=a.^2
44
CAPITULO
4. OUTROS COMANDOS
45
b =
1
>>
16
25
36
c=[1 2 3; 4 5 6]
c =
1
4
2
5
3
6
>> d=c
d =
1
2
3
4
5
6
b =
1
c=[1 2 3; 4 5 6]
c =
1
4
2
5
1
2
3
4
5
6
d=c
d =
diary off
3
6
16
25
36
CAPITULO
4. OUTROS COMANDOS
46
1.0000
-0.5000
b =
1
c=[1 2 3; 4 5 6]
c =
1
4
2
5
1
2
3
4
5
6
3
6
d=c
d =
diary off
d=[1 2; 3 4];
e=inv(d)
e =
-2.0000
1.0000
16
25
36
CAPITULO
4. OUTROS COMANDOS
1.5000
47
-0.5000
diary off
4.3
Comando cputime
O comando cputime da o tempo de CPU, em segundos, dos processos do MATLAB desde o comeco da seca o .
Consideremos o programa a seguir
t=cputime;
operacoes
cputime-t
espeDesta maneira obtemos o tempo de CPU gasto para executar as operacoes
cificadas.
Este comando serve para testar a eficiencia de nossos programas.
Como aplicaca o, consideremos o programa
1. clear
t=cputime;
a1=0:5000;
a2=0:2:10000;
a3=10000:15000;
A=[a1 ; a2; a3];
for i=1:3
for j=1:5001
C(i,j)=A(i,j)^3;
end
end
cputime-t
Ao executar este programa obtemos o tempo de CPU gasto, que foi de
5.0600 seg.
2.
clear
t=cputime;
a1=0:5000;
a2=0:2:10000;
a3=10000:15000;
A=[a1 ; a2; a3];
C=A.^3;
cputime-t
A executar este programa obtemos o tempo de CPU gasto, que foi de 0.1100
seg.
CAPITULO
4. OUTROS COMANDOS
48
4.4
O comando fprintf
4.4.1
Exemplo
CAPITULO
4. OUTROS COMANDOS
0.4149
0.2394
0.4149
0.7395
Valor proprio
Vetor proprio
v(2) =
0.1777
-0.6680
0.0941
-0.6680
0.2592
Valor proprio
Vetor proprio
v(3) =
0.9323
0.1148
-0.2666
0.1148
-0.1830
Valor proprio
Vetor proprio
v(4) =
-0.8392
-0.1105
0.5207
-0.1105
-0.0110
Valor proprio
Vetor proprio
v(5) =
0.6968
0.0942
-0.4519
0.4708
-0.2825
Lambda(2) = -8.689421
associado a valor Lambda(2),
Lambda(3) = 0.511543
associado a valor Lambda(3),
Lambda(4) = -0.466532
associado a valor Lambda(4),
Lambda(5) = 0.000000
associado a valor Lambda(5),
49
Apendice A
Um programa para sistemas de
equacoes
lineares
lineares AX = b queremos saber se o sistema tem
Dado um sistema de equacoes
APENDICE
A. UM PROGRAMA PARA SISTEMAS DE EQUAC
OES
LINEARES51
disp(Usando divisao a esquerda uma solu\c c\~ao e)
X1=A\b;
disp(X1);
disp(Usando inversa generalizada uma solu\c c\~ao e)
X2=pinv(A)*b;
disp(X2);
else
disp(O sistema nao tem sol)
disp(Usando divisao a esquerda uma aproximacao e)
X1=A\b;
disp(X1);
e1=b-A*X1;
J1=e1*e1/2;
fprintf(Erro da divisao a esquerda = %f \n,J1)
disp(Usando inversa generalizada uma aproximacao e)
X2=pinv(A)*b;
disp(X2);
e2=b-A*X2;
J2=e2*e2/2;
fprintf(Erro da inversa generalizada = %f \n,J2)
end
Para olhar o funcionamento do programa consideremos os seguintes exemplos
A.1
Consideremos o sistema
x + 2y + 3z = 2
2x y + z = 3
3x y + 2z = 0
APENDICE
A. UM PROGRAMA PARA SISTEMAS DE EQUAC
OES
LINEARES52
A.2
Consideremos o sistema
x + 2y + 3z + w = 1
2x y + z w = 0
3x y + 2z + 2w = 0
Para achar a soluca o do sistema fazemos
>> A=[1 -2 3 1;2 -1 1 -1;3 -1 2 2];
>> b=[1;0;0];
>> sist1(A,b)
de onde temos
Posto da matriz A= 3
Posto da matriz [A:b]= 3
O sistema tem infinitas sols
Usando divisao a esquerda uma solu\c cao e
-0.2500
0
0.4375
-0.0625
Usando inversa generalizada uma solu\c cao e
-0.2500
-0.2115
0.2788
-0.0096
A.3
Consideremos o sistema
x + 2y + 3z + w =
2x y + z w =
3x y + 2z + 2w =
x + y + 10z + w = 2
2x y + z w =
1
0
0
2
APENDICE
A. UM PROGRAMA PARA SISTEMAS DE EQUAC
OES
LINEARES53
Posto da matriz A= 4
Posto da matriz [A:b]= 5
O sistema nao tem sol
Usando divisao a esquerda uma aproximacao e
0.3125
0.3125
0.1875
-0.5000
Erro da divisao a esquerda = 1.000000
Usando inversa generalizada uma aproximacao e
0.3125
0.3125
0.1875
-0.5000
Erro da inversa generalizada = 1.000000