31 de março de 2005trajectória de um projéctil - gráficos e funções1 trajectória de...

29
31 de Março de 2005 Trajectória de um Projéctil - Gráficos e Funçõ es 1 Trajectória de Projéctil – Gráficos e Funções Pedro Barahona DI/FCT/UNL Março 2005

Upload: internet

Post on 17-Apr-2015

104 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 1

Trajectória de Projéctil –Gráficos e Funções

Pedro BarahonaDI/FCT/UNL

Março 2005

Page 2: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 2

Trajectória de Projéctil - Bases Físicas

• A trajectória de um projéctil é uma generalização da queda de corpos em que se têm de considerar 2 dimensões para o movimento vertical (y) e horizontal (x) e não apenas vertical.

• Todas as grandezas de interesse para o movimento, posição, velocidade e aceleração, devem pois ser definidas nestas duas dimensões.

• Por exemplo, a velocidade, pode ser decomposta nos suas duas componentes (regra do paralelograo)

vy

vx

v

θv2 = vx

2 + vy2 ; θ = atan(vy/vx)

vx = v cos θ ; vy = v sin θ

Page 3: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 3

Trajectória de Projéctil - Bases Físicas• Na horizontal, só existe uma causa de aceleração, provocada

pelo atrito, que consideramos proporcional, e oposta, à velocidade

ax = - ka vx

• Na vertical, há que considerar a aceleração da gravidade para além da provocada pelo atrito. Temos pois,

ay = - ka vy - g

Condições iniciais• Tipicamente, estamos interessados em determinar a trajectória

de um projéctil quando a este é lançado com uma determinada velocidade inicial v0 num ângulo θ0

Page 4: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 4

Modelação de Equações Diferenciais

Baseado na aproximação de funções por séries de Taylor, vamos simular, df, a variação da função f ao longo de um intervalo de tempo dt, através de

A velocidade do corpo (v) e a posição são assim obtidas nas suas duas dimensões, x e y, já que a aceleração é a velocidade são, respectivamente, as suas derivadas em ordem ao tempo

df = dtdf dt

dvx = dt = ax · dt dvx

dt

dvy = dt = ay · dt dvy

dt

dx = dt = vx · dtdx dt

dy = dt = vy · dtdy dt

Page 5: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 5

Estrutura do Algoritmo

Estamos agora em condições de especificar o algoritmo para simulação da trajectória de um projéctil, que como habitualmente 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 Trajectória de Projéctil

Entrada

Velocidade InicialÂngulo Inicial

Coeficiente deAtritoIntervalo de Tempo

Resultados

• Gráfico da posição

Page 6: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 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: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 7

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 e matrizes numéricos (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] B = [1 2 3 ; 4 5 6].

1 2 31 2 3

4 5 6

Page 8: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 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.

Page 9: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 9

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 1

1 1 1

0

0

0

1 0

0 1

Page 10: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 10

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 3

4 5 6

2

51 2 3

2ª linha,1ª coluna

todas as colunasda 1ª linha

todas as linhasda 2ª coluna

Page 11: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 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).

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 12: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 12

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 13: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 13

1. Inicialização de variáveis• Pretendendo-se determinar a trajectória através das sucessivas

posições (x,y) do projéctil, usamos vectores X e Y para guardar essas posições (em vez de manter apenas as últimas posições). Usaremos e inicializaremos assim as seguintes variáveis

entra v0 % velocidade inicialentra alfa % ângulo inicialentra k % coeficiente de atritoentra dt % passo da simulaçãot 0 % instante de tempo correnteX zeros(1); % coordenada x da posiçãoY zeros(1); % coordenada y da posiçãovx v0·cos(alfa*pi/180);vy v0·sin(alfa*pi/180); % coordenadas x e y da velocidadeax -ka · vx; % coordenada x da aceleraçãoay -ka · vy - g; % coordenada x da eceleração

Page 14: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 14

2/3. Ciclo de Simulação e Resultado• Os valores da posição, velocidade e aceleração vão sendo

calculados nas sucessivas iterações do ciclo de simulação.

• Uma vez obtidas as sucessivas posições do projéctil para os vários instantes no tempo (X(i),Y(i)), a apresentação da trajectória pode ser feita através da instrução plot(X,Y)

