Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Источники ошибок при вычислениях на ЭВМ.






1). Ошибки в исходных данных.

Это неточность математического описания задачи и в частности неточность задания исходныхданных.

Подразумевается, что это неточность представления исходных материалов, необходимых для расчетов. Главным образом – это неточности описания математической модели. Они возникают либо из-за сложности математической модели, либо из-за недостаточного уровня знаний в этой области на текущий момент времени. Сформулируем пример подобной ситуации.

Необходимо определить время, за которое самолет преодолеет расстояние 800 км. Предположим, что он движется со средней скоростью 800 км/час. В этом случае весьма приближенное решение очевидно: 1 час. При этом мы предположили, что движение самолета равномерное. Следовательно, исходные данные таковы:

Путь- S=800 км.

Скорость- V=800 км/час.

Математическая модель, описывающая движение самолета вообще отсутствует. Участки набора высоты (взлет) и снижения (приземления) не учитываются.

Скорость и направление ветра, турбулентности атмосферы (порывы ветра по вертикали и горизонтали) на протяжении всего пути, количество и размер грозовых фронтов, как правило, неизвестны.

В этих условиях даже достаточно сложная и совершенная математическая модель, описывающая движение самолета, не может обеспечить точного решения. В данных рассуждениях акцент сделан на наиболее трудоемкую и сложную часть любой вычислительной задачи: создание точной (реальной) математической модели. Без натурных экспериментов, серьезных знаний и опыта проектировщика по работе в данной области техники такие модели создать практически невозможно.

Все числовые параметры, входящие в расчетную математическую модель, также можно задать лишь с какой-то точностью. В данном примере числа заданы с точностью до 3-х знаков. Проще всего поставленную задачу решить с помощью статистики, если она имеется.

К данному разделу относятся также следующие ошибки:

а. Ошибки в вычислительном устройстве (аппаратные ошибки).

б. Ошибки в программе.

в. Ошибки в эксперименте.

По сути дела, в данном пункте возможных неточностей расчетов сгруппированы ошибки по всей цепочке организации вычислений:

- создание и разработка математической модели с ее исходными данными,

- разработка алгоритма и программы,

- отладка программы и

- анализ результатов счета.

2). Ошибки ограничения разрядности ЭВМ.

При любой разрядной сетке ЭВМ число разрядов, отведенное для чисел в структуре ЭВМ, ограничено. Поэтому машинная арифметика отличается от обычной - без машинной. Каждый компьютер можно проверить на машинную точность ε маш. с помощью программы:

 

Program Epsilon;

uses crt;

var Eps: real;

begin ClrScr;

Eps: =1;

while (1+Eps/2)> 1 do Eps: =Eps/2;

writeln(‘Eps=’, Eps); readln;

end.

Для чисел типа real (сопроцессор отключен) Eps=9.0949470177E-13, для чисел типа extended (сопроцессор включен) Eps=1.08420217217248550E-0019.

Набрав в МATLAB eps, получим ответ ans =2.2204e-016.

Современные компьютеры работают с большим количеством разрядов (32 или 64 двоичных разряда) и проблема кажется не актуальной.

Вот, что получается, если компьютер имел бы 6-ти разрядную сетку (для десятичных чисел).

Таблица №1

x exp(x)-машинное exp(x)-точное) exp(x)-матлаб
1 2, 718282 2, 718282 2, 7183
10 22026, 47 22026, 46 2, 2026*104
20 4, 8516531*108 4, 8516520*108 4, 8517*108
-1 0, 3678794 0, 3678795 0, 3679
-10 -1, 64086091*10-4 4, 539993*10-5 4, 5400*10-5
-20 1, 202966 2, 0611537*10-9 2, 0612*10-9

 

В качестве примера рассмотрен расчет экспоненты

e x= 1+x+x2/2! +x3/3! + ∙ ∙ ∙ (1.1)

Прежде всего, отметим, что большинство элементарных математических функций при расчетах на ЭВМ разлагаются в ряд.

Если предположить, что число членов ряда не ограничено, то в таблице №1 видно, что при x> 0 точное значение совпадает со значением, рассчитанным с точностью до 6-го знака (2-ой и 3-й столбцы). Значения, рассчитанные с помощью МATLAB (4-ый столбец), совпадают с точными значениями в 4-х знаках. Они рассчитаны по умолчанию, т.е. не предприняты меры по увеличению точности расчетов.

