Файл: Элементы математического моделирования в программных средах MATLAB 5 и Scilab (Андриевский Фрадков).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 05.04.2024

Просмотров: 440

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

О п р е д е л е н и е . Машинным эпсилоном называется наименьшее представимое в компьютере число е, удовлетво-

ряющее условию 1 + е > 1, т.е. € т

= min{e : 1 + е > 1}.

П

р а в и л о

1.

Величина

ет характеризует

наимень-

шую

относительную

погрешность

вычислений и зависит от

конкретного экземпляра

компьютера.

 

Величина ет может быть вычислена с помощью

простой

программы. Такая программа содержится в современных пакетах программ и производит настройку внутренних параметров пакета под данный компьютер. Например, в системе MATLAB, чтобы узнать величину ет Для данного компьютера, достаточно просто набрать команду eps). Лля версии MATLAB 5 PC Windows, £m « 2.22 • 10"16. В микрокалькуляторах и персональных компьютерах величина ет колеблется вблизи 10"7, в зависимости от конкретного компьютера

(при

обычной

точности

вычислений).

Очевидно, что если

т >

10""*, то

на данном

компьютере

нельзя гарантировать,

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

Лва следующих примера показывают, что эквивалентные математические формулы могут быть неэквивалентными по

точности вычислений.

 

 

 

 

 

 

 

 

 

П р и м е р 4.5.3. Пусть ет =

10~2

и требуется

решить

урав-

нение х2 + 9.9х - 1

= 0.

Очевидно, все

 

результаты

можно

округлять до двух значащих

цифр. Если

применять для ре-

шения уравнения х2

+рх

+ q =

0 формулу х1 2 =

^ ^

где

D2

= р2 - 4 т о