i 1; enquanto Y(i) >= 0 ou i =< 1 fazer i i + 1; t t + dt ; X(i) X(i-1) + vx· dt; Y(i) Y(i-1) + vy·dt; vx vx + ax·dt; vy vy + ax·dt; ax -ka · vx; ay -ka · vy - g;fim enquanto;

Page 15: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 15

Trajectória Óptima de Projéctil• Uma vez estudada a forma de cálculo de uma trajectória (com

ou sem gráfico), coloca-se muitas vezes a questão de saber qual a “melhor” de entre elas.

• Naturalmente a noção de melhor tem de ser precisada (maior alcance, maior velocidade no solo, passagem por um ponto, etc.).

• Podemos começar por determinar qual a trajectória com maior alcance.

Trajectória “Óptima”

de Projéctil

Entrada

Velocidade Inicial

Coeficiente de Atrito

Resultados

Alcance Máximo

Page 16: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 16

Trajectória Óptima de Projéctil• A forma mais simples de determinar a melhor trajectória, é

testar as várias possíveis e escolher a melhor.

• Sendo necessário calcular várias trajectórias, é conveniente abstrair todo o cálculo da trajectória numa função, cujos detalhes de implementação podem ser estudados posteriormente.

• Esta forma de proceder, tem muitas vantagens, já que permitem

– Estruturar um programa nos seus componentes básicos

– Reutilizar esses componentes básicos noutros programas

• Vamos pois considerar uma função, alcance, que corresponde ao alcance de um projéctil lançado inicialmente com velocidade vi e ângulo de disparo, alfa, num meio com coeficiente de atrito, ka

alcance(vi, alfa, ka)

Page 17: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 17

Programas e Funções

A utilização desta função torna o programa trivial:

% inicialização de variáveisentra vi;entra Ka;dist 0;

% ciclo de geração e testepara alfa de 0 a 90 fazer x alcance(vi,alfa,ka); % x evita 2 se x > dist então % chamadas de dist x; % alcance! fim se;fim para;

% apresentação de resultadossai dist

se alcance(vi,alfa,ka) > dist então dist alcance(vi,alfa,ka)

Page 18: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 18

Especificação da FunçãoA função que foi abstraída, alcance, deverá determinar, com base na situação inicial (velocidade e ângulo inicial do projéctil), e para um determinado coeficiente de atrito, a distância percorrida, pelo projéctil.

Existe pois uma correspondência óbvia entre funções e programas

A maior diferença está na sua interface com o exterior (entradas e saídas)

Algoritmo de Trajectória de Projéctil

Entrada

Velocidade InicialÂngulo Inicial

Coeficiente deAtrito

Resultados

Distância percorrida

Page 19: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 19

Tipos de Dados da Função Alcance

Os valores iniciais de vi, alfa e ka são dados como parâmetros de entrada da função (dt pode ser fixado).

A partir de vi e alfa, são calculados os valores iniciais das velocidades, vx e vy. Como posição inicial arbitra-se o ponto (0,0).

Se se pretenderem gráficos para a posição (em coordenadas x, y) é conveniente manter as posições por onde passa o projéctil num conjunto de vectores T, X, Y.

Os valores das velocidades e das acelerações ao longo do tempo, não se pretendendo calcular os seus gráficos podem ser representados por variáveis vx e vy, ax e ay que representam os valores correntes destas grandezas.

Page 20: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 20

1. Inicialização de Variáveis

função alcance(vi, alfa, ka) % vi, alfa e ka são dados de entrada % alcance é o valor final

dt 0.01; % Intervalo de tempog 9.8; % Aceleração da Gravidade% inicializar vectores T,X,Y;

T(1) 0; X(1) 0; % valores iniciais de T, X e YY(1) 0;

vx vi*cos(alfa); % valores correntes de vx e vy vy vi*sin(alfa); % inicializados com viax -ka · vx ; % valores correntes de ax e ay ay -ka · vy - g; % inicializados com vs iniciais

Page 21: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 21

3. Apresentação de Resultados

• O resultado que se pretende apresentar é o alcance do projéctil.

• Como a função está definida com o nome alcance, deverá ser atribuído a uma “variável” com esse nome o valor final de x, que representa o alcance do projéctil.

alcance X(i)

• Na realidade, não existe nenhuma variável com esse nome (a variável existe no programa que chama a função). A atribuição acima é apenas a forma de apresentar o resultado.

Page 22: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 22

Algoritmo Completo – Programa Principal

