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

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

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

Добавлен: 02.08.2019

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

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

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

ЛР 1. Распространение ошибок в вычислительных процедурах.

131

величине).

3

k

Теперь посмотрим на мантиссу:

2

52

≈ 4, 5 · 10

15

, таким образом, ман-

тисса содержит 15-16 десятичных знаков; все, что вылезет за эти пределы,

будет отброшено. Установите формат отображения с плавающей точкой:

format long e, выполните sqrt(2) (квадратный корень из 2). Посчитай-

те число выданных цифр.

Точность

Байты

M

0

(маш.ноль)

M

(маш. бесконечность)

Одинарная

4

1, 2

· 10

−38

3, 4

· 10

38

Двойная

8

2, 2

· 10

−308

1, 8

· 10

308

3

k

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

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

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

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

отброшено! Поэтому, если сложить 10ˆ8+10ˆ-7 в мантиссу уложатся 15

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

10ˆ8+10ˆ-8, то малое число выйдет за разрядную сетку, и получим те же

10ˆ8 (проверьте).

3

k

Получается парадоксальная ситуация: давайте прибавим к 1 малое

число 10ˆ-16, но последовательно 10ˆ17 раз

1

акие вычисления харак-

терны для задач ЧМ — вычисление рядов, разнообразные итерационные,

разностные задачи...). Легко найти ответ

11, однако, машинная арифме-

тика даёт 1 — ошибка 1000%! Если бы мы начали с конца, т.е. сначала

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

ный результат. Таким образом, машинное сложение, в общем случае, не

коммутативно.

3

k

Знание этих фактов позволяет протестировать компьютер на по-

грешность вычислении. Найдем значение выражения

1+ε

−1

ε

при

ε = 2

−n

,

n = 0, 1, 2, . . .. С точки зрения аналитической математики значение этого

1

Цикл из

10

17

итераций на компьютерах невысокой производительности может вы-

числяться долго. Чтобы убедиться в округлении мантиссы достаточно меньшего коли-
чества итераций, например

10

6

. Прервать длительные вычисления в Matlab можно

клавишами Ctrl+Break.


background image

ЛР 1. Распространение ошибок в вычислительных процедурах.

132

выражения постоянно и равно единице для любых

n. Сделайте предпо-

ложения, при каком значении

n это выражение перестанет отличаться

от единицы, чему будет равно; напишите программу, реализующую этот

алгоритм с пошаговой выдачей номера шага, значения

ε и результата вы-

ражения.

4

k

Рассмотрим погрешности численных методов. Построим алгоритм

вычисления интеграла

I

n

=

R

1

0

x

n

e

x

−1

dx, n = 1, 2, 3, . . . Интегрируя по

частям, находим:

I

1

=

1

R

0

xe

x

−1

dx = xe

x

−1

|

1

0

1

R

0

e

x

−1

dx =

1
e

I

2

=

1

R

0

x

2

e

x

−1

dx = x

2

e

x

−1

|

1

0

− 2

1

R

0

xe

x

−1

dx = 1

− 2I

1

· · ·

I

n

=

1

R

0

x

n

e

x

−1

dx = x

n

e

x

−1

|

1

0

− n

1

R

0

x

n

−1

e

x

−1

dx = 1

− nI

n

−1

Вычислите значения интегралов, до

n = 30. Заметьте, что подинтеграль-

ная функция на всем отрезке интегрирования неотрицательна, следова-

тельно, и значение интеграла — положительное число. Более того, подын-

тегральная функция на данном интервале ограничена функцией

y = 1,

т.е. значение интеграла не может превышать единицы. Посмотрите, как

это согласуется с полученными результатами. Попытайтесь на основе по-

лученных сведений о погрешностях объяснить данный феномен.

5

k

Напишите функцию вычисления значения синуса в виде конечной

суммы ряда

2

(

sin x =

P

k=0

(

−1)

k x

2k+1

(2k+1)!

). По признаку Лейбница погреш-

ность вычисления сходящегося знакопеременного ряда не превышает по

абсолютной величине первого из отброшенных членов. Вычисления чле-

нов ряда проводите до вычисления члена по модулю не превышающего

2

При работе со степенными рядами на компьютере для сокращения объёма вы-

числений полезно рассмотреть выражение

u

n+1

/u

n

. Например, в случае синуса:

u

n

=

(

−1)

n

x

2n+1

(2n + 1)!

и

u

n+1

= (

−1)

n+1

x

2n+3

(2n + 3)!

, откуда

u

n+1

u

n

=

− x

2

(2n + 2)(2n + 3)

. Получаем,

u

0

= x, u

1

= u

0

·

− x

2

(2

· 0 + 2)(2 · 0 + 3)

,

u

2

= u

1

· . . . и т.д. Такой подход позволяет обой-

тись без вычисления «лишних» степеней и факториалов, а следовательно, избежать
больших чисел в числителе и знаменателе.


background image

ЛР 2. Методы дихотомии, Ньютона, простых итераций.

133

10

−17

. Вычислите значение синуса в точках

0,

π

3

,

π

2

, π, 2π, убедитесь, что

полученные значения с высокой степенью точности совпадают с действи-

