Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

laba2

.pdf
Скачиваний:
1
Добавлен:
12.12.2024
Размер:
326.73 Кб
Скачать

Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования

«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)

Кафедра безопасности информационных систем (БИС)

Вещественные числа. Ошибки при работе с вещественными числами

Отчет по лабораторной работе №2 по дисциплине «Языки программирования»

Выполнил:

Студент гр. 730-2

____Подойницын К.В.

04.04.2022

Принял:

Преподаватель кафедры КИБЭВС

Полюга В.А. 04.04.2022

Томск 2022

2

1 Введение

Цель работы: знакомство с основными ошибками, возникающими при

обработке вещественных чисел.

3

2 Ход работы

В данной работе описываются ошибки, возникающие при работе с вещественными числами (типы данных float и double). В качестве языка был выбран C++.

Исходные данные, рассчитанные вручную:

x = 20730267302.28052002

y = 2.073026730228052002

c = x + y = 20730267304.35

c1 = 20730267304.350000000

z = x + 10^(-8) = 20730267302.28

k = 20730267302

Исходные данные для вычислений в программе приведены на рисунке 1.

Рисунок 1 – Программные исходные данные.

Первая ошибка – исчезновение операнда. Ошибка возникает, когда один из операндов мал относительно другого. Ниже показан результат выражения «c = x + y» (рисунок 2).

Рисунок 2 – Исчезновение операнда.

4

Вторая ошибка – умножение ошибки. Многократное увеличение абсолютной погрешности операнда, которая может появиться при использовании арифметики с плавающей точкой, даже если относительная ошибка мала

(рисунок 3).

Вручную было рассчитано произведение: x * x = 4.29743982424 * 10^(20)

Предположим, при вычислении x была допущена ошибка, равная 10^(-8).

Следовательно, на выходе получаем и неверный результат, и умножение ошибки: z * z = 4.29743982423 * 10^(20)

На рисунке 3 представлены вычисления с помощью программы.

Рисунок 3 – Умножение ошибки.

Третья ошибка – полная потеря значимости, вызванная вычитанием почти равных чисел (рисунок 4).

В качестве примера возьмем выражение 987654321,2 – 987654321,1. При подсчете вручную ответ будет равняться 0,1. На рисунке 4 представлены результаты при подсчете с помощью программы.

Рисунок 4 – Потеря значимости.

Также были посчитаны абсолютная и относительная ошибки для типа данных float и double (рисунок 5).

Рисунок 5 – Вычисленные ошибки.

5

Заключение В ходе лабораторной работы были изучены основные ошибки, которые

возникают при обработке вещественных чисел, и написана программа,

демонстрирующая их. Для реализации программы был использован язык программирования C++.

Соседние файлы в предмете Языки программирования