Зміст курсу
Основи Matlab
Основи Matlab
Застосування: Обчислення 3D Траєкторій за Допомогою Циклів While
Тут ви дізнаєтеся, як обчислювати траєкторії об'єктів, що рухаються у 3D-просторі, а також розглянете ще один аспект програмування: цикли while, унікальні властивості яких роблять їх такими ж базовими елементами, як і for-цикли та умовні оператори if, хоча вони зустрічаються не так часто.
Структура циклу while
Цикли while схожі на for-цикли, але їхня ключова відмінність полягає у механізмі контролю ітерацій. Замість фіксованої кількості повторень, цикл while виконується доти, доки булева умова істинна. Ось як це працює:
Спочатку перевіряється булева умова;
Якщо умова істинна, виконується код усередині циклу;
Після виконання коду умова перевіряється знову. Якщо вона все ще істинна, код виконується ще раз. Це триває, доки умова залишається істинною;
Коли умова стає хибною, цикл завершується, і програма продовжує виконання після циклу.
Ця структура особливо корисна, коли заздалегідь невідомо, скільки разів потрібно виконати цикл. Він виконується доти, доки не буде виконано певну умову, що робить його зручним для задач, де кількість ітерацій залежить від динамічних факторів.
Оскільки цикли while повторюються, доки булева умова істинна, існує ризик (через обставини або помилку), що булева умова завжди буде істинною, і цикл while повторюватиметься нескінченно!
Тому, якщо ви помітили, що ваша програма виконується значно довше, ніж зазвичай, доцільно зупинити її в Matlab, натиснувши:
Ctrl
+C
;Cmd
+C
.
Щоб зупинити виконання коду та переосмислити логіку й код.
Рівняння руху в 1D з постійним прискоренням
У відео використовується 1D рівняння руху:
де:
— час (у секундах);
— положення об'єкта в момент часу t;
— початкова позиція об'єкта;
— початкова швидкість об'єкта;
— прискорення об'єкта (вважається постійним).
Це рівняння застосовується незалежно до ортогональних компонент x, y, z для позиції, швидкості та прискорення за допомогою компонентних матричних операцій.
Це рівняння є стандартним у фізиці і зазвичай виводиться алгебраїчно (дещо рутинно, але нескладно) або шляхом дворазового інтегрування постійного прискорення за часом (і розуміння, що отримані константи — це початкова швидкість і позиція).
Те, що x, y, z є ортогональними (перпендикулярними), дозволяє застосовувати це рівняння до кожного з цих вимірів окремо, і водночас можна розглядати це як аналіз одновимірного випадку для спрощення розуміння.
Завдання
Створіть власну версію програми з відео, розуміючи її цілі:
Імпортуйте початкові позиції та швидкості як окремі матриці, а мітки об'єктів — як комірковий масив;
Окремо згрупуйте ці дані у дві 3D-матриці так, щоб позиції (x, y, z координати) кожного об'єкта могли змінюватися по стовпцях власного 2D-шару. Те саме можна зробити для початкових швидкостей (хоча вони не змінюються — це завжди початкові швидкості), щоб забезпечити узгодженість індексації надалі;
Використайте for-цикл по об'єктах, щоб обчислити 3D-траєкторію кожного об'єкта;
Обчисліть траєкторію кожного об'єкта у while-циклі, де логічна умова спочатку перевіряє, чи об'єкт ще знаходиться над землею (його z-координата ). Усередині while-циклу застосуйте 1D-рівняння руху для обчислення нової позиції (застосовуйте його до x, y, z координат незалежно, використовуючи матричні операції). Обчислення позиції у будь-який момент часу має залежати ТІЛЬКИ від:
Початкової позиції об'єкта;
Початкової швидкості об'єкта;
Часу, що розглядається.
Воно не повинно залежати від попередньої позиції.
Перевірка вхідних даних (початкових позицій і швидкостей) та змінних, які згрупували їх у 3D-матриці, завжди є хорошим способом виключити ці частини програми як джерела помилок;
Обмежте for-цикл однією ітерацією або, еквівалентно, видаліть об'єкти 2 і 3 (дані та мітки) з Excel-файлу, щоб перевірити роботу програми з одним об'єктом;
Непараболічні траєкторії можуть свідчити про проблему із застосуванням рівняння руху або некоректне програмування покомпонентних обчислень (зверніть увагу на крапки перед множенням тощо);
Початкові позиції (перший стовпець кожного 2D-шару) у вашій 3D-матриці траєкторій повинні збігатися з тими, що записані у Excel-файлі;
Не повинно бути від'ємних значень (кожен об'єкт починав з додатної позиції та швидкості у всіх напрямках x, y, z);
Перевірте, як було визначено прискорення, або спробуйте встановити його рівним нулю. Це має призвести до руху з постійною швидкістю, що утворює прямі лінії при побудові графіка (якщо подивитися зверху на 3D-графік, який показує рух лише у напрямках x, y, де прискорення було нульовим, ви побачите те саме);
Відповідно до нашої системи координат, прискорення вільного падіння (вниз до Землі), а не .
Дякуємо за ваш відгук!