Вычислительная устойчивость: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
м Удаление принудительных пробелов в формулах по ВП:РДБ.
перевод английской преамбулы
Строка 1: Строка 1:
{{Другие значения|устойчивость}}
{{Другие значения|устойчивость}}

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

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

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

Противоположным явлением является неустойчивость.
Как правило, алгоритм включает в себя приближенный метод, и в некоторых случаях можно доказать,
что алгоритм будет приближаться к правильному решению в некотором пределе
(при использовании на самом деле [[действительное число|действительных чисел]], а не [[Число с плавающей запятой|чисел с плавающей запятой]]).
Даже в этом случае нет гарантии, что он будет сходиться к правильному решению,
потому что ошибки округления или усечения с плавающей точкой могут расти, а не уменьшаться,
что приведет к экспоненциальному росту отклонения от точного решения.<ref>{{cite book | title=Numerical Algorithms with C | author1=Giesela Engeln-Müllges|author2= Frank Uhlig |others= M. Schon (Translator), F. Uhlig (Translator) | edition=1 |date=2 July 1996 | publisher=Springer | pages=10 | isbn=978-3-540-60530-0 | url=https://books.google.com/books?id=HurESoDQljcC&pg=PA10#v=onepage&q&f=false}}</ref>


== Определение ==
== Определение ==

Версия от 03:06, 13 декабря 2018

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

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

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

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

Определение

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

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

Пример 1: система уравнений

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


Решением является пара чисел

«Возмутим» правую часть первого уравнения на 0,01 (вместо 11 напишем 11,01) и получим новую, «возмущённую» систему, решением которой является пара чисел {11,01; 0,00}, не имеющая ничего общего с решением невозмущённой системы. Здесь изменение значения одного параметра меньше чем на привело к совсем другому решению.

См. также

  1. Giesela Engeln-Müllges. Numerical Algorithms with C / Giesela Engeln-Müllges, Frank Uhlig. — 1. — Springer, 2 July 1996. — P. 10. — ISBN 978-3-540-60530-0.