A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004."— Transcrição da apresentação:

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

2 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.

3 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 a 1 = - k 1  x A aceleração provocada pelo atrito, pode ser expressa por a 2 = - k 2  v A aceleração da gravidade (g = -9.8ms -2 ), afectada por um factor que reflecte a inclinação (p.ex., k 3 = 0 para movimento horizontal) a 3 = - k 3  g Considerando todos estes componentes temos a = - k 1  x - k 2  v - k 3  g 0xx1 F 1 < 0F 2 > 0 |F 2 | < |F1 |

4 30/31 Março de 2004 Movimento de uma Mola 4 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 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  dt df dt dx  dt = v · dt dx dt dv  dt = a · dt dv dt

5 30/31 Março de 2004 Movimento de uma Mola 5 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. Algoritmo de Movimento de Uma Mola Entrada Posição Inicial “Força” da Mola Coeficiente deAtrito Inclinação Intervalo de Tempo Tempo de Simulação Resultados Gráficos para Posição da mola Velocidade da mola Aceleração da mola

6 30/31 Março de 2004 Movimento de uma Mola 6 Gráficos Em 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.

7 30/31 Março de 2004 Movimento de uma Mola 7 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

8 30/31 Março de 2004 Movimento de uma Mola 8 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). Por exemplo, A = [ 1, 2, 3] ou B = [ 1 2 3 ; 4 5 6].

9 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.

10 30/31 Março de 2004 Movimento de uma Mola 10 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: A = eye(2) B = zeros(3,1) C = ones (2,3) 111 111 0 0 0 10 01

11 30/31 Março de 2004 Movimento de uma Mola 11 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 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 ) 123 456 2 5 123 2ª linha, 1ª coluna 1ª linha, todas as colunas Todas as linhas da 2ª coluna,

12 30/31 Março de 2004 Movimento de uma Mola 12 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). 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

13 30/31 Março de 2004 Movimento de uma Mola 13 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)

14 30/31 Março de 2004 Movimento de uma Mola 14 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 Algoritmo de Movimento de Uma Mola Entrada Posição Inicial “Força” da Mola Coeficiente deAtrito Inclinação Intervalo de Tempo Número de Iterações Resultados Gráficos para Posição da mola Velocidade da mola Aceleração da mola

15 30/31 Março de 2004 Movimento de uma Mola 15 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

16 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.

17 30/31 Março de 2004 Movimento de uma Mola 17 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)  0; X(1)  x0; V(1)  0; A(1)  - k1 * X(1) - k3 * g;

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

19 30/31 Março de 2004 Movimento de uma Mola 19 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 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 Mola Gráfico(T,V);% Velocidade da Mola Gráfico(T,A);% Aceleração da Mola

20 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

21 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

22 30/31 Março de 2004 Movimento de uma Mola 22 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);

23 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 x 0 = 15, k 1 = 3, k 2 = 0.5, k 3 = 1, dt = 0.01, imax = 1500 Muito atrito x 0 = 15, k 1 = 3, k 2 = 3.0, k 3 = 1, dt = 0.01, imax = 1000 Nenhum atrito x 0 = 15, k 1 = 3, k 2 = 0.0, k 3 = 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!


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

Apresentações semelhantes


Anúncios Google