тельным значением синуса в этих точках. Далее проведите вычисления в

точках

12π, 13π, 14π, выводя результаты по шагам (посчитанный член и

частичную сумму ряда). Полученные результаты объясняются погрешно-

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

ся к отрезку

[0;

π

2

].

3.2

ЛР 2. Методы дихотомии, Ньютона, простых итераций.

Решение данных уравнений подразумевает два этапа:

1. Локализация корней — выделение отрезков, на которых находится не

более одного корня.

2. Поиск корня с заданной точностью.

В качестве функции

f (x) рассмотрим полином: f (x) = x

3

− 3x

2

− 9x − 5.

Известно, что корни полинома

P

n

(x) =

P

n
k=0

a

k

x

k

(в общем случае ком-

плексные) лежат внутри круга

|x

p

|

6

1 +

1

|a

n

|

max(

|a

0

|, |a

1

|, . . . , |a

n

−1

|). Мы

только что применили аналитический подход к сужению области нахож-

дения корней.

3

k

Напишите файл-функцию f.m и постройте график функции на от-

резке

[

−10; 10], включив командой grid on отображение линий сетки. Вы-

делите отрезки, содержащие нули функции (графический способ это один

из методов локализации корней). Очевидно, функция имеет корни одинар-

ной и двойной кратности. Запишите вектор p, содержащий коэффициенты

полинома, и найдите его корни, выполнив команду roots(p).

3

k

Напишите программу, реализующую нахождение корня одинарной

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

тод дихотомии предполагает, что значения функции на концах отрезка

различаются по знаку. Выведите на экран число итераций.

3

k

Напишите программу нахождения решений уравнения

f (x) = 0 ме-

тодом Ньютона и используйте её для поиска всех корней полинома. Вы-


background image

ЛР 2. Методы дихотомии, Ньютона, простых итераций.

134

ведите на экран число итераций.

4

k

Для кратного корня использовать модифицированный метод Нью-

тона. Выведите на экран число итераций.

3

k

Найдем методом простых итераций корни уравнения

x

2

− a = 0

(квадратный корень из числа

a). Приведем уравнение к виду, удобному

для использования метода:

x =

1
2

a
x

+ x

. Можно убедиться, что правая

часть уравнения удовлетворяет условию сходимости метода (в отличие от

таких представлений как:

x = x

2

+ x

− a, x =

a
x

). Напишите программу

вычисления квадратного корня с машинной точностью.

4

k

Исследовать область сходимости представления

x = x

2

+ x

− a. Про-

извести расчёт в найденной области и за её пределами.

3

k

В Matlab для решения уравнений вида f (x) = 0 есть функция

fzero, в качестве параметров которой передаётся имя файл-функции и

начальное приближение корня (или отрезок его содержащий). Обратите

внимание, что fzero так же как и метод дихотомии требует, чтобы при

переходе через корень функция меняла знак (например, с её помощью не

удастся найти нули функции,

f (x) = sin x + 1, корни полинома двойной

кратности и т.д.)

5

k

Сделайте предположения о том, где находятся корни уравнения

sin x =

x/2 и найдите их, используя все изученные методы.

Реализация функциями MATLAB

fzero — поиск нулей функции

roots — поиск корней полинома

Контрольные вопросы

1. Из каких соображений, и какими методами можно локализовать ис-

комый корень?

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

ловинного деления и в методе Ньютона? Чем различаются условия


background image

ЛР 3. Интерполяция функций. Полиномы Лагранжа, Ньютона.

135

прекращения итераций?

3. Почему с помощью метода половинного деления не удаётся находить

корни двойной кратности?

4. Сравните (перечислите преимущества и недостатки) методов Ньютона

и половинного деления.

5. Назовите условия применимости метода Ньютона.

6. Оцените скорость сходимости в методе Ньютона при поиске корней

одинарной и двойной кратности.

7. Назовите условия сходимости метода простых итераций.

8. Каким образом можно априорно вычислить примерное количество

итераций, требуемых для нахождения корня с заданной точностью,

для всех изученных методов?

3.3

ЛР 3. Интерполяция функций. Полиномы Лагранжа, Нью-
тона.

Пусть есть прибор, который в дискретные моменты времени выдаёт сиг-

нал по закону

f (t) = sin πt. Допустим, наблюдатель зарегистрировал пять

отсчётов в моменты времени

t

i

=

i

4

,

i = 0, 1, 2, 3, 4. Задачей наблюдателя

(который не знает закона выдачи сигнала) является получение прибли-

жённого значения функции на отрезке

[0, 1] в любой момент времени.

3

k

Используя линейную интерполяцию, найдите значения функции в

точках:

t = 0,

1
6

,

1
3

,

1
2

и сравните с реальным значением синуса в этих точ-

ках. Постройте графики синуса и ломаной, проходящей через пять задан-

ных точек. Отметьте, насколько сильно они различаются в разных частях

графика. Чем это обусловлено?

3

k

Постройте по заданным пяти точкам интерполяционный многочлен

Лагранжа или Ньютона и, используя его, найдите значения функции в

точках

t = 0,

1
6

,

1
3

,

1
2

, Сравните результаты со значениями, полученными