% Inicialização de Variáveis

entra vi; entra Ka; dist 0;

% Ciclo de Geração e Testepara alfa de 0 a 90 fazer x alcance (vi,alfa,ka); se x > dist então dist x; fim se;fim para;

% Apresentação de Resultadossai dist

Page 23: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 23

Algoritmo Completo – Função Alcance

função alcance(vi, alfa, ka) dt 0.01; g 9.8; T(1) 0; X(1) 0; Y(1) 0; vx v*cos(alfa); vx v*sin(alfa); ax 0 ; ay -g; i 1; enquanto Y(i) >= 0 fazer i i + 1; T(i) T(i-1) + dt ; X(i) X(i-1) + vx· dt; Y(i) Y(i-1) + vy·dt; vx vx + ax·dt; vy vx + ax·dt; ax -ka · vx; ay -ka · vy - g; fim enquanto; alcance X(i);fim função;

Page 24: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 24

Programa Octave

• Em Octave, o programa e a função são muito semelhantes aos apresentados em pseudo-código.

• No entanto eles devem ser escritos em dois ficheiros m (“m files”) distintos, que devem residir na mesma directoria (a menos que se utilizem instruções de alteração da directoria corrente).

• O nome do ficheiro onde uma função é definida deve ter o nome dessa função.

• Por exemplo, a função alcance deverá ser definida num ficheiro com o nome “alcance.m”.

• De notar que a função pode ser invocada a partir de qualquer ficheiro e mesmo do terminal.

Page 25: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 25

Programa Octave

vi = input("Qual a velocidade inicial (em m/s) ? ");ka = input(" e o coeficiente de atrito (1/s) ? ");

dist = 0; for alfa = 0:90 x = alcance(vi,alfa,ka); if x > dist dist = x; end; end; disp(" O alcance máximo (em metros) é de "), disp(dist)

O programa principal, maior_alcance, guardado no ficheiro “maior_alcance.m” chama a função alcance.

Page 26: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 26

Função Octave

function a = alcance(vi, alfa, ka) dt = 0.01; g = 9.8 ; i = 1; T = eye(1); X = eye(1); Y = eye(1); T(1) = 0; X(1) = 0; Y(1) = 0; vx = vi*cos(alfa*pi/180) ; vy = vi*sin(alfa*pi/180); ax = - ka * vx ; ay = -g - ka * vy; while Y(i) >= 0 i = i + 1 ; T(i) = T(i-1) + dt; X(i) = X(i-1) + vx * dt; Y(i) = Y(i-1) + vy * dt; vx = vx + ax * dt ; vy = vy + ay * dt; ax = 0 - ka * vx ; ay = -g - ka * vy; endwhile; a = X(i);endfunction;

A função alcance é guardada no ficheiro “alcance.m”, que começa com a declaração de função.

Page 27: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 27

Programa Octave

• O programa pode ser testado com vários valores para os diferentes parâmetros. Por exemplo

Nenhum atrito• vi = 30; ka = 0.0

Pouco atrito• vi = 30; ka = 0.2

Muito atrito• vi = 30; ka = 2.0

• De notar que embora se saiba o alcance máximo, o programa apresentado não nos indica para que ângulo de disparo ele é atingido. Para esse efeito basta reformular um pouco o programa, para nos devolver esse ângulo.

Page 28: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 28

Programa Octavevi = input("Qual a velocidade inicial (em m/s) ? ");ka = input(" e o coeficiente de atrito (1/s) ? ");

dist = 0; angulo = 0; for alfa = 0:90 x = alcance(vi,alfa,ka); if x > dist dist = x; angulo = alfa; end; end;disp(" O alcance máximo (em metros) é de "), disp(dist)disp(" com um disparo num ângulo (graus) de "),disp(angulo)

Page 29: 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

31 de Março de 2005

Trajectória de um Projéctil - Gráficos e Funções 29

Programa Octave

• No entanto, existem várias características da trajectória que ficaram abstraídas na computação da função e que não são acessíveis ao utilizador, tais como:

– A altura atingida pelo projéctil

– O tempo que demora a atingir essa altura

– O tempo total da trajectória

– A velocidade com que o projéctil atingiu o solo

– A aceleração com que o projéctil atingiu o solo,

– ...

• Para obter essas características há que reformular um pouco a função e permitir que ela “devolva” mais do que um valor.