Académique Documents
Professionnel Documents
Culture Documents
de Dinamica e Vibracoes,
Conteudo
1 Introduca o
. . . . . . .
2.6 Criaca o e edica o de graficos . . .
2.7 Programando em MATLAB . . .
2.7.1 Arquivos .m . . . . . . . .
2.7.2 O comando global . . . .
2.7.3 O comando if . . . . . . .
2.7.4 O comando for . . . . . .
Aplicacoes
. . . . . . . . . . . . . .
3.3 Calculando Integrais . . . . . . . . . . . .
3.3.1 Regra trapezoidal . . . . . . . . . .
3.3.2 Regra de Simpson . . . . . . . . .
3.4 Equacoes
diferenciais . . . . . . . . . . . .
3.4.1 Sistema massa-mola-amortecedor
3.4.2 Pendulo simples . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
6
6
11
19
20
21
28
28
30
31
33
.
.
.
.
.
.
.
.
35
35
36
36
37
39
39
40
42
Captulo 1
Introduca o
R
O MATLAB
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
algoritmos usando uma sintaxe muito proxima
MathWorks e inumeros
outros sao
desenvolvidos em todo o mundo, com e sem reconhecimento da MathWorks, e
podem geralmente ser encontrados na internet.
Enquanto que o programa principal do MATLAB depende da plataforma (Unix,
Windows, Macintosh) os arquivos .m, que constituem as funcoes
e programas, sao
independentes da plataforma e podem portanto ser utilizados em todas elas. Esta e outra razao para o estabelecimento do MATLAB como ferramenta de calculo
matricial de predileca o entre os profissionais do meio academico e industrial. De
fato, nao e incomum encontrar um toolbox na internet bem adaptado ao problema especfico que se quer resolver. E mesmo que ele tenha sido desenvolvido em
ambiente Unix, pode ser utilizado em ambiente Windows.
CAPITULO
1. INTRODUC
AO
Captulo 2
Comandos Basicos do MATLAB
2.1 Entrando no MATLAB
O MATLAB pode ser executado pressionando o cone correspondente, criado na
instalaca o do programa, ou atraves da barra de tarefas. Quando executado, a janela principal do MATLAB, chamada MATLAB Command Window, e aberta. O
smbolo >> na tela indica que O MATLAB esta pronto para receber um comando. Assim, esta janela funciona como um ambiente interativo no qual comandos
sao fornecidos pelo usuario e executados instantaneamente pelo MATLAB. Uma
linha de comandos e finalizada pressionando a tecla [Enter]. Os comandos fornecidos sao memorizados e podem ser listados usando as setas para cima e para
baixo do teclado.
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
10
Esta ultima
10
>> whos
Name
Size
Bytes
T
t
1x11
1x1
88
8
Class
double array
double array
e minusculas.
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
Note que o vetor de ndices e definido da mesma maneira que uma variavel.
Todas as operacoes
realizadas pelo MATLAB consideram variaveis matriciais, 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,
>> 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.
Outras operacoes
podem ser realizadas da mesma maneira
>> a = 2*T
a =
0
10
12
14
16
18
20
reais. A variavel i representa 1 desde que nao tenha sido definida anteriormente pelo usuario.
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
e o argumento de um numero
>> 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
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
>> d/pi*180
ans =
21.8014
As variaveis armazenadas na memoria
atraves do comando clear. Este comando e bastante interessante quando se deseja liberar uma quantidade de memoria
>> clear
>>
>> 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
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
10
Funca o
Muda diretorio
corrente
Limpa a janela de comandos
Apaga todas as variaveis da memoria
do MATLAB
Apaga arquivos
Executa programas de demonstraca o das capacidades do MATLAB
Lista arquivos no diretorio
corrente
Lista os topicos
de ajuda disponveis
Abre janela a navegaca o nos topicos
de ajuda
Procura arquivos .m por palavra chave
Encerra a sessao do MATLAB
Mostra informacoes
sobre as variaveis armazenadas na memoria
2.3 Operacoes
basicas com matrizes
As matrizes sao tratadas da mesma maneira que escalares e vetores no MATLAB,
ja que estes ultimos
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.
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
11
ans =
2
5
Pode-se tambem remover linhas e colunas de uma matriz usando a matriz vazia
[]
>> A(:,2)=[ ]
A =
1
4
3
6
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
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
jam apropriadas,
>> [A A(:,1); A(1:2,:)
12
A(2:3,2)]
ans =
1
4
7
1
4
2
5
10
2
5
3
6
9
3
6
1
4
7
5
10
Operacoes
basicas de matrizes, como tranposica o, determinante e inversao,
sao bastante simples no MATLAB. O operador de transposica o e representado
por
>> A
ans =
1
2
3
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
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
Note que estes comandos so funcionam para matrizes quadradas evidentemente. Para se conhecer as dimensoes
de uma variavel armazenada na memoria
do
MATLAB, pode-se usar o comando size
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
13
>> [l,c]=size(A)
l =
3
c =
3
As duas variaveis l e c fornecidas pelo MATLAB representam o numero
de linhas
e colunas da matriz A. Outras operacoes
com matrizes sao listadas digitando-se
help matfun.
Algumas funcoes
do MATLAB se aplicam individualmente a` cada coluna da
matriz fornecida produzindo um vetor linha cujos elementos correspondem ao
resultado de cada coluna. Estas funcoes
podem ser aplicadas as linhas de uma
matriz, fornecendo-se a transposta da matriz como entrada. Algumas destas
funcoes
sao apresentadas na tabela abaixo.
max
mean
min
prod
sort
std
sum
Cabe observar que para um vetor a complexo, a funca o sort ordena seus componentes por ordem crescente de modulo.
matriz identidade
matriz com todos elementos iguais a` 1
matriz com elementos aleatorios
distribudos entre 0 e 1
matriz nula
As operacoes
de adica o/subtraca o e multiplicaca o de matrizes podem ser realizadas com os mesmos operadores utilizados para escalares e vetores. Os principais operadores aritmeticos do MATLAB sao listados digitando-se help ops.
Sejam as matrizes
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
14
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
de colunas
da primeira matriz e igual ao numero
4
25
9
36
Assim, o ultimo
calculo tambem
pode ser realizado usando o comando A.^2. Note a diferenca entre as duas
operacoes
de multiplicaca o
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
15
2268
5490
324
1764
729
4356
E =
-0.3818
-0.9242
0.6479
0
0
83.3521
D =
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
0.1693
0
0
0.0025
D =
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
16
-0.9237
0.3831
84.6912
0
0
0.6376
0.5395
0.8420
-0.8420
0.5395
S =
V =
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
18
ao MATLAB usando o comando save. O formato padrao e o binario, que origina um arquivo com extensao .mat. A sintaxe do comando save e mostrada no
exemplo a seguir
>> A=[1 2 3; -4 5 -6; 7 9 11]; b=[1; 3; 5]; x=A\b;
>> save dados A b x
>> dir dados*
dados.mat
Vemos entao que basta fornecer o nome do arquivo, sem extensao, no qual queremos gravar as variaveis. O MATLAB executa o comando criando um arquivo
chamado dados.mat que contem as variaveis A, b e x e que e gravado no diretorio
Size
3x3
3x1
3x1
Bytes
72
24
24
Class
double array
double array
double array
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
para exportar dados para outros aplicativos, pois ele impoe
dois problemas para
recuperaca o dos dados no proprio
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
20
+
+
-
0.8316i
0.8316i
0.7848i
0.7848i
p ( x ).
O processo inverso tambem pode ser realizado. Assim, para achar os coeficientes
do polinomio
-8.0000
-4.8000
-0.0000
3.2000
-16.0000
fornecido p( x) = x5
8x4 4.8x3 + 3.2x 16 e tal que p( x) = 5/8p( x) . Isto e verdadeiro ja que p( x) =
0 implica p( x) = 0 e a razao do = 8/5 escolhido pelo MATLAB vem do fato
que o comando poly encontra o polinomio
graficas do MATLAB
>> figure(1)
>> h = plot(x,y1,x,y2,x,y3);
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
21
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
22
Resposta no Tempo
Primeiro
Segundo
Terceiro
e(0.05x)sen(0.7x)
0.8
0.6
0.4
Amplitude
0.2
0
0.2
0.4
0.6
0.8
1
10
Tempo
12
14
16
18
20
Convem ressaltar que a seleca o de tipos e cores das linhas pode ser realizada
diretamente no comando grafico plot. Assim, o mesmo resultado poderia ser
obtido fazendo
>> 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
o comando hold. Quando ligado (hold on), todos os proximos
graficos serao
colocados sobre aqueles ja existentes ate que o hold seja desligado (hold off) ou
que a janela seja fechada.
>> hold on
>> plot(x,-y3,m>--);
>> hold off
A legenda pode ser atualizada re-executando o comando legend, agora com mais
um parametro (legend(Primeiro,Segundo,Terceiro,Quarto)).
O comando axis permite, entre outras coisas, mostrar apenas uma certa regiao do grafico. Para isso, basta fornecer os intervalos em x e y (e em z para
graficos 3D) que se deseja mostrar.
>> axis([0 2 -1 1])
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
23
Neste caso, apenas os limites do eixo x foram modificados. Note que o restante
do grafico nao e perdido, so nao esta sendo mostrado. A visualizaca o original
pode ser recuperada com o comando axis auto. Em alguns casos, tambem e
interessante modificar o valores usados na marcaca o dos eixos. Isto pode ser
feito com o comando set.
>> set(gca,XTick,[0:0.25:2],YTick,[-1:0.25:1])
O comando set pode ser utilizado para ajustar quaisquer propriedades de graficos
no MATLAB. Aqui, usamos gca para denotar o eixo corrente. Digitando-se set(gca),
obtemos todas as propriedades do eixo que podem ser modificadas e seus valores
possveis.
Existem diversos comandos para tracar graficos tambem em tres dimensoes
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
24
10
T (seg)
0
1
1
0.5
0.5
0.5
Y (mm)
0.5
1
X (mm)
animada tipo cometa dos pontos (x,y,t) e pode ser muito util
do comando mesh.
>> figure(Position,[232 20 330 250],PaperPositionMode,auto)
>> h=surfl(x,x,y2*y3);
>> shading interp
>> colormap(copper)
>> xlabel(Eixo {\bf x}), ylabel(Eixo {\bf y}), zlabel(Eixo
{\bf z})
>> print -depsc surfl
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
25
Eixo z
1
20
20
10
Eixo y
10
0
Eixo x
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
26
Eixo z
1
0
1
20
10
Eixo y
20
10
Eixo x
1
0
1
20
20
15
10
10
5
x=2
= i i i
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
plot
loglog
semilogx
semilogy
plotyy
comet
bar
hist
polar
stairs
stem
plot3
comet3
mesh
surf
axis
colormap
grid
hold
legend
subplot
text
title
xlabel
ylabel
27
discreta de y
Traca curvas em 3D
Traca trajetoria
de
comandos digitadas e executadas, uma por vez, anteriormente pode ser concentrada em um arquivo programa .m que ao ser executado no MATLAB, executa
cada linha do programa, composta pelas linhas de comandos usadas anterior-
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
28
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
alterar apenas uma delas e repetir a sequ
encia de comandos, neste caso basta modificar 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 roteiro a ser seguido na execuca o da sequ
encia de linhas de comandos contidas no
arquivo programa.
Um arquivo .m pode ser criado usando-se qualquer editor de texto. Antes de
criar um novo arquivo, assegure-se que o diretorio
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:
>> cd c:\users\myname
>> cd
c:\users\myname
corrente de
duas maneiras. O comando dir lista todos os arquivos no diretorio
corrente enquanto que o comando what lista somente os arquivos especficos do MATLAB
>> dir
.
..
ap2.m
ap2result.mat
ap3.m
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
29
clear all
t=0:0.1:10;
y=sin(t).*cos(t);
plot(t,y,bo-)
Grave o arquivo com um nome qualquer (por exemplo, exemplo1.m) selecionando File/Save no menu. O programa pode agora ser executado na janela
de comandos do MATLAB fazendo >> exemplo1 . Certifique-se que o diretorio
corrente e o mesmo utilizado para gravar o arquivo .m. Este programa traca
t [0, 10] contra y(t) = sin t cos t com linha solida
e crculos azuis.
Assim como os comandos do MATLAB, o usuario tambem pode criar programas que atuam como funcoes,
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
30
na 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-)
2.7.3 O comando if
O comando if permite que se utilize comandos condicionais no MATLAB, tanto no Command Window como no interior de roteiros ou funcoes.
A melhor
maneira de entender a sintaxe deste comando e atraves de um exemplo. Considere a funca o sc definida anteriormente. Suponha que a funca o agora tenha
um valor limite para o parametro p, de forma que se p < 1 a funca o retorna
sc( x) = sin x cos x e nao sc( x) = sin px cos x. Isto pode ser realizado modificando novamente o arquivo sc.m e incluindo o comando if.
function f = sc(x) % Arquivo sc.m
global p
if p<1
f = sin(1*x).*cos(x);
else
f = sin(p*x).*cos(x);
end
O MATLAB interpreta esta funca o da seguinte maneira: 1) o valor de p definido na memoria
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
31
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
p=3
p=1
p=0.1
0
5
x
10
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
32
&
e
|
ou
nao
xor ou excludente
de dk, o ultimo
CAPITULO
2. COMANDOS BASICOS
DO MATLAB
33
abaixo2 :
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.
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
3.5 porque o proximo
2 Lembre-se
Captulo 3
Aplicacoes
CAPITULO
3. APLICAC
OES
35
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
36
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 ).
CAPITULO
3. APLICAC
OES
37
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
CAPITULO
3. APLICAC
OES
38
3.4 Equacoes
diferenciais
No MATLAB existem diversas algoritmos para resolver sistemas de equacoes
diferenciais ordinarias de primeira ordem. Estes sao mostrados na tabela abaixo.
ode45
ode23
ode113
ode15s
ode23t
ode23s
ode23tb
Integradores de equacoes
diferenciais ordinarias
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)
CAPITULO
3. APLICAC
OES
39
f
m
sin t
c
k
m x m x
f
m
sin t
c
m y2
mk y1
c
m y2
k
m y1
CAPITULO
3. APLICAC
OES
40
de linhas que t. Cada coluna de Y corresponde ao comportamento de uma variavel no tempo. No caso deste exemplo, a
primeira coluna representa os deslocamentos da massa assumidos em cada instante de tempo e a segunda coluna representa as velocidades da massa assumidas
em cada instante de tempo.
A linha de comando utilizada para executar a integraca o das equacoes
pode
tambem ser parte de um outro programa. Considere, por exemplo, o seguinte
programa
function mma(m,c,k,f,xi,vi,ti,tf)
parametros = [m c k f];
Yi = [xi; vi];
[t,Y] = ode45(apl3,[ti tf],Yi,[],parametros);
subplot(221)
plot(t,Y(:,1));
xlabel(Tempo); ylabel(Deslocamento);
subplot(223)
plot(t,Y(:,2));
xlabel(Tempo); ylabel(Velocidade);
subplot(122)
plot(Y(:,1),Y(:,2))
xlabel(Deslocamento); ylabel(Velocidade);
Note que os parametros m, c, k e f sao passados do programa principal mma
para a integraca o das equacoes
atraves do vetor parametros. O recebimento dos
parametros pela funca o que calcula dydt e feita atraves do argumento extra P. O
parametro opt nao tem utilidade mas e necessario devido a` sintaxe de chamada do integrador. E possvel tambem fazer o mesmo programa utilizando outros 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)
sendo que o primeiro valor corresponde a` massa m, o segundo ao amortecedor c,
o terceiro a` rigidez k, o quarto a` amplitude da forca f , o quinto ao deslocamento
inicial x(0), o sexto a` velocidade inicial x (0), o setimo ao instante inicial ti e o
oitavo ao instante final t f . A proxima
41
0.8
0.5
0.6
0.4
0.2
0.5
1
0
0
10
Tempo
15
20
Velocidade
Deslocamento
CAPITULO
3. APLICAC
OES
0.2
0.4
Velocidade
0.5
0.6
0
0.8
0.5
1
1.5
10
Tempo
15
20
1.2
1
0.5
0
0.5
Deslocamento
CAPITULO
3. APLICAC
OES
42
function pendulo(g,l,xi,vi,ti,tf)
parametros = [g l];
Yi = [xi; vi];
[t,Y] = ode45(apl4,[ti tf],Yi,[],parametros);
subplot(221)
plot(t,Y(:,1));
xlabel(Tempo); ylabel(Deslocamento);
subplot(223)
plot(t,Y(:,2));
xlabel(Tempo); ylabel(Velocidade);
subplot(122)
plot(Y(:,1),Y(:,2))
xlabel(Deslocamento); ylabel(Velocidade);
e o programa auxiliar que define a equaca o do pendulo e
function dydt=apl4(t,y,opt,P)
g = P(1); l = P(2);
dydt = [y(2); -g/l*sin(y(1))];
Pode-se entao executar o programa principal pendulo no comand window do
MATLAB:
>> pendulo(9.81,10,1,0,0,20)
Experimente aumentar o valor de xi de 1 para 2 e 3, para ver o que acontece
com os graficos. Voce consegue distinguir o comportamento deste sistema naolinear daquele do sistema linear massa-mola-amortecedor.
Procure na biblioteca de arquivos .m os programas mmola.m e pduplo.m. Execute estes arquivos no MATLAB e, em seguida, veja como eles foram feitos (>> type
mmola) e (>> type pduplo). Apesar de serem mais extensos e usarem alguns comandos novos, estes dois programas utilizam a mesma metodologia apresentada
nas ultimas
duas secoes
para resolver as equacoes
diferenciais de um sistema
massa-mola-amortecedor com 3 graus de liberdade e de um pendulo duplo.