Movimento de uma Mola
Pedro Barahona
DI/FCT/UNL
Março 2004
30/31 Março de 2004
Movimento de uma Mola
1
Molas - Bases Físicas
• Como no caso da queda de corpos, o movimento de uma mola
(isto é, um corpo agarrado ao fim da mola) deve ser
determinado pelas forças que nela actuam. Antes de as definir,
vamos considerar que a mola em repouso ocupa a posição 0.
• Podemos considerar 3 forças:
– A força que atrai a mola para a sua posição de repouso.
– A força do atrito, contrária à velocidade da mola.
– A força da gravidade (se a mola não estiver na horizontal),
que puxa a mola para baixo
• Dividindo a força pela massa do corpo obtemos a respectiva
aceleração.
30/31 Março de 2004
Movimento de uma Mola
2
Molas - Bases Físicas
F2 > 0
F1 < 0
|F2 | < |F1 |
0
x1
x
• A aceleração provocada pela força que atrai a mola para a sua
posição de repouso
a1 = - k1  x
• A aceleração provocada pelo atrito, pode ser expressa por
a2 = - k2  v
• A aceleração da gravidade (g = -9.8ms-2), afectada por um factor
que reflecte a inclinação (p.ex., k3 = 0 para movimento horizontal)
a3 = - k3  g
• Considerando todos estes componentes temos
a = - k1  x - k2  v - k3  g
30/31 Março de 2004
Movimento de uma Mola
3
Modelação de Equações Diferenciais
Baseado na aproximação de funções por séries de Taylor, vamos
simular o comportamento temporal de uma função x(t) através de
f(t+dt) = f(t) + df
Sendo df o valor da variação da função f no intervalo dt, ele pode
ser calculado a partir da aproximação de primeira ordem
df
df 
dt
dt
A velocidade do corpo (v) e a posição são assim obtidas já que a
aceleração é a velocidade são, respectivamente, as suas derivadas
em ordem ao tempo
dv
dx
dv 
dt = a · dt
dx 
dt = v · dt
dt
dt
30/31 Março de 2004
Movimento de uma Mola
4
Especificação do Problema
Com base na situação inicial (posição inicial da mola,
x0), características da mola (“força”, atrito e
inclinação), determinar a evolução ao longo de um
tempo t da posição da mola.
Entrada
Posição Inicial
“Força” da Mola
Coeficiente deAtrito
Inclinação
Intervalo de Tempo
Tempo de Simulação
30/31 Março de 2004
Resultados
Algoritmo de
Movimento de
Uma Mola
Movimento de uma Mola
Gráficos para
• Posição da mola
• Velocidade da mola
• Aceleração da mola
5
Gráficos
Em Octave a forma mais simples de desenhar um gráfico da
função f(x) é utilizar a função pre-definida
1.00
plot(X,F)
sendo X e F vectores da
mesma dimensão, e em que o
i-ésimo elemento do vector F
corresponde ao valor da
função no ponto x indicado
pelo i-ésimo elemento do
vector X.
i
X
F
1
0.00
0.00
30/31 Março de 2004
2
0.10
0.00
3
0.20
0.01
4
0.30
0.03
5
0.40
0.06
0.80
0.60
F
0.40
0.20
0.00
0.00 0.10 0.20 0.30 0.40 0.50 0.60 0.70 0.80 0.90 1.00
X
6
0.50
0.13
7
0.60
0.22
Movimento de uma Mola
8
0.70
0.34
9
0.80
0.51
10
0.90
0.73
11
1.00
1.00
6
Tipos de Dados
As variáveis dt, k1, k2 e k3 são do tipo real e mantêm-se
constantes ao longo do problema, uma vez inicializadas.
Como se pretendem gráficos para a posição, velocidade e
aceleração ao longo do tempo, deverá este manter um conjunto
de vectores T, X, V e A com o significado esperado para registar
os valores sucessivos de
• T : os instantes em que são avaliadas as outras grandezas
• X : a posição do corpo nos instantes registados em T
• V : a velocidade do corpo nos instantes registados em T
• A : a aceleração do corpo nos instantes registados em T
30/31 Março de 2004
Movimento de uma Mola
7
Vectores e Matrizes
Todas as linguagens de programação de alto nível permitem a
especificação de vectores (“arrays”) para agrupar dados do mesmo
tipo.
Em geral, os dados destas estruturas estão organizados em uma ou
mais dimensões, sendo as matrizes um caso particular de vectores
bidimensionais (2 dimensões).
Em Octave apenas se podem utilizar, como “primitivas”, vectores
uni- e bi-dimensionais (vectores de outras dimensões, e respectivas
operações têm de ser tratados pelo utilizador, que tem de criar as
respectivas operações de acesso e manipulação).
1 2 3
Por exemplo, A = [ 1, 2, 3] ou B = [ 1 2 3 ; 4 5 6].
30/31 Março de 2004
Movimento de uma Mola
1
2
3
4
5
6
8
Vectores e Matrizes
As linguagens compiladas requerem em geral que as matrizes
sejam declaradas (como o tamanho das várias dimensões) antes
de utilizadas.
Tal não é estritamente necessário em Octave (!) que vai
alocando espaço de memória à medida que novos elementos são
introduzidos. Notar no entanto que:
• Esta flexibilidade tem como custo a maior lentidão de
execução.
• Em execuções sucesivas do mesmo programa, pode-se dar o
caso do vector manter uma dimensão (anterior), maior do que
a pretendida na execução corrente.
30/31 Março de 2004
Movimento de uma Mola
9
Vectores e Matrizes
Desta forma, é conveniente inicializar os vectores utilizados num
programa, sempre que se conheçam as suas dimensões e
tamanho de cada dimensão.
Em Octave, a inicialização pode ser feita através das operações
de “construção” de vectores e matrizes, indicadas através de
parênteses rectos (como indicado atrás)
Em Octave, podem-se ainda inicializar vectores através das
instruções eye, zeros ou ones (que inicializam matrizes
diagonais, ou preenchidas com zeros e uns, respectivamente.
Alguns exemplos:
0
1 0
A = eye(2)
0
0 1
B = zeros(3,1)
0
1
1
1
C = ones (2,3)
1
1
1
30/31 Março de 2004
Movimento de uma Mola
10
Vectores e Matrizes
Um elemento de uma matriz é referido, indicando-se a ordem desse
elemento em cada dimensão. A notação é diferente nas várias
linguagens. Em Octave a referência faz-se com parênteses curvos.
Por exemplo: x = A(2, 1) % = 4
1 2 3
2ª linha,
1ª coluna
4
5
6
O Octave permite endereçar sub-vectores directamente, utilizando o
operador : como identificador de todos os elementos de uma
dimensão. Por exemplo
L1 = A(1 , : )
ou
C2 = A(: , 2 )
2
1
1ª linha,
todas as colunas
30/31 Março de 2004
2
3
Todas as linhas
da 2ª coluna,
Movimento de uma Mola
5
11
Vectores e Matrizes : Ciclos
Para efeito de endereçamento é vulgar utilizar índices (i, j, k, ...)
que indicam a posição nas respectivas dimensões.
Variando estes índices pode variar-se o elemento do vector que é
referido.
É muito frequente pretender-se num programa “varrer” todos os
elementos de um vector, isto é, percorrê-los por ordem crescente
do(s) seu(s) índice(s).
No caso de vectores
unidimensionais, tal
pode ser feito num
único ciclo enquanto
30/31 Março de 2004
i  1;
enquanto i < imax fazer
A(i)  ...
......
i  i + 1;
fim enquanto;
Movimento de uma Mola
12
Ciclos Para
Para evitar a necessidade de inicializar um índice e de ir
procedendo ao seu incremento dentro do ciclo enquanto, todas
as linguagens de programação prevêem um ciclo para que
elimina essa necessidade.
i  1;
enquanto i < imax fazer
A(i)  ...
......
i  i + 1;
fim enquanto;
para i de 1 a imax fazer
A(i)  ...
......
fim para;
Notas:
1. É necessário conhecer imax, o tamanho máximo da dimensão i.
2. Assume-se que o primeiro elemento tem índice 1 (obrigatório em
OCTAVE)
30/31 Março de 2004
Movimento de uma Mola
13
Estrutura do Algoritmo
Estamos agora em condições de especificar o algoritmo para
simulação do movimento de uma mola, que tal como no caso da
queda de corpos pode ser decomposto em 3 “componentes”
1. Inicialização de Variáveis
2. Ciclo de Simulação da Queda
3. Apresentação de Resultados
Entrada
Posição Inicial
“Força” da Mola
Coeficiente deAtrito
Inclinação
Intervalo de Tempo
Número de Iterações
30/31 Março de 2004
Algoritmo de
Movimento de
Uma Mola
Movimento de uma Mola
Resultados
Gráficos para
• Posição da mola
• Velocidade da mola
• Aceleração da mola
14
Constantes e Variáveis Utilizadas
Constantes:
• g = 9.8 a aceleração da gravidade (na Terra)
Variáveis:
•
•
•
•
•
•
•
•
•
•
•
i: variável que indica a iteração corrente
imax: o número máximo de iterações
k1: o coeficiente de força da mola
k2: o coeficiente de atrito
k3: a inclinação da mola
xo: posição inicial do corpo
dt: o valor do intervalo de tempo usado na simulação
T: um vector que regista o tempo registado em cada iteração
X : vector com as posição do corpo em cada iteração
V : vector com a velocidade do corpo em cada iteração
A : vector com a aceleração do corpo em cada iteração
30/31 Março de 2004
Movimento de uma Mola
15
Inicialização de Variáveis
• As variáveis x0, dt, k1, k2 e k3 e imax são numéricas e
devem ser introduzidas pelo utilizador, mantendo-se
constantes após a inicialização.
• Na realidade imax é de tipo inteiro e as outras de tipo real,
mas no Octave não é necessário distinguir os tipos de dados
numéricos.
• Os primeiros elementos dos vectores T, X, V e A - isto é,
T(1), X(1), V(1) e A(1) - são atribuídos antes do ciclo,
• Os restantes elementos dos vectores – isto é, T(i), X(i), V(i) e
A(i), com i  2 .. imax - vão sendo calculados nas
sucessivas iterações do ciclo para.
30/31 Março de 2004
Movimento de uma Mola
16
1. Inicialização de Variáveis
Entra x0;
% Altura inicial
Entra k1;
% Coef. de força da mola
Entra k2;
% Coeficiente de atrito
Entra k3;
% Inclinação da mola
Entra imax;
% Número de iterações
Entra dt;
% Intervalo de tempo
g  9.8; % Aceleração da Gravidade
% T, X, V e são A vectores com imax elementos;
T(1)
X(1)
V(1)
A(1)
30/31 Março de 2004




0;
x0;
0;
- k1 * X(1) - k3 * g;
Movimento de uma Mola
17
2. Ciclo de Simulação
A parte fundamental do algoritmo é o ciclo para de
simulação em que se vão calculando os sucessivos
valores de tempo t, da altura x, da velocidade v e da
aceleração a, em tempos espaçados de um intervalo dt
para i de
T(i) 
X(i) 
V(i) 
A(i) 
fim para;
30/31 Março de 2004
2 até imax fazer
T(i-1) + dt ;
X(i-1) + V(i-1)· dt;
V(i-1) + A(i-1)·dt;
-k1· X(i) - k2· V(i) - k3·g;
Movimento de uma Mola
18
3. Apresentação de Resultados
Os resultados que se pretendem apresentar são a evolução da
posição, da velocidade e da aceleração ao longo do tempo de
simulação.
Em pseudo-código, estes gráficos podem ser representados por
Gráfico(T,X);
Gráfico(T,V);
Gráfico(T,A);
% Posição da Mola
% Velocidade da Mola
% Aceleração da Mola
Que terá de ser particularizado para uma qualquer linguagem
(por exemplo Octave) através das primitivas disponibilizadas
nessa linguagem.
30/31 Março de 2004
Movimento de uma Mola
19
Algoritmo Completo
% Inicialização de Variáveis
Entra x0;
% Altura inicial
Entra k1;
% Coef. de força da mola
Entra k2;
% Coeficiente de atrito
Entra k3;
% Inclinação da mola
Entra imax; % Número de iterações
Entra dt;
% Intervalo de tempo
g  9.8; % Aceleração da Gravidade
T(1)  0; X(1)  x0; V(1)  0;
A(1)  - k1 * X(1) - k3 * g;
% Ciclo de Simulação
para i de 2 até imax fazer
T(i)  T(i-1) + dt ;
X(i)  X(i-1) + V(i-1)· dt;
V(i)  V(i-1) + A(i-1)·dt;
A(i)  -k1· X(i) - k2· V(i) - k3·g;
fim para;
% Apresentação de Resultados
Gráfico(T,X);
% Posição da Mola
Gráfico(T,V);
% Velocidade da Mola
Gráfico(T,A);
% Aceleração da Mola
30/31 Março de 2004
Movimento de uma Mola
20
Programa Octave
x0
= input("Quais são:
a posição inicial (em metros? ");
k1
= input("... o coeficiente de força da mola (1/s2)? ");
k2
= input("
... o coeficiente de atrito (1/s) ? ");
k3
= input("
... e a inclinação da mola (0..1) ? ");
imax = input("
... e o número de iterações (>100) ? ");
dt
= input("
... e o intervalo de tempo (em s) ? ");
g = 9.8;
t=ones(imax,1); x=ones(imax,1); v=ones(imax,1); a=ones(imax,1);
t(1) = 0; x(1) = -x0; v(1) = 0;
a(1) = -k1 * x(1) - k2 * v(1) - k3 * g;
for i = 2:imax
t(i) = t(i-1) + dt;
x(i) = x(i-1) + v(i-1)*dt;
v(i) = v(i-1) + a(i-1)*dt;
a(i) = -k1 * x(i) - k2 * v(i) - k3 * g;
end;
% mostrar gráficos de x, v e a em função de t
30/31 Março de 2004
Movimento de uma Mola
21
Gráficos em Octave
Como se pretende mostrar 3 gráficos, com eixos diferentes, tal pode
ser feito em Octave através da criação de 3 janelas de gráficos, e
usando cada uma para a função pretendida
% mostrar gráficos de x, v e a em função de t
multiplot(1,3);
subwindow(1,1);
xlabel("posição")
plot(t,x);
subwindow(1,2);
xlabel("velocidade")
plot(t,v);
subwindow(1,3);
xlabel("aceleração")
plot(t,a);
30/31 Março de 2004
Movimento de uma Mola
22
Progama Octave
• O programa pode ser testado com vários valores dos
diferentes parâmetros. Por exemplo
Pouco atrito
• x0 = 15, k1 = 3, k2 = 0.5, k3 = 1, dt = 0.01, imax = 1500
Muito atrito
• x0 = 15, k1 = 3, k2 = 3.0, k3 = 1, dt = 0.01, imax = 1000
Nenhum atrito
• x0 = 15, k1 = 3, k2 = 0.0, k3 = 1, dt = 0.01, imax = 1500
• Realçar a importância de dt tomar valores pequenos, de forma
a garantir que erros cometidos pela aproximação das
equações diferenciais não sejam muito significativos (dt  0.1
seg).
• Para valores “grosseiros” de dt (por exemplo, dt >= 0.1), a
mola pode mesmo divergir!
30/31 Março de 2004
Movimento de uma Mola
23
Download

Movimento de uma Mola