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 se repita indefinidamente!
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 para Movimento 1D com Aceleração Constante
No vídeo, estamos utilizando a equação de movimento 1D:
onde:
é o tempo (em segundos);
é a posição do objeto no instante t;
é a posição inicial do objeto;
é a velocidade inicial do objeto;
é a aceleração do objeto (assumida constante).
Esta equação é aplicada de forma independente aos componentes ortogonais x, y, z de posição, velocidade e aceleração utilizando operações matriciais por componente.
Esta 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 a compreensão.
Tarefa
Elabore 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 primeiro Booleano avalia se o objeto ainda está acima do solo (sua coordenada z é ). Dentro do while loop, aplique a equação de movimento 1D para calcular a nova posição (aplique-a independentemente às coordenadas x, y, z usando operações matriciais). O cálculo da posição em QUALQUER instante 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 maneira 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 observar como seu programa se comporta com um único objeto;
Trajetórias não parabólicas podem indicar 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) de sua matriz de trajetória 3D devem ser as mesmas registradas no arquivo Excel;
Não deve haver valores negativos (cada objeto iniciou 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 um movimento com velocidade constante, 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 é (para baixo, em direção à Terra), e não .
Obrigado pelo seu feedback!