Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Програма 1.3



while do ( )

Коректність кожної з цих програм є безпосереднім наслідком самого процесу її конструювання. Цей процес аналогічний докладно розглянутому процесу конструювання програми 1 розділу 1, тому тут його не наводитимемо.

Але програми 1.1-1.3 з одночасним забезпеченням їх коректності можна дістати й іншим способом, до розгляду якого зараз і перейдемо.

Нехай – функція, зображена відрізком степеневого ряду, коефіцієнти якого залежать від номера члена:

(5)

Введемо до розгляду D -іменну -функцію , яка іменній множині зіставляє значення і D- іменний предикат , який іменній множині зіставляє значення .

Можна показати, що мають місце такі твердження.

Теорема 3.1. Для обчислення функції (5) в елементарній програмній логіці виводиться коректна програма з оракулом (схема програм), що має такий вигляд

while do ( ).

Теорема 3.2. Для обчислення функції (5) в елементарній програмній логіці виводиться коректна програма з оракулом (схема програм), що має такий вигляд

while do ( ).

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

Стосовно ефективності програм обчислення функцій, зображених довільними степеневими рядами, коефіцієнти яких а(і) задані їх загальним виразом залежно від номера і, нагадаємо таке. Як правило, можна досягти більшої ефективності, виражаючи а(і) (або будь-які компоненти а(і)) через а(і-l) (через відповідні компоненти а(і-l)).

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

(6)

де , доданки якої обчислюють за рекурентним співвідношенням

(7)

Нехай R { Х,І } – D -іменна -функція, яка іменній множині зіставляє значення . Покажемо, що справедливе таке твердження.

Теорема 2.3. Якщо обчислення функції (5) зводиться до обчислення суми (6), члени якої послідовно обчислюються за рекурентними співвідношеннями (7), то схема програм (програма з оракулами) такого обчислення, зображувана у вигляді

І:= 0; U:=A { 0 }; S:= A { 0 };

while do ( )

виводиться в елементарній програмній логіці і є коректною.

Доведення теорем 3.1-3.3 проводяться безпосередньою побудовою методом редукцій виводів в елементарній програмній логіці відповідних коректних програм з оракулами (схем програм). Вони є майже дослівним повторенням доведень відповідних теорем розділу 2 і тому тут не наводяться.

Повернувшись до програм 1.1- 1.3, неважко бачити, що вони можуть бути здобуті відповідно з теорем 3.1- 3.3, якщо покласти в схемах програм цих теорем

Що ж стосується коректності цих програм, то вона гарантується способом їх побудови.

Таким чином, коректні програми 1.1-1.3 можуть бути отримані одним із двох способів: або вони можуть безпосередньо конструюватися методом редукцій за композиційною технологією програмування, або їх можна дістати з попередньо сконструйованих відповідних схем програм заміною в останніх довільних функцій, що в них входять, відповідними конкретними функціями. Але, як показує приклад, розглянутий у розділі 1, процеси конструювання конкретної програми і схеми програм, з якої вона може бути отримана, можна здійснювати паралельно.

З огляду на це повернемося до питання, яким закінчується вказаний розділ: чи варто конструювати методом редукцій окремі коректні програми, якщо можна спочатку сконструювати коректні схеми програм для тих або інших класів задач, а вже потім діставати з цих схем необхідні коректні програми?

З метою обговорення цього питання розглянемо ще один приклад.

Приклад 3.2. Написати програму обчислення суми степеневого ряду для

Із заданою точністю . Точність вважається досягнутою, якщо абсолютна величина останнього залишеного члена ряду не перевищує задане число .

Ця задача може розглядатися як задача обчислення функції

(8)

де – номер останнього залишеного члена суми, який визначається вказаним співвідношенням.

По аналогії з розглянутою вище функцією (2), базуючись на різних характеристичних властивостях функції (8), можна здійснити її редукційне програмування, отримавши наступні програми її обчислення.





Дата публикования: 2015-01-10; Прочитано: 244 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...