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

Slides:



Advertisements
Apresentações semelhantes
Movimento em I dimensão
Advertisements

Programação em Java Prof. Maurício Braga
03/08/2011 Professor Leomir J. Borba- –
Aula 5 – Sumário Revisão da aula anterior Endereçamento indirecto
Movimento rectilíneo uniforme  MRU
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 4.
9 de Março de 2006Trajectória de um Projéctil1 Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2005/2006.
Algoritmos de Ordenação Aplicação a Listas de Registos
Integração Numérica – Áreas e Equações
16 Março 2006Vectores, Gráficos e Funções - Trajectória de um Projéctil1 Vectores, Gráficos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 3.
Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 11.
6 Outubro de 2005Trajectória de um Projéctil1 Jorge Cruz DI/FCT/UNL Introdução aos Computadores e à Programação 1º Semestre 2005/2006.
2 Dezembro de 2005Simulação com Modelos Diferenciais1 Jorge Cruz DI/FCT/UNL Programação para as Ciências Experimentais 1º Semestre 2005/2006.
Vectores e Matrizes Aplicações à Engenharia
Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009.
1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005.
1 Folha de Cálculo DI/FCT/UNL 1º Semestre 2004/2005.
24 Novembro 2006Folha de Cálculo 11 Jorge Cruz DI/FCT/UNL Introdução aos Computadores e à Programação 1º Semestre 2006/2007.
7 de Março de 2006 Introdução (Informal) à Programação 1 Pedro Barahona DI/FCT/UNL Programação para as Ciências Experimentais 2º Semestre 2005/2006.
Recursividade e Iteração Factorial, Fibonacci e Maior Divisor Comum
Introdução (Informal) à Programação
31 de Março de 2005Trajectória de um Projéctil - Gráficos e Funções1 Trajectória de Projéctil –Gráficos e Funções Pedro Barahona DI/FCT/UNL Março 2005.
Vectores, Gráficos e Funções Trajectória de um Projéctil
1 Funções, Expressões e Excepções Trajectórias Óptimas DI/FCT/UNL 1º Semestre 2004/2005.
Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2007/2008.
9 Março 2007Matrizes e Gráficos - Trajectória de um Projéctil1 Matrizes e Gráficos Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores.
Integração Numérica: Equações Diferenciais
Introdução aos Computadores e à Programação
1 Introdução (Informal) à Programação DI/FCT/UNL 1º Semestre 2004/2005.
Introdução (Informal) à Programação
16 Dezembro 2005Folha de Cálculo - Conclusão1 Folha da Cálculo - Conclusão Jorge Cruz DI/FCT/UNL Programação para as Ciências Experimentais 1º Semestre.
2 de Junho de 2005Conclusão1 Pedro Barahona DI/FCT/UNL Junho 2005.
5 Março 2007Ciclos e Funções - Trajectória de um Projéctil1 Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores.
Introdução aos Computadores e à Programação DI-FCT-UNL-2006/2007 Sistemas de Equações e Gráficos 2.1 Octave Sistemas de Equações e Gráficos.
Matrizes e Gráficos Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 1º Semestre 2007/2008.
1 Conclusão DI/FCT/UNL 1º Semestre 2004/ Ciclos de Simulação A técnica usada no exemplo da queda livre pode ser utilizada para trajectórias a duas.
Introdução aos Computadores e à Programação
Matrizes e Gráficos Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009.
Vetores Representação e características Operações I Decomposição
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes
Modelos no Domínio do Tempo de Sistemas LTI Contínuos
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Programação Baseada em Objectos Desenho de TAD
Apontadores ou Ponteiros
MOVIMENTO (2) Prof. Cesário.
Aula prática 6 Vetores e Matrizes
Linguagem de Programação II Parte IX
Graficamente temos Espaço variável Velocidade constante
Aula 02 Variáveis, Matrizes, Gráficos
Salas de Matemática.
Estrutura de dados, pseudocódigo
Movimentos sob a acção de uma força resultante constante
Movimento de um projétil Componentes da velocidade inicial
Aula prática 6 Vetores e Matrizes
Cinemática de uma Partícula Cap. 12
20/21 Abril de 2004Funções, Expressões e Excepções1 Pedro Barahona DI/FCT/UNL Abril 2004.
Fundamentos de Programação
Vetores e Matrizes Ameliara Freire
MOVIMENTO EM UMA LINHA RETA
Resolução de sistemas de equações lineares
Campus de Caraguatatuba Licenciatura em Matemática Semestre de 2013
Introdução aos Computadores e Programação DI-FCT-UNL-2003/2004
23/24 Março de 2004Simulação da Queda de Corpos1 Pedro Barahona DI/FCT/UNL Março 2004.
1 Simulação da Queda de Corpos DI/FCT/UNL 1º Semestre 2004/2005.
17 Março de 2005Simulação da Queda de Corpos1 Pedro Barahona DI/FCT/UNL Março 2004.
Exemplo 7. Encontre a velocidade instantânea da partícula descrita na Figura 1 nos seguintes instantes: (a) t = 1.0 s, (b) t = 3.0 s, (c) t= 4.5 s, e (d)
30/31 Março de 2004Movimento de uma Mola1 Pedro Barahona DI/FCT/UNL Março 2004.
13/14 Abril de 2004Trajectória de um Projéctil1 Trajectória de Projéctil - Funções Pedro Barahona DI/FCT/UNL Março 2004.
Transcrição da apresentação:

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

