1 funções trajectória de projéctil di/fct/unl 1º semestre 2004/2005
TRANSCRIPT
![Page 1: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/1.jpg)
1
Funções Trajectória de Projéctil
DI/FCT/UNL
1º Semestre 2004/2005
![Page 2: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/2.jpg)
2
Trajectória Óptima de Projéctil• O cálculo de uma trajectória pode ser feito por simulação de
forma semelhante à da queda de um corpo (será visto mais à frente).
• Podendo-se calcular várias trajectórias, 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, mais alta???).
• Vamos 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 3: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/3.jpg)
3
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 permite:
– 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 4: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/4.jpg)
4
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 5: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/5.jpg)
5
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
Algoritmo de Trajectória de Projéctil
Entrada
Velocidade InicialÂngulo Inicial
Coeficiente deAtrito
Resultados
Distância percorrida
![Page 6: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/6.jpg)
6
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. Caso contrário serão representados por variáveis t, x e y respectivamente.
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 7: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/7.jpg)
7
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 nas suas duas componentes (regra do paralelograo)
vy
vx
v
θv2 = vx
2 + vy2 ; Θ = atan(vy/vx)
vx = v cos Θ ; vy = v sin Θ
![Page 8: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/8.jpg)
8
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, como na queda dos corpos:
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 vi num ângulo θ0
![Page 9: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/9.jpg)
9
Aceleração, Velocidade e Posição
Tal como no problema da queda dos corpos, podemos considerar as seguintes aproximações (em cada uma das dimensões):
x(t+dt) x(t) + vx(t) dt y(t+dt) y(t) + vy(t) dt
vx(t+dt) vx(t) + ax(t) dt vy(t+dt) vy(t) + ay(t) dt
sendo a aceleração do projéctil dada por:
ax = - ka vx ay = - ka vy - g
![Page 10: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/10.jpg)
10
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 deAtrito
Resultados
Distância percorrida
![Page 11: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/11.jpg)
11
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
alfa alfa*2/360; % Ângulo em Radianosdt 0.01; % Intervalo de tempog 9.8; % Aceleração da Gravidadet 0; % Valor iniciais do tempox 0; % Valor iniciais do xy 0; % Valor iniciais do yvx vicos(alfa); % valores correntes de vx e vy vy visin(alfa); % inicializados com viax -kavx ; % valores correntes de ax e ay ay -kavy - g; % inicializados com vs iniciais
![Page 12: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/12.jpg)
12
2. Ciclo de Simulação
• Os valores da posição, velocidade e aceleração vão sendo calculados nas sucessivas iterações do ciclo de simulação.
enquanto y >= 0 fazer t t + dt; x x + vxdt; y y + vydt; vx vx + axdt; vy vy + aydt; ax -kavx; ay -kavy - g;fim enquanto;
![Page 13: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/13.jpg)
13
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
• 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 14: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/14.jpg)
14
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 15: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/15.jpg)
15
Algoritmo Completo – Função Alcancefunção alcance(vi, alfa, ka) alfa alfa*2/360; % Ângulo em Radianos dt 0.01; % Intervalo de tempo g 9.8; % Aceleração da Gravidade t 0; x 0; y 0; % Valores iniciais de t, x e y vx vicos(alfa); % Valores correntes de vx e vy vy visin(alfa); % inicializados com vi ax -kavx ; % valores correntes de ax e ay ay -kavy - g; % inicializados com vs iniciais
enquanto y >= 0 fazer t t + dt; x x + vxdt; y y + vydt; vx vx + axdt; vy vy + aydt; ax -kavx; ay -kavy - g; fim enquanto; alcance x;fim função;
![Page 16: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/16.jpg)
16
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 17: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/17.jpg)
17
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; endif;endfor; 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 18: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/18.jpg)
18
Função Octave
function a = alcance(vi, alfa, ka) dt = 0.01; g = 9.8 ; t = 0; x = 0; y = 0; vx = vi*cos(alfa*pi/180) ; vy = vi*sin(alfa*pi/180); ax = - ka * vx ; ay = -g - ka * vy; while y >= 0 t = t + dt; x = x + vx * dt ; y = y + vy * dt; vx = vx + ax * dt ; vy = vy + ay * dt; ax = - ka * vx ; ay = -g - ka * vy; endwhile; a = x;endfunction;
A função alcance é guardada no ficheiro “alcance.m”, que começa com a declaração de função.
![Page 19: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/19.jpg)
19
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 20: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/20.jpg)
20
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 21: 1 Funções Trajectória de Projéctil DI/FCT/UNL 1º Semestre 2004/2005](https://reader035.vdocuments.mx/reader035/viewer/2022062318/552fc102497959413d8bddeb/html5/thumbnails/21.jpg)
21
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.