Conteúdo do Curso
Noções Básicas de Matlab
Noções Básicas de Matlab
Aplicação: Cálculo de Trajetórias 3D com Laços While
Aqui você aprenderá como calcular as trajetórias de objetos em movimento no espaço 3D, além de outro aspecto da programação: laços while, cujas propriedades únicas os tornam tão essenciais quanto laços for e instruções if, embora não sejam tão frequentes.
Estrutura do Laço While
Laços while são semelhantes aos laços for, mas sua principal diferença está no mecanismo de controle da iteração. Em vez de um número fixo de iterações, o laço while executa enquanto a condição booleana for verdadeira. Veja como funciona:
A condição booleana é avaliada primeiro;
Se a condição for verdadeira, o código dentro do laço é executado;
Após a execução do código, a condição é verificada novamente. Se ainda for verdadeira, o código é executado novamente. Isso continua enquanto a condição permanecer verdadeira;
Quando a condição se torna falsa, o laço é encerrado e o programa continua a partir do ponto após o laço.
Essa estrutura é especialmente útil quando não se sabe de antemão quantas vezes o laço precisará ser executado. Ele continua executando até que uma determinada condição seja atendida, sendo ideal para tarefas em que o número de iterações depende de fatores dinâmicos.
Como os laços while repetem até que o booleano seja falso, existe o risco (por circunstância ou erro) de que o booleano permaneça sempre verdadeiro e o laço while repita para sempre!
Portanto, se perceber que seu programa está demorando muito mais do que o normal, é recomendável interrompê-lo no Matlab pressionando:
ctrl
+c
;cmd
+c
.
Para interromper o código em execução e reavaliar a lógica e o código.
A Equação do Movimento 1D com Aceleração Constante
No vídeo, estamos utilizando a equação do movimento 1D:
t: tempo (em segundos);
x(t): posição do objeto no tempo t;
xi: posição inicial do objeto;
vi: velocidade inicial do objeto;
a: aceleração do objeto (assumida como constante).
Isso é aplicado de forma independente aos componentes ortogonais x, y, z de posição, velocidade e aceleração utilizando operações matriciais por componente.
Essa equação é padrão na física e geralmente é derivada algebricamente (um pouco mais trabalhoso, mas não difícil) ou pela integração de uma aceleração constante duas vezes ao longo do tempo (reconhecendo que as constantes resultantes representam a velocidade inicial e a posição inicial).
O fato de x, y, z serem ortogonais (perpendiculares) permite que isso seja aplicado a cada uma dessas dimensões separadamente, e ao mesmo tempo podemos perceber isso como a análise de uma única dimensão para simplificar o entendimento.
Tarefa
Escreva sua própria versão do programa apresentado no vídeo compreendendo os objetivos:
Importe as posições e velocidades iniciais como matrizes separadas, e os rótulos dos objetos como um array de células;
Organize esses dados separadamente em duas matrizes 3D para que as posições (coordenadas x, y, z) de cada objeto possam evoluir ao longo das colunas de sua própria camada 2D. O mesmo pode ser feito para as velocidades iniciais (mesmo que não mudem—elas são sempre as velocidades iniciais) para tornar o indexamento consistente posteriormente;
Utilize um for loop sobre os objetos para calcular a trajetória 3D de cada objeto;
Calcule a trajetória de cada objeto dentro de um while loop cujo Booleano avalia primeiro se o objeto ainda está acima do solo (sua coordenada z é ≥ 0). Dentro do while loop, aplique a equação de movimento 1D para calcular a nova posição (aplique-a às coordenadas x, y, z de forma independente usando operações matriciais). O cálculo da posição em QUALQUER tempo deve depender SOMENTE de:
A posição inicial do objeto;
A velocidade inicial do objeto;
O tempo avaliado.
Não deve depender da posição anterior calculada.
Verificar os dados de entrada (posições e velocidades iniciais) e as variáveis que organizaram esses dados em matrizes 3D é sempre uma boa forma de eliminar essas partes do programa como fontes de erro;
Restrinja o for loop a uma iteração, ou, de forma equivalente, remova os objetos 2 e 3 (dados e rótulos) do arquivo Excel para ver como seu programa se comporta com um objeto;
Trajetórias não parabólicas podem ser sintomáticas de um problema na aplicação da equação de movimento, ou programação incorreta dos cálculos por componente (lembrando dos pontos antes da multiplicação, etc.);
As posições iniciais (primeira coluna de cada camada 2D) da sua matriz de trajetória 3D devem ser as mesmas registradas no arquivo Excel;
Não deve haver nenhum valor negativo (cada objeto começou com posição e velocidade positivas em todas as direções x, y, z);
Verifique como a aceleração foi definida, ou tente defini-la igual a zero. Isso deve produzir movimento com velocidade constante, o que deve formar linhas quando plotado (se você observar a vista superior do gráfico 3D, que mostra apenas o movimento nas direções x, y onde a aceleração era zero, verá o mesmo resultado);
De acordo com nosso sistema de coordenadas, a gravidade é -9.8 m/s² (para baixo, em direção à Terra), não +9.8.
Obrigado pelo seu feedback!