23
30/31 Março de 2004 Movimento de uma Mola 1 Movimento de uma Mola Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

Embed Size (px)

Citation preview

Page 1: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004 Movimento de uma Mola 1

Movimento de uma Mola

Pedro BarahonaDI/FCT/UNLMarço 2004

Page 2: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 2

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.

Page 3: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 3

Molas - Bases Físicas

• 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

0 xx1

F1 < 0F2 > 0

|F2 | < |F1 |

Page 4: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 4

Modelação de Equações DiferenciaisBaseado 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) + dfSendo 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

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

df dtdf dt

dx dt = v · dtdx dtdv dt = a · dt

dv dt

Page 5: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 5

Especificação do ProblemaCom 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.

Algoritmo de Movimento de

Uma Mola

Entrada

Posição Inicial“Força” da Mola

Coeficiente deAtritoInclinação

Intervalo de TempoTempo de Simulação

Resultados

Gráficos para• Posição da mola• Velocidade da mola• Aceleração da mola

Page 6: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 6

GráficosEm Octave a forma mais simples de desenhar um gráfico da função f(x) é utilizar a função pre-definida 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.

0.00

0.20

0.40

0.60

0.80

1.00

0.00 0.10 0.20 0.30 0.40 0.50 0.60 0.70 0.80 0.90 1.00

X

F

i 1 2 3 4 5 6 7 8 9 10 11X 0.00 0.10 0.20 0.30 0.40 0.50 0.60 0.70 0.80 0.90 1.00F 0.00 0.00 0.01 0.03 0.06 0.13 0.22 0.34 0.51 0.73 1.00

Page 7: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 7

Tipos de DadosAs 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

Page 8: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 8

Vectores e MatrizesTodas 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). Por exemplo, A = [ 1, 2, 3] ou B = [ 1 2 3 ; 4 5 6].

1 2 3

1 2 34 5 6

Page 9: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 9

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.

Page 10: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 10

Vectores e MatrizesDesta 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: A = eye(2) B = zeros(3,1) C = ones (2,3)

1 1 11 1 1

000

1 00 1

Page 11: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 11

Vectores e MatrizesUm 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

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 )

1 2 34 5 6

25

1 2 3

2ª linha,1ª coluna

1ª linha,todas as colunas

Todas as linhasda 2ª coluna,

Page 12: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 12

Vectores e Matrizes : CiclosPara 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).

i 1;enquanto i < imax fazer A(i) ... ...... i i + 1;fim enquanto;

No caso de vectores unidimensionais, tal pode ser feito num único ciclo enquanto

Page 13: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 13

Ciclos ParaPara 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)

Page 14: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 14

Estrutura do AlgoritmoEstamos 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áveis2. Ciclo de Simulação da Queda3. Apresentação de Resultados

Algoritmo de Movimento de

Uma Mola

Entrada

Posição Inicial“Força” da Mola

Coeficiente deAtritoInclinação

Intervalo de TempoNúmero de Iterações

Resultados

Gráficos para• Posição da mola• Velocidade da mola• Aceleração da mola

Page 15: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 15

Constantes e Variáveis UtilizadasConstantes:

• 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

Page 16: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 16

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.

Page 17: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 17

1. Inicialização de VariáveisEntra x0; % Altura inicialEntra k1; % Coef. de força da molaEntra k2; % Coeficiente de atritoEntra k3; % Inclinação da molaEntra imax; % Número de iteraçõesEntra dt; % Intervalo de tempog 9.8; % Aceleração da Gravidade% T, X, V e são A vectores com imax elementos;T(1) 0; X(1) x0; V(1) 0; A(1) - k1 * X(1) - k3 * g;

Page 18: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 18

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 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;

Page 19: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 19

3. Apresentação de ResultadosOs 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

Que terá de ser particularizado para uma qualquer linguagem (por exemplo Octave) através das primitivas disponibilizadas nessa linguagem.

Gráfico(T,X); % Posição da MolaGráfico(T,V); % Velocidade da MolaGráfico(T,A); % Aceleração da Mola

Page 20: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 20

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

Page 21: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 21

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

Page 22: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 22

Gráficos em OctaveComo 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);

Page 23: 30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004

30/31 Março de 2004

Movimento de uma Mola 23

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!