Совсем другая картина для x< 0. Использование 6-ти разрядной сетки привело к катастрофическим последствиям при расчете для x=− 10 и x =− 20. Видно, что нет никакого совпадения результатов (2-й и 3-й столбцы). В формуле (1.1) слагаемые вводятся с переменным знаком. И, следовательно, при сложении членов ряда возникают малые разности, которые меньше чисел с 6-тью знаками после запятой, поэтому результат не может быть предсказуемым. Числа выходят за пределы разрядной сетки и «пропадают». Отметим попутно, что ряд (1.1) непременно сходится, поскольку факториал является более быстрорастущей функцией.

Особо следует обращать внимание на расчетные выражения, в которых малые разности появляются в знаменателе. В этом случае можно получить любой результат даже для ЭВМ с большим количеством разрядов, если разность получена для очень близких по величине чисел. Такие алгоритмы называют неустойчивыми. Часто простое преобразование формулы избавляет от рассмотренной неприятности. Для формулы (1.1) можно проделать следующее (x< 0):

e -x = 1/ex. (1.2)

Рассмотрим второй пример.

Необходимо вычислить корни алгебраического уравнения:

x 4 - 8 x3 +24 x2 - 32 x +15, 99999999= 0. (1.3)

Преобразуем последнее слагаемое 16 – 10-8 и запишем,

используя формулу бинома Ньютона:

(x -2)4 =10-8 . (1.4)

Извлекая корень квадратный из левой и правой части уравнения (1.4), получим:

(x -2)2 = ±10-4.

Извлекая корень квадратный еще раз, получим:

(x -2) = ±√ ±10-4.

Откуда определяем корни уравнения:

x1=2, 01; x=1, 99; x=2+0, 1j; x=2- 0, 1j.

Если ε маш.> 10-10, то вместо исходного уравнения (1.3) решается уравнение (x -2)4 = 0.

А корни его принципиально другие. Такие задачи, в которых небольшие вариации коэффициентов, приводят к значительным изменениям решения называются плохо обусловленными.

И, наконец, третий пример:

Решить систему линейных уравнений:

0, 780 x + 0, 563 y = 0, 217 (1.5)

0, 457 x + 0, 330 y = 0, 127.

Если вести расчеты с учетом трех десятичных разрядов, то получим решение x=1, 71 и y=-1, 98. Подставив полученное решение в систему уравнений (1.5), получим невязки: 0, 00206 и 0, 00107, которые оказались достаточно малыми. Точное решение x=1 и y=-1. Оно обеспечивает нулевые невязки.

- Таким образом, метод решения не может исправить ситуацию, если задача плохо обусловлена.

- Машинная арифметика может давать неожиданные результаты.

Конечно, примеры несколько утрированы относительно современных ЭВМ, но подобные ситуации для более сложных задач случаются нередко.

3) Ошибки округления.

Это ошибки, возникающие при округлении младшего разряда любого числа. Округление обычно выполняется аппаратно и соответствует правилу, принятому в десятичной системе: округлять с точностью 0.5. Оно точнее, чем простое отбрасывание младшего разряда. Округление зависит от машинной точности и при значительном числе разрядов, используемых при счете, кажется фактором совсем ничтожным. Но дело в том, что при расчетах сложных алгоритмов число совершаемых операций велико и многие алгоритмы обладают способностью накапливать ошибки округления. Поэтому разрабатываются методы, позволяющие следить за накоплением ошибок округления и их оценкой. Для этого разрабатываются как программные, так и аппаратные средства. При программировании конкретных задач эту проблему следует учитывать.

4) Ошибки ограничения.

Они возникают, если расчетная формула при выполнении расчетов «усекается», т.е. используется в упрощенном виде:

ex=1+x+x2/2! +x3/3! (1.6)

Часто в литературе ошибки в вычислениях называют погрешностями. При этом ошибки, возникающие в пунктах 1) и 4) являются неустранимыми, а ошибки, возникающие в пунктах 2) и 3) являются вычислительными погрешностями. Если метод решения задачи приводит к чрезмерному увеличению продолжительности счета или не обеспечивает ожидаемых результатов, то в данном случае можно сказать, что это погрешности метода.

Введем следующие определения:

абсолютная ошибка - это разность между полученным при расчете значением и истинным

значением величины:

,

относительная ошибка - это отношение абсолютной ошибки к значению, полученному

при расчете:

.

- точное решение,

х – приближенное, реально полученное решение.

Величины ошибок при совершении конкретных действий оцениваются с помощью дифференциала. Важно понять распространение ошибок в ходе вычислений. Эта проблема в общем виде не решена.

Оценка абсолютных ошибок при арифметических действиях:

- сложение, вычитание.

- умножение.

- деление.

Оценка относительных ошибок при арифметических действиях:

- сложение и вычитание,

- умножение.

- деление.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.