26
1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

Embed Size (px)

Citation preview

Page 1: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

1

Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II

DI/FCT/UNL

1º Semestre 2004/2005

Page 2: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

2

Simulação da Queda de Corpos IIDada uma altura inicial, um coeficiente de resistência do ar e uma dada precisão do intervalo de tempo, mostrar a evolução da posição, velocidade e aceleração do objecto durante o tempo da queda.

Algoritmo de Queda

de Corpos

Entrada

Resistência do ArAltura Inicial

Intervalo de Tempo

Resultados

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

Page 3: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

3

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 4: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

4

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

As restantes variáveis dt, k e g são do tipo real e mantêm-se constantes ao longo do problema, uma vez inicializadas.

Page 5: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

5

Vectores e Matrizes

Todas as linguagens de programação de alto nível permitem a especificação de estruturas para agrupar dados do mesmo tipo.

Em Octave apenas se podem utilizar, como “primitivas”, estruturas uni-dimensionais (Vectores) e bi-dimensionais (Matrizes).

Em geral, os dados destas estruturas estão organizados em uma ou mais dimensões.

Por exemplo:

1 2 3A = [ 1, 2, 3]

1 2 3

4 5 6B = [ 1 2 3 ; 4 5 6]

Page 6: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

6

As linguagens compiladas requerem em geral que os vectores e as matrizes sejam declarados antes de utilizados (definindo o tamanho das várias dimensões).

Vectores e Matrizes

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 sucessivas do mesmo programa, pode-se dar o caso da estrutura manter uma dimensão (anterior), maior do que a pretendida na execução corrente.

Page 7: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

7

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.

1 1 1

1 1 1

0

0

0

1 0

0 1

Em Octave, a inicialização pode ser feita por operações de “construção” de vectores e matrizes, indicadas através de parênteses rectos.

Em Octave, podem-se ainda inicializar vectores através das instruções eye, zeros ou ones que inicializam matrizes identidade, ou preenchidas com zeros e uns, respectivamente.Alguns exemplos:

A = eye(2)

B = zeros(3,1)

C = ones (2,3)

Page 8: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

8

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

4 5 6

2

51 2 3

2ª linha,1ª coluna

1ª linha,todas as colunas

Todas as linhasda 2ª coluna,

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 )

Page 9: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

9

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 10: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

10

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 11: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

11

Estrutura do Algoritmo

Estamos agora em condições de especificar as alterações ao algoritmo para simulação da queda dos corpos com a apresentação da posição, velocidade e aceleração durante a queda.

Vamos novamente considerar cada uma das seguintes componentes separadamente:

1. Inicialização de Variáveis

2. Ciclo de Simulação da Queda

3. Apresentação de Resultados

Page 12: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

12

Constantes e Variáveis Utilizadas

Constantes:• g = 9.8 a aceleração da gravidade (na Terra)

Variáveis:• x0: a altura inicial do corpo• k: o coeficiente de resistência do ar• dt: o valor do intervalo de tempo usado na simulação• i: variável que indica a iteração corrente• T: vector que regista o tempo em cada iteração• X : vector com a altura 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 13: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

13

Inicialização de VariáveisAs variáveis têm que ser inicializadas e as constantes definidas antes de poderem ser referidas em expressões.

• g: aceleração da gravidade • x0: a altura inicial do corpo• k: o coeficiente de resistência do ar• dt: intervalo de tempo usado na simulação• i: variável que indica a iteração corrente• T: vector com o tempo em cada iteração• X: vector com a altura em cada iteração• V: vector com a velocidade em cada iteração• A: vector com a aceleração em cada iteração

A constante que representa a aceleração da gravidade deve ser definida com o respectivo valor.

g 9.8;

Page 14: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

14

Inicialização de VariáveisAs variáveis têm que ser inicializadas e as constantes definidas antes de poderem ser referidas em expressões.