получим \[Ъ «

10, хх

« 0.05, х2 «

-9.95.

Однако верный ответ для хх будет хх

 

«

0.1.

Ошибка по-

лучена при вычитании близких чисел.

 

Если

же

вычислять

Xi по эквивалентной

формуле хх 2

= —2

 

 

^ ,—, то

получаем

 

о

 

 

 

 

 

р ± V D

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x i ^

9 Q + Ю ~

0-1-

Правда, по этой формуле х2 будет вычи-

слено уже с двукратной

погрешностью.

 

 

 

 

 

 

167


Пример 4.5.4. Известно, что при статистических

рас-

четах оценку дисперсии случайной величины по

измерени-

2

г д е

®

=

ям можно вычислить по формуле <т =

 

 

2

 

Х

 

jfX^x®»» или по эквивалентной формуле <7 = ^

 

~~ У-

Попробуем оценить дисперсию выборки хх = 1234.1, х2 =

1234.2, х3 = 1234.3.

Вычисляя на

микрокалькуляторе,

име-

ем: х

=

1234.2,

 

х2 = 1.5232496, jEx?

= 15232496 и по пер-

вой формуле <72 = 0.

По второй формуле получаем

результат

<72 = |(0 . 1 2 +0 2 + 0.12) «

0.67 • 10"2, который

легко получить и

устно.

 

 

 

 

При

выборе

формулы

и порядка

 

вычи-

П р а в и л о

2.

 

слений

избегать

вычитания

близких

чисел

и деления

на

малые

величины.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример 4.5.5.

Найдем

решение двух

очень

похожих си-

стем из двух линейных уравнений:

 

 

 

 

 

 

 

 

 

 

Система 1:

 

 

Решение:

 

 

 

 

 

 

 

Г х + 5у

=

17,

 

 

Г х =

17,

 

 

 

 

 

 

 

\

1.5х + 7.501 у =25.5.

\ у = 0.

 

 

 

 

 

 

 

Система 2:

 

 

Решение:

 

 

 

 

 

 

 

Г х + 5у =

17,

 

 

Г х = 32,

 

 

 

 

 

 

 

\

1.5® + 7.499у

= 25.5.

\ у = - 3 .

 

 

 

 

 

Столь большие различия в ответах

возникли

из-за то-

го, что

матрицы

коэффициентов

систем

Л;,г

=

1,2

п л о х о

о б у с л о в л е н ы :

величины Д, = (letЛ; малы.

Действитель-

но, Дх =

0.001,

Д2

= -0.001 (Д = апа22

- ai2a2i).

 

 

 

 

 

П р а в и л о

3.

Избегать плохо

обусловленных

 

матриц.

Если

это не удается,

то использовать

для работы

с ними

спе-

циальные

методы

[112,

104, 20].

 

 

 

 

 

 

 

 

 

Пример 4.5.6.

Числа, представимые,

например,

в типич-

ном микрокалькуляторе, лежат в диапазоне 10~88 < |х| < 1086. При выходе результата действия за левую границу диапазона выдается сообщение "underflow" ("исчезновение порядка"), при выходе за правую границу - "overflow" ("переполнение"). 1 При переполнении обычно говорят, что плохи исход-

1 В пакете MATLAB при исчезновении порядка переменной присваивается нулевое значение, а при переполнении - значение Inf

("бесконечность").

168


ные данные, а при исчезновении порядка полагают результат равным нулю. Но не следует торопиться. Пусть, например, вычисляется величинах при а = Ю""30,Ь= Ю"6 0 ,с= Ю~40, d = Ю-50. Если выполнять действия в следующем порядке: х = а b/c/d, то компьютер сообщит об исчезновении порядка; если вычислить х = \ jcjd а • Ь, то получим переполнение. Если же вычислить, например, х = а/с - fc/d, то получим правильный ответ х = 1. Этот же ответ можно получить, если отмасштабировать переменные, например, умножив на Ю40.

П р а в и л о

4.

При переполнении

или исчезновении

порядка

следует

попытаться

изменить

последовательность

действий,

ввести

масштабные

множители

и т.д. При исчез-

новении порядка не всегда

следует

обнулять результат.

Пример 4.5.7.

Пусть

снова е т

= 10"2

и требуется вычи-

слить сумму

 

 

 

 

 

 

 

 

5 =

100 + 0.1 +

... + 0.1

 

 

 

 

 

2000 слагаемых

 

Если вести суммирование слева направо, то получим 5 = 100, поскольку с учетом округления до двух значащих цифр 100+ +0.1 = 100. Если вычислять справа налево, то после сложения тысячи слагаемых получим 100, дальнейшее прибавление по 0.1 ничего не изменит и результат окажется: 5 = 200, что, конечно, уже ближе к истине. Но правильный результат 5 = 300 можно получить, только если сложить 1000 чисел по 0.1, затем еще 1000 чисел по 0.1, а после этого сложить промежуточные суммы.

П р а в и л о

5. При сложении следует располагать слага-

емые

в порядке

возрастания абсолютных

величину

стараясь,

чтобы

при каждом сложении

порядки

величин

различались

мало.

При необходимости цикл

суммирования разбивается на

несколько более

коротких.

 

 

 

Аналогичное правило действует при перемножении большого числа сомножителей.

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

169


Пусть, например, требуется

вычислить

величину

S =

= YlkLi р" с точностью до Ю-3.

Если вести

вычисления до

тех пор, пока общии член ряда -К не станет меньше 10

, т.е.

к

 

 

 

до г = 32, то получим 5 = 1.610, в то время как на самом

деле S = -g2- = 1.650... Если же попытаться вычислить

таким

образом приближенную сумму ряда J^jfcLi р

т о погрешность

останется бесконечной, как бы мала ни становилась величина

р поскольку ряд расходится.

 

 

 

 

П р а в и л о

6. Нужно

помнить, что остановка

итераци-

онного процесса

хх, х2 ,...

по косвенному

критерию

(например,

по критерию

п

— xn-i|

< е или

|F^rn)|

< е - в задаче

решения

уравнения

F(x)

= 0, по критерию

| | ^ ( £ п)|| < s - в задаче опти-

мизации

f(x)

и т. д.)

не гарантирует

достижения

заданной

погрешности

п — limn^oo хп\ < е.

 

 

 

П р и м е р 4.5.9. [104]. Пусть требуется вычислить

интегра-

лы

 

^

 

 

 

 

 

 

 

Еп=

I

xnex'ldx)

 

п = 1,2,..., 10 при em =

10"7.

 

 

Jо

 

 

 

 

 

 

 

Для величин Еп можно получить рекуррентное соотноше-

ние

 

 

 

Еп

= 1-пЕп-х.

 

 

(4.44)

 

 

 

 

 

 

Попытавшись вычислить интегралы рекуррентно, пользуясь (4.44), получим: Ех = 0.367879,..., Е7 = 0.110160, Es = 0.118720, Eq = —0.0684800, т.е. уже для Е9 получен бессмысленный результат. Причина в том, что начальная ошибка округления быстро накапливается: при вычислении Е2 она умножается на 2, затем наЗ, 4,... ,9. Попробуем переписать формулу (4.44) в другом виде:

Еп.г =

(4.45)

и будем вычислять в обратном порядке, начав с произвольно-

го начального приближения для Еп,

п > 10. Например, начав

с Е2о = 0, получим:

 

 

£,9 = 0.0500000,

Еи=

0.0627322,

Ец

= 0.0500000,

£ 1 3 =

0.0669477,

Е17

= 0.0527778,

Еи=

0.0717733,

Еи

= 0.0557190,

£ „ =

0.0773523,

Ехь

= 0.0590176,

£ 1 0 =

0.0838771,

 

 

Е9=

0.0916123.

170