Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсова робота з теми Моделювання руху тіла у в...docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
524.93 Кб
Скачать
    1. Алгоритм вирішення

Алгоритм вирішення поставленого завдання по моделюванню руху твердого тіла у в'язкому рідини заснований на рішенні рівняння руху методом Рунге-Кутти. Рівняння записується у вигляді (явної залежності від часу немає):

Безпосередньо застосовуючи метод Рунге-Кутти, можна знайти значення швидкості тіла в будь-який момент часу t, якщо відомо початкове значення (в даній задачі воно покладається рівним нулю).

Однак, для повного опису руху тіла необхідно знати не його швидкість, а координати. При точному вирішенні диференціального рівняння руху знайти формулу для координат дуже просто - потрібно тільки проінтегрувати формулу для швидкості за часом. При чисельному рішення це зробити неможливо.

З іншого боку, швидкість є похідна за часом від координати:

Це рівняння теж можна вирішити методом Рунге-Кутти, оскільки ми вже знаємо значення v у потрібні моменти часу. Однак, треба враховувати, що в методі використовується значення функції в моменти, кратні не тільки довжині інтервалу, але і половині інтервалу. Тому, задаючи інтервал часу при рішенні рівняння для координат, необхідно перш за все задати вдвічі менший інтервал при вирішенні рівняння для швидкості, так як для знаходження значення координат у N моментів часу буде потрібно значення швидкості в 2N моментів часу.

    1. Структура програми

Програма складається з чотирьох функцій:

  1. Функція main - основна функція програми, в який відбувається введення параметрів алгоритму (максимального моменту часу, для якого потрібно знайти координати тіла і інтервалу між двома сусідніми моментами часу) і виклик всіх інших функцій;

  2. Функція ReadData, в якій відбувається зчитування фізичних параметрів задачі - густин тіла і рідини, радіуса тіла і в'язкості рідини. Ознайомитися зі структурою функції можна у додатку Б (рис. 4);

  3. Функція RungeCuttaV, в якій за допомогою методу Рунге-Кутта чисельно вирішується рівняння для швидкості тіла; при цьому повертається масив зі значеннями швидкості в потрібні нам моменти часу; (рис. 5)

  4. Функція RungeCuttaY, в якій аналогічно вирішується рівняння для координати тіла - при цьому необхідні значення швидкості у відповідні моменти часу виходять, як результат роботи функції RungeCuttaV, яку ми викликаємо. (рис. 5)

Крім того, у функціях RungeCuttaV і RungeCuttaY відбувається виведення на екран одержуваних значень швидкості і координати в кожен з моментів часу. Одночасно з рішенням, отриманим чисельно, виводиться рішення для того ж моменту часу, отримане з точних формул. Це дозволяє оцінити, наскільки точним виходить рішення, отримане чисельними методами.

Варто відзначити, що оскільки в методі Рунге-Кутти для отримання значення функції в точці xn необхідні значення похідної (функції f (x, u) в задачі Коші) в точках xn і xnh / 2, тобто вдвічі більшому числі точок, то функція RungeCuttaV, чиї результати використовуються у функції RungeCuttaY, виконується з удвічі меншим кроком h між моментами часу.

У програмі підключені слідуючи бібліотеки:

#include <windows.h> - файл бібліотеки для коректної роботи в операційному середовищі Windows.

#include <stdio.h> - файл вводу та виводу стандартної бібліотеки мови Сі, у якому визначені функції та макроси для вводу та виводу даних у стилі мови Сі.

#include <stdlib.h> - файл вводу, який містить у собі різні стандартні функції для виділення пам’яті та контролю процесів. У даній програмі його треба підключати для використання функції malloc, яка виділяє пам’ять.

#include <math.h> - файл стандартної бібліотеки, підключаємо для використання математичних операцій та маніпуляцій. Містить у собі математичні функції та константи. У даній програмі потрібен для використання функції exp

#include <conio.h> - файл для консольного вводу та виводу, потрібен для роботи с текстовою інформацією у консолі. Потрібен для коректної роботи функції getch()