Разработка технического задания на программу
УДК:004.451:004.43
ТОЧНОСТЬ ВЫЧИСЛЕНИЙ В КОМПЬЮТЕРНОЙ АРИФМЕТИКЕ
Люлюзов Малик Юсупович, магистрант 2-го курса направления 710400 «Программная инженерия», кафедра «Программное обеспечение компьютерныхсистем» (ПОКС), КГТУ им. И. Раззакова, (+996) 772-66-93-32. г.Бишкек, пр. Мира 66, e-mail: abdu.malik5660@gmail.com.
Тен Иосиф Григорьевич, к.т.н., профессор, заведующий кафедрой ПОКС, КГТУ им. И. Раззакова, (+996) 543-71-26-37. г.Бишкек, пр. Мира 66, e-mail: tenig@mail.ru.
Мусина Индира Рафиковна, к.т.н., доцент кафедры ПОКС, КГТУ им. И.Раззакова, (+996) 555-00-58-98. 720044, г.Бишкек, пр. Мира — 66, e-mail: musina-indira@yandex.ru
Аннотация
В данной статье описывается разработка программы, формирующая множество чисел, с которыми в компьютере оперирует любая программа. Данная программа генерирует систему чисел с плавающей запятой для наглядной демонстрации арифметических систем ограниченной разрядности. Это поможет дать студенту четкое и ясное знание о том, какими числами может оперировать любая компьютерная программа. В статье приведено техническое задание и руководство к разработке подобной программы студентами младших курсов.
Ключевые слова: компьютерная арифметика, точность вычислений, разрядность процессора, система числа с плавающей запятой.
FINITE-PRECISION ARITHMETIC SYSTEMS
Malik Usupovich Luluzov, First-year master student of Software Engineering (SE) Department, Kyrgyz State Technical University (KSTU) named after I. Razzakov, (+996) 56-38-53. 720044,Bishkek city, 66, prospect Mira, e-mail: abdu.malik5660@gmail.com.
Iosif Grigorievich Ten, PhD, Professor, Head of SE Department, KSTU, named after I. Razzakov, (+996) 56-38-53. 720044, Bishkek city, 66, prospect Mira, e-mail: tenig@mail.ru.
Musina Indira Rafikovna, PhD, Associate Professor, SE Department, (+996) 56-38-53. 720044 , Bishkek city, KSTU named after I.Razzakov e-mail: musina-indira@yandex.ru.
Summary
This article describes the development of a program that generates a set of numbers, which operates any computer program. The program generates a system of floating-point arithmetic to illustrate the limited bit systems. This will give the student a clear and precise knowledge about what numbers can operate any computer program. Software requirements specifications and guidance for development of similar program by junior students are described in the article.
Keywords: computer arithmetic, calculation accuracy, bit processor, a floating point number systems.
ВВЕДЕНИЕ
На сегодняшний день при решении любой задачи, требующей арифметических вычислений на компьютере, пользователь сталкивается с двумя видами ошибок: ошибки входных данных (ошибки действий пользователя) и ошибки вычислений. И если на первый вид ошибок разработчики программ никак повлиять не могут, то ответственность за появление ошибок второго вида полностью возлагается на них. Данная статья посвящена решению проблемы, связанной именно с ошибками вычислений.
Если исключить все ошибки разработчика программы, связанные с неверной реализацией алгоритма, то ошибки в вычислениях могут появляться из-за округления в самой системе, т.к. любая компьютерная система не может быть бесконечно точной. Причиной такого рода ошибок является ограничение памяти и разрядности процессора. К примеру, в натуральной арифметике, которую изучают в школе, между нулем и единицей существует бесконечное количество вещественных чисел, иными словами различие между двумя соседними числами в натуральной арифметике стремится к нулю. В свою очередь компьютер из-за своей ограниченной разрядности памяти может хранить и использовать только ограниченное количество чисел. От чего зависит набор этих чисел и какими характеристиками они обладают, мы рассмотрим в данной статье.
Для представления этого ограниченного набора чисел, была введена система чисел с плавающей запятой, что является компромиссом между точностью и скоростью вычислений. Число с плавающей запятой состоит из набора отдельных разрядов, условно разделенных на знак, порядок и мантиссу [2]. Порядок и мантисса — целые числа, которые вместе со знаком дают представление числа с плавающей запятой (рис. 1).
Рис. 1. Представление числа с плавающей запятой.
РАЗРАБОТКА ТЕХНИЧЕСКОГО ЗАДАНИЯ НА ПРОГРАММУ
Задача состоит в разработке технического задания на компьютерную программу, генерирующую систему чисел с плавающей запятой, с целью улучшения качества обучения студентов по информатике. Обученный студент должен уметь учитывать особенности компьютерной арифметики при разработке программ, решающих вычислительные задачи, в которых требуются получать решения с предельно возможной максимальной точностью. Необходимо систему чисел с плавающей запятой наглядно и информативно представить студентам так, чтобы они поняли их особенности и учитывали эти особенности при решении своих задач. Поэтому пользовательскими требованиями к ПО являются следующее:
- Для достижения бизнес-цели разработки программы необходимо в темпе реального текущего аудиторного занятия генерировать систему чисел с плавающей запятой для наглядного представления их студентам.
- При задании одной из наиболее известных оснований системы счисления
необходимо сгенерировать систему счисления, соответствующую выбранному основанию счисления. Это означает, что программа должна продемонстрировать множество цифр, которое соответствует выбранному основанию системы счисления. Это позволит пользователю-студенту наглядно увидеть различие между понятиями основание системы счисления и самой системой счисления и закрепить в памяти эти знания. Наглядности можно достигнуть, если применить системный подход и представить основание системы счисления как входные данные, которые обрабатываются и преобразуются некоторой процедурой в множество цифр, составляющих систему счисления, как выходные данные некоторой подсистемы №1 как это представлено на рис.2.
Рис.2. Входные и выходные данные подсистемы №1.
- По заданному основанию системы счисления
и заданной точности
необходимо сгенерировать мантиссу числа с плавающей запятой. Мантисса
это строка символов, составленная из цифр, допустимых для данного основания счисления. Мантисса необходима для формирования системы чисел с плавающей запятой и представляет собой матрицу размера r*t, где
Для понимания алгоритма генерирования системы чисел с плавающей запятой необходимо максимально наглядно представлять мантиссу, чтобы студент увидел связи между заданными основанием системы счисления
и точностью
и соответствующей этим двум параметрам мантиссой системы чисел с плавающей запятой. Наглядности можно достигнуть, если применить системный подход и представить эти два параметра
как входные данные, а мантиссу как выходные данные некоторой подсистемы №2 как это представлено на рис.3.
Рис.3. Входные и выходные данные подсистемы №2.
- По заданным границам области изменения экспоненты в виде соотношения
требуется сгенерировать и наглядно продемонстрировать множество возможных значений экспоненты, чтобы иметь конкретное представление о возможных значениях экспоненты. Наглядности можно достигнуть, если применить системный подход и представить эти два параметра
как входные данные, а множество возможных значений экспоненты
как выходные данные некоторой подсистемы №3 как это представлено на рис.4.
Рис.4. Входные и выходные данные подсистемы №3.
- Необходимо графически представить систему чисел с плавающей запятой компьютерной арифметики для наглядной демонстрации свойств такой системы, отличающих ее от системы чисел натуральной арифметики:
o Свойство 1: Любая система с плавающей запятой как функция имеет нижнюю
и верхнюю
границы области определения значений функции (domain of function);
o Свойство 2: Любая система с плавающей запятой содержит конечное количество дискретных чисел в этих границах. Количество таких чисел определяется формулой
;
o Свойство 3: Множество таких чисел неравномерно распределено в диапазоне их изменения от нижней
до верхней
границы области определения значений функции (domain of function);
o Свойство 4: Поскольку в натуральной арифметике имеется бесчисленное множество чисел, тогда как в компьютерной арифметике имеется только лишь конечное количество чисел, то очевидно, что не все реальные числа натуральной арифметики можно точно представить в системе с плавающей запятой. Реальные числа, которые можно абсолютно точно представить в какой-либо заданной системе с плавающей запятой, называются иногда машинными числами (machine numbers).
o Свойство 5: В любой вычислительной задаче, в которой требуется использовать реальные (не целые) числа на компьютере, погрешность решения не может быть равна нулю и минимально достижимое значение погрешности зависит от параметров системы с плавающей запятой и характеристик самого компьютера таких как разрядность памяти компьютера (memory width) и размер машинного слова (machine/computer word or length).
Для понимания и овладения умением правильно учитывать и применять свойства системы чисел с плавающей запятой при программной реализации алгоритмов решения вычислительных задач, необходимо наглядно демонстрировать связь между параметрами системы чисел с плавающей запятой и их свойствами. Поэтому функциональными требованиями к ПО являются следующее:
- SRS1.1: Система должна дать возможность пользователю вводить набор следующих параметров, определяющих однозначно конкретную систему чисел с плавающей запятой:
- b- base or radix-основание системы счисления;
- ?t-Precision-точность;
- [L,U]-Exponent Range-диапазон изменения экспоненты e;
L — Lower point of the Exponent Range — нижняя граница диапазона изменения экспоненты e;
U — Upper point of the Exponent Range-верхняя граница диапазона изменения экспоненты e;
SRS — Software Requirements Specification — эта аббревиатура означает Спецификация требований к ПО.
- SRS1.2: Система для заданного основания системы счисления (
должна иметь возможность генерировать и демонстрировать саму эту систему счисления, то есть определенный набор цифр, составляющих эту систему. На рис.5 приведены примеры алгоритма формирования системы счисления компьютерной арифметики для наиболее известных оснований системы счисления такие как двоичное, восьмеричное, десятичное и шестнадцатеричное.
Рис.5. Алгоритм формирования системы счисления компьютерной арифметики по основаниям 2, 8, 10 и 16.
- SRS1.3: Система должна для заданного основания системы счисления
и (base or radix) заданной точности
генерировать и демонстрировать множество мантисс числа с плавающей запятой. Мантисса
— это прямоугольная матрица D(r х t), где r=?^t — число строк матрицы, а t-число столбцов,где строки такой матрицы составлены из всевозможных сочетаний цифр
, допустимых для данного основания счисления (
. На рисунках 6 и 7 приведены примеры мантисс для двух систем чисел с плавающей запятой при значениях параметров
и
соответственно.
Мантисса с плавающей запятой при и представляет собой матрицу размера (8X3) и имеет следующий вид: | ![]() |
Рис.6. Мантисса
при
и 
Мантисса числа с плавающей запятой при и представляет собой матрицу размера (16X4) и имеет следующий вид: | ![]() |
Рис.7: Мантисса
числа с плавающей запятой при
и 
- SRS1.4: Система должна для заданного основания системы счисления
и заданной точности
генерировать и демонстрировать вектор
размера
. На рисунках 8 и 9 приведены примеры такого вектора
для числа с плавающей запятой при значениях параметров
и
соответственно.
Вектор вида имеет размер | ![]() |
Рис.8. Вектор размера
вида
для числа с плавающей запятой при значениях параметров
.
Вектор вида имеет размер |

с плавающей запятой при
и
представляет собой матрицу
размера (8X3) и имеет следующий вид:
числа с плавающей запятой при
представляет собой матрицу 
вида
