Сделай Сам Свою Работу на 5

Свойства вычислительных задач и алгоритмов





Будем считать, что постановка задачи включает в себя задание множества допустимых входных данных Х и множество возможных решений Y. Цель вычислительной задачи состоит в нахождении решения y ÎY по заданному входному данному xÎX. Предположим также, что для оценки величин погрешностей приближенных входных данных х* и приближенного решения у* введены абсолютные и относительные погрешности D(х*), D(у*), d(х*), d(у*).

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

1) её решение y ÎY существует при любом входном данном xÎX;

2) это решение единственно;

3) решение устойчиво по отношению к малым возмущениям входных данных.

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

Решение y ÎY вычислительной задачи называется устойчивым по входным данным хÎY, если оно зависит от входных данных непрерывным образом. Иными словами, для любого e > 0 существует d = d(e) > 0, что всякому входному данному х*, удовлетворяющему условию D(х*) < d соответствует приближенное решение у*, для которого D(у*) < e. Таким образом, решение устойчивой вычислительной задачи теоретически можно найти со сколь угодно высокой точностью, если обеспечена достаточно высокая точность входных данных.



Приведем простейшие примеры устойчивых и неустойчивых задач.

Пример 1.5. Дано приведенное квадратное уравнение z2 + pz + q = 0. Входными данными задачи (то, что выше обозначалось как x) являются значения коэффициентов р и q, (p, q) = x. Согласно сведениям из школьной алгебры, решения уравнения определяются по формулам

. (1.1)

Это выходные данные (z1 , z2) = y. Очевидно, оба корня являются непрерывными функциями коэффициентов, следовательно, решение данной задачи устойчиво.

Пример 1.6. Решение задачи о вычислении ранга матрицы в общем случае неустойчиво. В самом деле, ранг матрицы равен 1, поскольку det A = 0 и в ней имеется ненулевой элемент. Однако сколь угодно малое возмущение элемента а22 на величину e ¹ 0 приведет к невырожденной матрице , ранг которой уже равен 2.

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



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

Пример 1.7. Имеем систему линейных уравнений:

.

Ее решение: u = 12.1; v = – 9.09. Округлим коэффициенты правой части до целых, получим систему

,

решение которой: u = 1; v = 1. Видим, что незначительное искажение условий задачи сильно изменило решение, даже поменяло знаки, т.е. данная задача плохо обусловлена.

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

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



D(у*) £ nD ×D(х*),

то величина nD называется абсолютным числом обусловленности. Если же выполняется неравенство

d(у*) £ nd × d(х*),

то величина nd называется относительным числом обусловленности.

Для плохо обусловленной задачи nD >>1 и nd >> 1. В некотором смысле неустойчивость задачи – это крайнее проявление плохой обусловленности, когда n = ¥.

Пример 1.8. Оценим величину обусловленности задачи вычисления определенного интеграла .

Пусть f*(x) – приближенно заданная подынтегральная функция, для которой справедлива оценка . Тогда

D(I*) = | I – I*| = £ (b – a) ×D(f*).

Полученное неравенство означает, во-первых, что задача вычисления определенного интеграла устойчива, т.к. для любого e > 0 неравенство D(I*) < e будет выполнено, если выполняется условие D(f*) < e / (b – a).

Во-вторых, полученное неравенство означает, что абсолютное число обусловленности задачи вычисления определенного интеграла равно nD = (b – a).

Корректность алгоритмов.Вычислительный алгоритм называется корректным, если выполнены три требования:

1) он позволяет после выполнения конечного числа элементарных для вычислительной машины операций преобразовать любое входное данное xÎX в результат y ÎY;

2) результат устойчив по отношению к малым возмущениям входных данных;

3) результат обладает вычислительной устойчивостью.

Если хотя бы одно требование не выполнено, то будем называть алгоритм некорректным. Обсудим эти требования.

Требование устойчивости алгоритма по входным данным аналогично требованию устойчивости вычислительной задачи и означает, что при отсутствии вычислительной погрешности результат зависит от входных данных непрерывным образом.

Пример 1.9. Пусть алгоритм предназначен для вычисления вещественных корней приведенного квадратного уравнения z2 + pz + q = 0 с коэффициентами, удовлетворяющими условию d = p2 – 4q ³ 0. Если в нем используется формула (1.1), то этот алгоритм некорректен. В самом деле, значение d*, отвечающее приближенно заданным коэффициентам p* и q* может оказаться отрицательным, если d » 0. Тогда решение завершится аварийным остановом при попытке извлечь квадратный корень из отрицательного числа. Если же в формуле (1.1) заменить d на max(d; 0), то алгоритм становится корректным.