• g: aceleração da gravidade • x0: a altura inicial do corpo• k: o coeficiente de resistência do ar• dt: intervalo de tempo usado na simulação • i: variável que indica a iteração corrente• T: vector com o tempo em cada iteração• X: vector com a altura em cada iteração• V: vector com a velocidade em cada iteração• A: vector com a aceleração em cada iteração

Quer a altura inicial, quer o valor do coeficiente da resistência do ar, quer o intervalo de tempo utilizados, devem ser especificados pelo utilizador através de instruções de entrada.

g 9.8; entra x0; entra k;entra dt;

Page 15: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

15

Inicialização de VariáveisAs variáveis têm que ser inicializadas e as constantes definidas antes de poderem ser referidas em expressões.

• g: aceleração da gravidade • x0: a altura inicial do corpo• k: o coeficiente de resistência do ar• dt: intervalo de tempo usado na simulação • i: variável que indica a iteração corrente• T: vector com o tempo em cada iteração• X: vector com a altura em cada iteração• V: vector com a velocidade em cada iteração• A: vector com a aceleração em cada iteração

A variável que indica a iteração corrente é inicializada com o valor 1 representando a primeira iteração.

g 9.8; entra x0; entra k;entra dt;i 1;

Page 16: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

16

Inicialização de VariáveisAs variáveis têm que ser inicializadas e as constantes definidas antes de poderem ser referidas em expressões.

• g: aceleração da gravidade • x0: a altura inicial do corpo• k: o coeficiente de resistência do ar• dt: intervalo de tempo usado na simulação • i: variável que indica a iteração corrente• T: vector com o tempo em cada iteração• X: vector com a altura em cada iteração• V: vector com a velocidade em cada iteração• A: vector com a aceleração em cada iteração

Assumindo que a queda começa na origem do tempo, da altura x0 e a partir de repouso, os valores do primeiro elemento dos vectores T, X e V deverão ser 0, x0 e 0 respectivamente.

g 9.8; entra x0; entra k;entra dt;i 1;T(i) 0; X(i) x0; V(i) 0;

Page 17: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

17

Inicialização de VariáveisAs variáveis têm que ser inicializadas e as constantes definidas antes de poderem ser referidas em expressões.

• g: aceleração da gravidade • x0: a altura inicial do corpo• k: o coeficiente de resistência do ar• dt: intervalo de tempo usado na simulação • i: variável que indica a iteração corrente• T: vector com o tempo em cada iteração• X: vector com a altura em cada iteração• V: vector com a velocidade em cada iteração• A: vector com a aceleração em cada iteração

A aceleração inicial pode ser calculada de acordo com a respectiva fórmula.

g 9.8; entra x0; entra k;entra dt;i 1;T(i) 0; X(i) x0; V(i) 0;A(i) -g-kV(i)

Page 18: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

18

Inicialização de Variáveis• As variáveis x0, dt e k são numéricas e devem ser

introduzidas pelo utilizador, mantendo-se constantes após a inicialização.

• A variável i é 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 inicializados antes do ciclo,

• Os restantes elementos dos vectores – isto é, T(i), X(i), V(i) e A(i), com i 2, 3 ... – vão sendo calculados nas sucessivas iterações do ciclo Para.

Page 19: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

19

Inicialização de Variáveis

• 1. Inicialização de Variáveis

g 9.8; % Aceleração da Gravidadeentra x0; % Altura inicial entra k; % Coeficiente de Atrito entra dt; % Intervalo de Tempoi 1; % Primeira iteraçãoT(i) 0; % Tempo inicialX(i) x0; % Altura inicialV(i) 0; % Velocidade inicialA(i) -g-kV(i); % Aceleração inicial

Page 20: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

20

Ciclo de Simulação

A parte fundamental do algoritmo é o ciclo de simulação em que se vão calculando os sucessivos valores de tempo, da altura, da velocidade e da aceleração, em tempos espaçados de um intervalo dt.

