Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Комп'ютерні обчислення.doc
Скачиваний:
1
Добавлен:
16.11.2018
Размер:
51.2 Кб
Скачать

Комп'ютерні обчислення

Числа, з якими ми маємо справу в житті, бувають двох типів. Одні точно дають істинну величину, інші - наближено. Перші називають точними, другі - наближеними. Досить часто використовуємо наближене число замість точного, тому що останнє буває необов'язковим. Але навіть якщо є необхідність знати число точно, часто отримати таке число неможливо.

Якщо говорять про відстань між сусідніми селами, то цю відстань вказують в кілометрах. Вимірювати цю відстань можна також в метрах, або навіть і в сантиметрах. Тобто відстань між селами може бути вказана з точністю до кілометра, або метра чи сантиметра. В усіх цих випадках числа, які характеризують відстань, є наближеними. Результат обчислень з використанням наближених чисел є наближеним числом.

Нескінченний неперіодичний десятковий дріб можна обчислити тільки наближено, зі скінченою кількістю десяткових знаків, або, як прийнято говорити - з певною точністю. Точність вказує на кількість десяткових знаків, які задовольняють користувача. Якщо число є результатом обчислень на комп'ютері, то кількість десяткових знаків обмежується розміром пам'яті, яка виділяється для цього числа.

Дійсні числа, що використовуються в Паскалі, займають шість байтів у пам'яті комп'ютера. Тому точність подання дійсних чисел обмежена розміром даної пам'яті і не перевищує 11 десяткових знаків.

Комп'ютери дозволяють обчислювати значення чисел з різним ступенем точності, але ця точність не може бути вищою за комп'ютерну - не можна отримати більшу кількість цифр у числі, ніж вміщується у відведений для числа пам'яті.

Розглянемо приклади обчислень, які виконуються на комп'ютері із заданою точністю.

1.Обчислення кореня квадратного з даного числа А. Точному значенню кореня квадратного числа А відповідає точка на числовій прямій. Візьмемо деяке наближене значення цього числа ліворуч від даної точки: нехай це буде x0 (мал. 7.1). Тоді значення А/x0 на числовій прямій

х0 х1 А А/х0

мал.7.1

відповідає точці, яка знаходиться праворуч від точного значення кореня. За перше наближення значення кореня з числа А можна взяти півсуму чисел x0 і А/x0:

x1 =1/2(x0 +А/x0 ).

Продовжуючи міркування, дістанемо послідовність значень х12,...,хn. Загальний вигляд формули, за якою проводять обчислення, такий:

хn+1 = 1/2 (хn + А/хn)

Обчислювальний процес, при якому кожне наступне значення визначається з використанням одного або кількох попередніх значень, називається ітераційнім. Розглянутий алгоритм, за допомогою якого можна одержати наближене значення кореня квадратного з даного числа, був відомий ще грецькому математику Герону (близько І ст. н. е.), і він називається алгоритмом Герона.

Можна узагальнити наведену вище формулу для кореня n-го степеня:

хn+1 = 1/n ((n-1) хn+A/n хn n-1).

Як же визначити, коли буде досягнута потрібна точність обчислень? Для ітераційних процесів одна з ознак досягнення заданої точності може бути така: модуль різниці двох сусідніх значень не повинен перевищувати задану похибку (читається “епсілон” ) :

| хn + 1 + хn | .

Оскільки в Паскалі немає грецької літери , позначимо похибку обчислень через eps. У програмі E12, яка реалізує цей алгоритм, використовуються всього дві змінні: x1 і x2, але обчислення можуть повторюватися досить велику кількість разів (залежно від заданої точності). При побудові послідовності уточнених значень невідомо, скільки її членів буде одержано для заданого значення похибки. Отже, невідомо, який об'єм пам'яті потрібен для збереження всіх цих даних. Використовуючи той факт, що на кожному кроці обчислень необхідно знати значення тільки одного попереднього члена одержуваної послідовності, будемо кожний раз нове значення записувати в ділянку з іменем x1, а попереднє брати з ділянки з іменем x0. Щоб на кожному кроці обчислень використовувалось щойно одержане значення, будемо заносити його щоразу до ділянки x1:

x1:= x0;

Тоді, незалежно від числа повторень і отриманих при цьому членів послідовності, в програмі можна обмежитись двома змінними. За початкове значення кореня можна взяти будь-яке число (крім нуля), наприклад, одиницю. Програма наближеного обчислення кореня квадратного із числа А із заданою точністю eps може бути такою:

program E12;