Назовем алгоритм вычислительно устойчивым, если погрешность результата мала при малой погрешности округления (вычислительной погрешности).

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

Пример 1.10. Пусть величина уn для n = 1, 2,… вычисляется по рекуррентной формуле yn = anyn–1 + bn, а значение у0 задано. Тогда приближенные значения у*n содержат ошибки, удовлетворяющие равенству yn– y*n= an(yn–1 – y*n–1). Следовательно, D(y*n) = |an|×D(y*n–1). Отсюда при | an | < 1 алгоритм устойчив по входным данным, поскольку D(y*n) £ D(y*n–1) для всех n. При | an | ³ q >1 алгоритм неустойчив, поскольку D(y*n) ³ qn ×D(y*0) и погрешность неограниченно возрастает при n ® ¥.

Пример 1.11. Пусть требуется составить таблицу значений определенных интегралов для n = 1, 2,…. Интегрируя по частям, получим рекуррентную формулу

In = n In–1 – 1 (1.2)

при начальном условии I0 = e – 1 » 1.71828, которое легко находится непосредственно.

Результаты примера 1.10. предупреждают нас, что расчет по формулам (1.2) неустойчив, т.к. an = n >1. Действительно, при абсолютно точных вычислениях погрешность в 6-й значащей цифре начального условия приводит к тому, что I*10 = – 6.536, в то время как все искомые значения интегралов, очевидно, положительны.

Попробуем изменить алгоритм, чтобы сделать его устойчивым. Перепишем (1.2) в виде

(1.3)

и будем вести вычисления в обратном порядке, начиная, например с n = 54, положив I54 = 0. Так как , то D(I*54) £ 0.05. При вычислении I53 эта ошибка уменьшится в n раз, т.е. в 54 раза, при вычислении I52 – еще в 53 раза и т.д. В результате интегралы при n = 50, … 1 будут вычислены с 7-ю верными значащими цифрами. То есть, при использовании формул (1.3), ошибки не растут, а затухают и модифицированный алгоритм устойчив.

Если говорить о связи и различии корректности вычислительных задач и вычислительных алгоритмов, то общий вывод таков. Если алгоритм, предназначенный для решения хорошо обусловленной задачи, оказался неустойчивым, то его следует признать неудовлетворительным и попытаться построить более качественный алгоритм. В примерах 1.9 и 1.11 это удалось сделать достаточно просто. Однако для плохо обусловленных задач дело обстоит иначе. Здесь требуется серьезное переосмысление постановки вычислительной задачи, поскольку решение плохо обусловленной задачи является объективно плохим и даже самый хороший алгоритм не улучшит его. Так, в примерах 1.6 и 1.7 все расчеты проводились абсолютно точно, тем не менее, результат отрицателен.

 

КОНТРОЛЬНЫЕ ВОПРОСЫ И ЗАДАНИЯ

1^. Необходимо определить значение х, при котором достигается минимум функции у(х) = |x| + b×|x – 2|, где b » 1. Что можно сказать об устойчивости и обусловленности этой задачи?

2. Оцените корректность “школьных” алгоритмов умножения чисел в столбик и деления их “углом”.

3. Для примера 1.7 по результатам решения обоих вариантов оцените число обусловленности данной системы уравнений.

Примеры решения заданий

1. Исходным данным в этой задаче является значение коэффициента b, а координата xmin точки минимума – выходным данным.

Как известно, производная функции , см. рис. 1.2. Отсюда . В точке x = 0 знак не определён, поэтому приравнивать к нулю не имеет смысла. Лучше воспользоваться другим известным свойством производной: при переходе через точку минимума производная функции меняет знак с «–» на «+» (см. рис. 1.2).

 

Рис. 1.2. Графики функций |x| (красный) и sign(x) (синий)

 

Построив графики при b > 1 и b <1 (Рис. 1.3 и 1.4) несложно убедиться, что при b > 1 меняет знак при x = 2, а при b < 1 меняет знак при x = 0. Это значит, что при бесконечно малом изменении b около среднего значения b = 1 положение точки минимума скачком меняется с xmin = 0 на xmin = 2, т.е. Dxmin = 2 при Db ® 0.

Рис. 1.3. При b > 1 меняет знак при x = 2.

 

Рис. 1.4. При b < 1 меняет знак при x = 0.

 

Подобное же явление имело место в примере 1.6, в котором при сколь угодно малом изменении исходного данного результат скачком менялся с 0 на 1, на основании чего мы делали вывод, что задача примера 1.6 неустойчива.

Ответ: задача неустойчива.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.