enquanto x > 0 fazer t t + dt ; x x + v dt ; % x(t+dt) x(t) + v(t) dt v v + a dt ; % v(t+dt) v(t) + a(t) dt a -g - k v ; % a(t+dt) = - g - k v(t+dt)fim enquanto

No problema anterior, em que não era necessário guardar os valores intermédios, tinhamos:

Page 21: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

21

Ciclo de Simulação

A parte fundamental do algoritmo é o ciclo de simulação em que se vão calculando os sucessivos valores de tempo, da altura, da velocidade e da aceleração, em tempos espaçados de um intervalo dt.

enquanto X(i) > 0 fazer i i + 1; T(i) T(i-1) + dt; X(i) X(i-1) + V(i-1)dt; % x(t+dt) x(t) + v(t) dt V(i) V(i-1) + A(i-1)dt; % v(t+dt) v(t) + a(t) dt A(i) -g - k V(i); % a(t+dt) = - g - k v(t+dt)fim enquanto

Agora temos que guardar os valores de cada iteração nos vectores T, X, V e A:

Page 22: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

22

• 2. Ciclo de Simulação

Ciclo de Simulação

enquanto X(i) > 0 fazer i i + 1; T(i) T(i-1) + dt; X(i) X(i-1) + V(i-1)dt; % x(t+dt) x(t) + v(t) dt V(i) V(i-1) + A(i-1)dt; % v(t+dt) v(t) + a(t) dt A(i) -g - k V(i); % a(t+dt) = - g - k v(t+dt)fim enquanto

Page 23: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

23

Apresentação de ResultadosOs resultados que se pretendem apresentar são a evolução da altura, da velocidade e da aceleração ao longo do tempo de queda.

Gráfico(T,X); % Altura do ObjectoGráfico(T,V); % Velocidade do ObjectoGráfico(T,A); % Aceleração do Objecto

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.

Page 24: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

24

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

multiplot(1,3);

subwindow(1,1); xlabel(“Altura"); plot(T,X);

subwindow(1,2); xlabel(“Velocidade"); plot(T,V);

subwindow(1,3); xlabel(“Aceleração"); plot(T,A);

Page 25: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

25

Algoritmo CompletoIn

icia

liza

ção

de

Var

iáve

isC

iclo

de

Sim

ula

ção

Res

ult

ados Gráfico(T,X); % Altura do ObjectoGráfico(T,V); % Velocidade do ObjectoGráfico(T,A); % Aceleração do Objecto

enquanto X(i) > 0 fazer i i + 1; T(i) T(i-1) + dt; X(i) X(i-1) + V(i-1)dt; % x(t+dt) x(t) + v(t) dt V(i) V(i-1) + A(i-1)dt; % v(t+dt) v(t) + a(t) dt A(i) -g - k V(i); % a(t+dt) = - g - k v(t+dt)fim enquanto

g 9.8; % Aceleração da Gravidadeentra x0; % Altura inicial entra k; % Coeficiente de Atrito entra dt; % Intervalo de Tempoi 1; % Primeira iteraçãoT(i) 0; % Tempo inicialX(i) x0; % Altura inicialV(i) 0; % Velocidade inicialA(i) -g-kV(i); % Aceleração inicial

Page 26: 1 Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II DI/FCT/UNL 1º Semestre 2004/2005

26

Programa Octaveg = 9.8; x0 = input(" Qual a altura inicial (em metros) ? ");k = input(" e o coeficiente de atrito (1/s) ? ");dt = input(" e o intervalo de tempo (em segs) ? ");i = 1;T=zeros(1,1); X=zeros(1,1); V=zeros(1,1); A=zeros(1,1);T(i) = 0;X(i) = x0;V(i) = 0;A(i) = - g - k * V(i); while (X(i) > 0) i = i + 1; 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) = -g - k*V(i);endwhile;multiplot(1,3);subwindow(1,1); xlabel("Altura");plot(T,X);subwindow(1,2); xlabel("Velocidade"); plot(T,V);subwindow(1,3); xlabel("Aceleração"); plot(T,A);