Simulação da Queda de Corpos II Dada 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 Ar Altura Inicial Intervalo de Tempo Resultados Gráficos para Posição Velocidade Aceleração

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.

Tipos de Dados 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 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.

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 geral, os dados destas estruturas estão organizados em uma ou mais dimensões. Em Octave apenas se podem utilizar, como “primitivas”, estruturas uni-dimensionais (Vectores) e bi-dimensionais (Matrizes). Por exemplo: A = [ 1, 2, 3] B = [ 1 2 3 ; 4 5 6]

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

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 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) 1 1

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ª linha, 1ª 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 ) 2 5 1 2 3 1ª linha, todas as colunas Todas as linhas da 2ª coluna,

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

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. para i de 1 a imax fazer A(i)  ... ...... fim para; i  1; enquanto i < imax fazer A(i)  ... ...... i  i + 1; fim enquanto; Notas: É necessário conhecer imax, o tamanho máximo da dimensão i. Assume-se que o primeiro elemento tem índice 1 (obrigatório em OCTAVE)

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

Constantes e Variáveis Utilizadas 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

Inicialização de Variáveis As variáveis têm que ser inicializadas e as constantes definidas antes de poderem ser referidas em expressões. A constante que representa a aceleração da gravidade deve ser definida com o respectivo valor. g  9.8; 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

Inicialização de Variáveis As 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 g  9.8; entra x0; entra k; entra dt; 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.

Inicialização de Variáveis As 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 g  9.8; entra x0; entra k; entra dt; i  1; A variável que indica a iteração corrente é inicializada com o valor 1 representando a primeira iteração.

Inicialização de Variáveis As 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 g  9.8; entra x0; entra k; entra dt; i  1; T(i)  0; X(i)  x0; V(i)  0; 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.

Inicialização de Variáveis As 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 g  9.8; entra x0; entra k; entra dt; i  1; T(i)  0; X(i)  x0; V(i)  0; A(i)  -g-kV(i) A aceleração inicial pode ser calculada de acordo com a respectiva fórmula.

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.

Inicialização de Variáveis g  9.8; % Aceleração da Gravidade entra x0; % Altura inicial entra k; % Coeficiente de Atrito entra dt; % Intervalo de Tempo i  1; % Primeira iteração T(i)  0; % Tempo inicial X(i)  x0; % Altura inicial V(i)  0; % Velocidade inicial A(i)  -g-kV(i); % Aceleração inicial

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:

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. Agora temos que guardar os valores de cada iteração nos vectores T, X, V e A: 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

Ciclo de Simulação 2. 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

Apresentação de Resultados Os 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 Objecto Gráfico(T,V); % Velocidade do Objecto Grá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.

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

Algoritmo Completo g  9.8; % Aceleração da Gravidade entra x0; % Altura inicial entra k; % Coeficiente de Atrito entra dt; % Intervalo de Tempo i  1; % Primeira iteração T(i)  0; % Tempo inicial X(i)  x0; % Altura inicial V(i)  0; % Velocidade inicial A(i)  -g-kV(i); % Aceleração inicial Inicialização de Variáveis 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 Ciclo de Simulação Gráfico(T,X); % Altura do Objecto Gráfico(T,V); % Velocidade do Objecto Gráfico(T,A); % Aceleração do Objecto Resultados

Programa Octave g = 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);