47312 (608212), страница 2
Текст из файла (страница 2)
.
Для знаходження цих сталих отримуємо систему рівнянь
(11)
Ця система є нелінійною і її розв'язування звичайними методами пов'язано зі значними труднощами. Однак‚ якщо використати систему для поліномів виду
‚(12)
де - поліном Лежандра‚ то її можна звести до лінійної системи відносно коефіцієнтів
із заданими точками
.
Поліномами Лежандра називаються поліноми виду
.
Перші п'ять поліномів Лежандра мають вигляд
Оскільки степені поліномів у співвідношенні (12) не перевищують ‚ то повинна виконуватись система (11) і формула (8):
.
Внаслідок властивості ортогональності ліва частина останньої рівності дорівнює нулю‚ тоді
‚
що завжди забезпечується при довільних значеннях в точках
‚ які відповідають кореням відповідних поліномів Лежандра.
Підставивши ці значення в систему (11) і враховуючи перші n рівнянь‚ можна легко визначити коефіцієнти
.
Формула (8)‚ де - нулі поліному Лежандра
‚ а
визначаються з системи (11)‚ називається формулою Гауса.
Таблиця 3. Елементи формули Гауса.
|
|
|
|
1 | 1 | 0 | 2 |
2 | 1; 2 |
| 1 |
3 | 1;3 2 |
0 | 0,55555556 0,88888889 |
4 | 1;4 2;3 |
| 0,34785484 0,65214516 |
6 | 1; 6 2; 5 3; 4 |
| 0,17134250 0,36076158 0,46791394 |
7 | 1; 7 2; 6 3; 5 4 |
0 | 0,12948496 0,27970540 0,38183006 0,41795918 |
8 | 1; 8 2; 7 3; 6 4; 5 |
| 0,10122854 0,22238104 0,31370664 0,36268378 |
В таблиці 3 подано значення та
для формули Гауса для різних
від 1 до 8.
Стандартні програми‚ які використовують формули Гауса з різним числом вузлів як формули‚ що забезпечують найкращу точність‚ входять до складу багатьох пакетів програм для наукових та інженерних розрахунків.
2. Практична частина
2.1 Архітектура програми
Для реалізації поставленої задачі розроблено програму INTEGRALY.PAS (лістінг програми представлено в додатку 4).
Програма складається з головного блоку, шести процедур:
-
VVID_INTERVAL;
-
INIT_GAUS;
-
INIT_CHEB;
-
CALCULATION;
-
VYVID_REZ;
-
INFORM.
Запуск програми здійснити двома способами:
-
з головного меню інтегрованого середовища Turbo Pascal шляхом вибору опції Run (попередньо програма повинна бути завантажена в ОП - F10, File, Open, INTEGRALY.PAS);
-
з середовища операційної оболонки Norton Commander шляхом запуску INTEGRALY.EXE (попередньо програма повинна буди відкомпільована з опцією Destination To Memory).
Програма виводить на дисплей головного меню, котре пропонує користувачеві вибір однієї з опцій:
- ВВІД
- ОБЧИСЛЕННЯ
-
РЕЗУЛЬТАТИ
-
ІНФОРМАЦІЯ
- ВИХІД.
При виборі певної опції активізується відповідна процедура. Завершення роботи програми і повернення в середовище системи програмування Turbo Pascal здійснюється при натисканні клавіші Esc, що відповідає вибору опції "ВИХІД". Програма знаходить розв’язки систем лінійних рівнянь з двома та трьома невідомими, виводить обчислені визначники та знайдені розв’язки на дисплей, або інформує користувача про відсутність розв’язків.
Опишемо процедури програми INTEGRALYS.PAS.
Процедура VVID_INTERVAL. Призначення - ввід лівої та правої меж інтегрування (інтервалу інтегрування). Процедура викликається з головного меню програми при виборі пункту "ВВІД" шляхом натискання функціональної клавіші F2.
Після вводу меж інтегрування процедура припиняє роботу і повертає керування в програму. Процес виконання процедури представлено екранною копією (див. додаток 1).
Процедура INIT_GAUS. Призначення - визначення (ініціація) значень елементів квадратурної формули Гауса. Виклик процедури здійснюється процедурою CALCULATION.
Процедура INIT_CHEB. Призначення - визначення (ініціація) значень елементів квадратурної формули Чебишева. Виклик процедури здійснюється процедурою CALCULATION.
Процедура CALCULATION. Призначення - обчислення визначеного інтеграла з допомогою квадратурних формул‚ розглянутих в попередньому розділі. Процедура викликається з головного меню програми при виборі пункту "ОБЧИСЛЕННЯ" (функціональна клавіша F3). Обчислені різними методами значення визначеного інтеграла зберігаються в масиві змінних. Після обчислення інтегралів процедура передає керування головному блокові програми.
Блок схема процедури представлена в додатку 3.
Процедура VYVID_REZ. Призначення - форматований вивід результатів обчислення визначеного інтеграла на дисплей. Процедура викликається з головного меню програми при виборі пункту "РЕЗУЛЬТАТИ" (функціональна клавіша F4). Результат роботи процедури представлено не екранній копії (див. додаток 5). Для отримання друкованого результату потрібно натиснути клавішу PrtScr (при роботі в режимі MS DOS) або комбінацію клавіш Shift+PrtScr (при роботі з ОС Windows 3.xx, Windows 9x).
Процедура INFORM. Призначення - ввід короткої інформації про методи чисельного інтегрування та квадратурні формули. Процедура викликається з головного меню програми при виборі пункту "ІНФОРМАЦІЯ" шляхом натискання функціональної клавіші F1.
Після вводу текстової інформації на екран дисплею процедура організовує паузу в роботі і повертає керування в програму при натисканні довільної клавіші. Результат виконання процедури представлено екранною копією (див. додаток 1).
Головний блок програми реалізовано у вигляді вертикального меню з використанням функціональних клавіш. Вибір опції меню здійснюється за допомогою натискання відповідної функціональної клавіші‚ вихід з меню (а тим самим і з програми) здійснюється при натисканні клавіші Esc. Блок-схема головного блоку програми подано в додатку 2.
2.2 Опис програми
Програма складена‚ відкомпільована і відлагоджена в середовищі Turbo Pascal 6.0.
На початку програми, відповідно до вимог технології програмування, знаходиться вступний коментар до програми, а решта операторів програми мають таке призначення:
Оператор | Призначення оператора |
001 | Заголовок програми |
002 | Підключення зовнішнього модуля управління виводом на дисплей (Crt) |
003-008 | Опис глобальних змінних програми |
009-011 | Опис підінтегральної функції |
012 | Заголовок процедури Init_Gauss |
013 | Початок процедури |
014 | Визначення кількості вузлів інтегрування |
015-022 | Ініціалізація абсцис інтегрування та коефіцієнтів формули Гауса |
023 | Кінець процедури Init_Gauss |
024 | Заголовок процедури Init_Cheb |
025 | Початок процедури |
026 | Визначення кількості вузлів інтегрування |
027-032 | Ініціалізація абсцис інтегрування та коефіцієнтів формули Чебишева |
033 | Кінець процедури Init_Cheb |
034 | Початок процедури Vvid_Interval |
035 | Опис локальної змінної |
036 | Початок процедури |
037 | Очистка вікна виводу |
038-040 | Вивід екранної форми для вводу даних |
041-042 | Ввід меж інтегрування |
043 | Кінець процедури Vvid_Interval |
044 | Заголовок процедури Calculation |
045 | Початок процедури |
046-047 | Присвоєння значення 0 масиву integral [1..5] |
048-051 | Обчислення наближеного значення інтегралу за формулою прямокутників і присвоєння цього значення змінній integral[1] |
052-055 | Обчислення наближеного значення інтегралу за формулою трапецій і присвоєння цього значення змінній integral[2] |
056-064 | Обчислення наближеного значення інтегралу за формулою Сімпсона і присвоєння цього значення змінній integral[3] |
065 | Виклик процедури Init_Gauss |
066-069 | Обчислення наближеного значення інтегралу за формулою Гауса і присвоєння цього значення змінній integral[4] |
070 | Виклик процедури Init_Cheb |
071-076 | Обчислення наближеного значення інтегралу за формулою Чебишева і присвоєння цього значення змінній integral[5] |
077 | Заголовок процедури Vyvid_Rez |
078 | Початок процедури |
079-089 | Вивід на дисплей екранної форми для виводу результатів обчислень |
090-093 | Вивід масиву вихідних наближених значень інтегралу‚ обчислених різними методами |
094 | Організація паузи в роботі програми |
095 | Кінець процедури Vyvid_Rez |
096 | Початок процедури Inform |
097-098 | Опис локальних змінних процедури |
098 | Початок процедури |
099-104 | Очистка вікна виводу |
105-128 | Вивід короткої інформації про чисельне інтегрування та про методи‚ що використовуються для наближеного обчислення визначених інтегралів |
129 | Організація паузи в роботі програми |
130 | Кінець процедури Inform |
131 | Початок головного блоку програми |
132 | Організація циклу виводу меню програми |
133 | Початок тіла циклу |
134 | Очистка екрану |
135-136 | Визначення основного та фонового кольорів |
137 | Оголошення вікна виводу |
138-162 | Вивід головної екранної форми програми та меню |
163 | Очікування натискання довільної клавіші і присвоєння коду цієї клавіші змінній choise |
164-165 | Зміна основного та фонового кольорів |
166-174 | Заголовок оператора вибору(аналіз коду клавіші) |
167 | Виклик процедури Vvid_Interval‚ якщо користувачем натиснуто клавішу F2 (код клавіші 6016) |
168-170 | Виклик процедури Calculation‚ якщо користувачем натиснуто клавішу F3 (код клавіші 6116) |
171 | Виклик процедури Vyvid_Rez‚ якщо користувачем натиснуто клавішу F4 (код клавіші 6216) |
172 | Виклик процедури Inform‚ якщо користувачем натиснуто клавішу F1 (код клавіші 5916) |
173 | Кінець роботи програми при натисканні користувачем клавіші Esc (код клавіші 2716) |
174 | Кінець дії оператора вибору |
175 | Кінець тіла циклу |
176 | Кінець програми. |
2.3 Контрольний приклад та аналіз результатів машинного експерименту
Випробування будь-якої системи є найбільш відповідальним і пов’язаний з найбільшими труднощами і найбільшими втратами часу. Відладка і тестування - найважливіші етапи життєвого циклу програм. Не можна робити висновок про правильність програми лише на тій підставі, що програма повністю протрансльована (відкомпільована) і видала числові результати. Все, чого досягнуто в даному випадку - це отримання деякої вихідної інформації, необов’язково правильної. В програмі все ще можуть міститись логічні помилки. Тому необхідно здійснювати "ручну" перевірку результатів‚ отриманих внаслідок машинного експерименту.