- •Загальні вимоги до оформлення звітів
- •Завдання.
- •Варіанти завдань
- •Варіанти завдань
- •Практична робота № 4
- •Варіанти завдань
- •Практична робота № 5
- •Методичні рекомендації, що до виконання роботи
- •Порядок виконання роботи
- •Короткі теоретичні відомості
- •Практична робота № 6
- •Задана послідовність цілих чисел. Знайти середнє геометричне додатних чисел ( )
- •Методичні рекомендації що до виконання роботи
- •Практична робота № 7
- •Завдання.
- •Варіанти завдань
Практична робота № 5
Тема. Наближені обчислення та рекурентні співвідношення
Обчислення суми степеневого ряду.
Мета.
Закріплення знань та навичок з програмування циклічного обчислювального процесу та його застосування для програмування рекурентних співвідношень;
Набуття первинних навичок в використанні методів наближених обчислень(обчислень з заданою точністю),
Набуття досвіду та знань з розробки програм з підпрограмами та організації рекурсивних підпрограм.
Завдання:
Скласти ітеративну функцію обчислення значення суми ряду.
Скласти рекурсивну функцію обчислення суми ряду.
Порівняти результати отриманих обчислень з результатом роботи стандартної функції мови програмування.
Варіанти завдань
Методичні рекомендації, що до виконання роботи
Завдання полягає в тому, що за допомогою рекурентних співвідношень(степеневих рядів) обчислюється наближене значення тригонометричної або логарифмічної функції в заданій точці х.
Отриманий результат порівнюється зі значенням, що повертає відповідна бібліотечна функція мови програмування.
Порядок виконання роботи
Розробити математичну постановку задачі та схему алгоритму для обчислення значення заданої в варіанті функції через рекурентне співвідношення, провести тестові розрахунки (не менше трьох прикладів);
Розроблений алгоритм реалізувати як підпрограму-функцію з вхідним параметром х та результатом роботи – отримане значення функції в точці х: f(x)
В роботі необхідно скласти два варіанти цієї підпрограми-функції:
перша – ітеративна (обчислення виконуються в циклі),
друга –рекурсивна.
Для рекурсивної підпрограми дослідити процес рекурсивного занурення та рекурсивного підйому, схему яких необхідно навести в звіті.
Для тестових розрахунків дібрати за рахунок зменшення точності невелику глибину рекурсивного спуску.
Короткі теоретичні відомості
Степеневі ряди є одним з інструментів обчислення значення математичних функцій, який використовується у вбудованих(стандартних) бібліотечних підпрограмах.
Степеневі ряди обчислюються через рекурентні співвідношення, в яких кожний наступний член ряду обчислюється через попередні.
У загальному випадку це можна визначити так: Ri=F(Ri-1),
де
Ri - наступний член ряду,
Ri-1 - попередній член ряду, )
F(R) –правило, за яким утворюється новий член ряду.
Наближене значення суми ряду можна отримати або обмежуючись сумою перших N членів ряду, або обчислюючи суму з наперед заданою точністю e.
В ідеальному випадку під час обчислення суми ряду буде отриманий член ряду, що дорівнює 0. Враховуючи те, що в обчислювальній техніці при роботі з дійсними числами відбувається втрата точності та, крім того, зазвичай не має сенсу виконувати такі тривалі розрахунки, кожний наступний член ряду порівнюється не з 0, а з заданою припустимою похибкою розрахунків ε. Наприклад, ε можна взяти за 0.0001(майже 0).
Але цей спосіб обчислення можна застосовувати тільки тоді,коли члени ряду утворюють спадну послідовність (наступний член менше ніж попередній).
Отже обчислення суми ряду переривається коли: |Ri|<ε.
Розглянемо обчислення суми такого ряду:
Він буде спадним для ) F(R) .
По-перше, необхідно встановити рекурентне співвідношення для членів ряду. Якщо за R1 взяти тоді для отримання наступного члену необхідно чисельник помножити на - х2,а знаменник збільшити на 2.
Це співвідношення вірне і для R0=1 .
Ітеративний підхід
Якщо прийняти ,
тоді початкове значення a1=1, b1=1, S=0.
(1)
Наступні значення для a та b будуть:
(2)
Обчислення суми ряду переривається коли:
(3)
Рекурсивний підхід
З формули (1) зрозуміло, що S можна подати як функцію від a та b: S(a, b), тоді (1) трансформується в вираз:
(4)
де a’,b’, – наступні значення для a та b, що визначаються за формулою (2).
Враховуючи (3), цю ж саму функцію можна визначити так:
(5)
Перший виклик цієї рекурсивної функції буде S(1,1).
В результаті цього виклику буде отримане значення суми ряду.