stringtranslate.com

Численный анализ

Вавилонская глиняная табличка YBC 7289 (ок. 1800–1600 до н. э.) с аннотациями. Приближение квадратного корня из 2 составляет четыре шестидесятеричные цифры, что составляет примерно шесть десятичных цифр. 1 + 24/60 + 51/60 2 + 10/60 3 = 1,41421296... [1]

Численный анализ — это исследование алгоритмов , использующих численную аппроксимацию (в отличие от символьных манипуляций ) для задач математического анализа (в отличие от дискретной математики ). Это исследование численных методов, которые пытаются найти приближенные решения проблем, а не точные. Численный анализ находит применение во всех областях техники и физических наук, а в 21 веке также в науках о жизни и социальных науках, медицине, бизнесе и даже искусстве. Текущий рост вычислительной мощности позволил использовать более сложный численный анализ, обеспечивающий подробные и реалистичные математические модели в науке и технике. Примеры численного анализа включают: обыкновенные дифференциальные уравнения , встречающиеся в небесной механике (предсказывающие движения планет, звезд и галактик), численную линейную алгебру в анализе данных, [2] [3] [4] , а также стохастические дифференциальные уравнения и цепи Маркова для моделирование живых клеток в медицине и биологии.

До появления современных компьютеров численные методы часто полагались на формулы ручной интерполяции с использованием данных из больших печатных таблиц. С середины 20-го века вместо этого компьютеры вычисляют необходимые функции, но многие из тех же формул продолжают использоваться в алгоритмах программного обеспечения. [5]

Численная точка зрения восходит к самым ранним математическим трудам. Табличка из Йельской вавилонской коллекции ( YBC 7289 ) дает шестидесятеричную числовую аппроксимацию квадратного корня из 2 , длины диагонали в единичном квадрате .

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

Приложения

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

История

Область численного анализа возникла на много столетий раньше изобретения современных компьютеров. Линейная интерполяция использовалась уже более 2000 лет назад. Многие великие математики прошлого были озабочены численным анализом, [5] , что очевидно из названий важных алгоритмов, таких как метод Ньютона , интерполяционный полином Лагранжа , метод исключения Гаусса или метод Эйлера . Истоки современного численного анализа часто связывают с работой Джона фон Неймана и Германа Голдстайна 1947 года , [7] [8] , но другие считают, что современный численный анализ восходит к работе Э.Т. Уиттакера в 1912 году . [7]

Публикация НИСТ

Чтобы облегчить вычисления вручную, были созданы большие книги с формулами и таблицами данных, таких как точки интерполяции и коэффициенты функций. Используя эти таблицы, которые для некоторых функций часто рассчитываются с точностью до 16 или более знаков после запятой, можно найти значения для включения в приведенные формулы и получить очень хорошие численные оценки некоторых функций. Канонической работой в этой области является публикация NIST под редакцией Абрамовица и Стегуна , книга объемом более 1000 страниц, содержащая очень большое количество часто используемых формул и функций, а также их значений во многих точках. Значения функций уже не очень полезны, когда доступен компьютер, но большой список формул по-прежнему может быть очень полезен.

Механический калькулятор также был разработан как инструмент для ручных вычислений. Эти калькуляторы превратились в электронные компьютеры в 1940-х годах, а затем выяснилось, что эти компьютеры также полезны для административных целей. Но изобретение компьютера также повлияло на область численного анализа, [5] , поскольку теперь можно было выполнять более длинные и сложные вычисления.

Премия Лесли Фокса в области численного анализа была учреждена в 1985 году Институтом математики и ее приложений .

Ключевые идеи

Прямые и итерационные методы

Прямые методы вычисляют решение задачи за конечное число шагов. Эти методы дали бы точный ответ, если бы они выполнялись в арифметике с бесконечной точностью . Примеры включают метод исключения Гаусса , метод QR-факторизации для решения систем линейных уравнений и симплексный метод линейного программирования . На практике используется конечная точность , и результатом является аппроксимация истинного решения (при условии устойчивости ).

В отличие от прямых методов, итеративные методы не должны завершаться за конечное число шагов, даже если бы была возможна бесконечная точность. Начиная с первоначального предположения, итерационные методы формируют последовательные приближения, которые сходятся к точному решению только в пределе. Тест сходимости, часто включающий невязку , предназначен для того, чтобы решить, когда (надеюсь) было найдено достаточно точное решение. Даже используя арифметику с бесконечной точностью, эти методы не смогут достичь решения за конечное число шагов (в общем). Примеры включают метод Ньютона, метод деления пополам и итерацию Якоби . В вычислительной матричной алгебре итеративные методы обычно необходимы для решения больших задач. [9] [10] [11] [12]

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

В качестве примера рассмотрим задачу решения

3 х 3 + 4 = 28

для неизвестной величины x .

Для итерационного метода примените метод деления пополам к f ( x ) = 3 x 3 − 24. Начальные значения: a = 0, b = 3, f ( a ) = −24, f ( b ) = 57.

Из этой таблицы можно сделать вывод, что решение находится между 1,875 и 2,0625. Алгоритм может вернуть любое число в этом диапазоне с ошибкой менее 0,2.

Кондиционирование

Плохо обусловленная задача: возьмем функцию f ( x ) = 1/( x  − 1) . Обратите внимание, что f (1.1) = 10 и f (1.001) = 1000: изменение x менее 0,1 превращается в изменение f ( x ) почти на 1000. Оценка f ( x ) вблизи x = 1 является ошибкой. условная проблема.

Хорошо обусловленная задача. Напротив, вычисление той же функции f ( x ) = 1/( x  − 1) вблизи x = 10 является хорошо обусловленной задачей. Например, f (10) = 1/9 ≈ 0,111 и f (11) = 0,1: умеренное изменение x приводит к умеренному изменению f ( x ).

Дискретизация

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

Генерация и распространение ошибок

Исследование ошибок составляет важную часть численного анализа. Существует несколько способов внесения ошибки в решение задачи.

Округлять

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

Ошибка усечения и дискретизации

Ошибки усечения возникают, когда итерационный метод завершается или аппроксимируется математическая процедура, и приближенное решение отличается от точного решения. Точно так же дискретизация вызывает ошибку дискретизации , поскольку решение дискретной задачи не совпадает с решением непрерывной задачи. В приведенном выше примере для вычисления решения после десяти итераций вычисленный корень равен примерно 1,99. Следовательно, ошибка усечения составляет примерно 0,01.

Как только ошибка генерируется, она распространяется на все вычисления. Например, операция + на компьютере является неточной. Расчет типа еще более неточный.

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

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

Алгоритм называется численно устойчивым, если ошибка, какова бы ни была ее причина, в ходе расчета не увеличивается значительно. [13] Это происходит, если задача хорошо обусловлена , а это означает, что решение меняется лишь на небольшую величину, если данные задачи изменяются на небольшую величину. [13] Напротив, если проблема «плохо обусловлена», то любая небольшая ошибка в данных перерастет в большую ошибку. [13] Как исходная задача, так и алгоритм, используемый для ее решения, могут быть хорошо обусловленными или плохо обусловленными, и возможна любая комбинация. Таким образом, алгоритм, который решает хорошо обусловленную задачу, может быть либо численно устойчивым, либо численно нестабильным. Искусство численного анализа заключается в поиске стабильного алгоритма решения корректной математической задачи.

Области обучения

Область численного анализа включает в себя множество субдисциплин. Некоторые из основных из них:

Вычисление значений функций

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

Интерполяция, экстраполяция и регрессия

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

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

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

Решение уравнений и систем уравнений

Другая фундаментальная проблема — вычисление решения некоторого заданного уравнения. Обычно различают два случая в зависимости от того, является ли уравнение линейным или нет. Например, уравнение линейное, а не линейное.

Много усилий было вложено в разработку методов решения систем линейных уравнений . Стандартными прямыми методами, т. е. методами, которые используют некоторое матричное разложение , являются исключение Гаусса , LU-разложение , разложение Холецкого для симметричных (или эрмитовых ) и положительно определенных матриц и QR-разложение для неквадратных матриц. Итерационные методы, такие как метод Якоби , метод Гаусса–Зейделя , метод последовательной сверхрелаксации и метод сопряженных градиентов [15], обычно предпочитаются для больших систем. Общие итерационные методы могут быть разработаны с использованием расщепления матрицы .

Алгоритмы поиска корня используются для решения нелинейных уравнений (они названы так потому, что корень функции является аргументом, для которого функция дает ноль). Если функция дифференцируема и производная известна, то метод Ньютона является популярным выбором. [16] [17] Линеаризация — еще один метод решения нелинейных уравнений.

Решение задач на собственные значения или сингулярные значения

Несколько важных проблем можно сформулировать в терминах разложения по собственным значениям или разложения по сингулярным значениям . Например, алгоритм спектрального сжатия изображений [18] основан на разложении по сингулярным значениям. Соответствующий инструмент в статистике называется анализом главных компонент .

Оптимизация

Задачи оптимизации требуют определения точки, в которой данная функция максимизируется (или минимизируется). Часто точка также должна удовлетворять некоторым ограничениям .

Область оптимизации далее делится на несколько подполей в зависимости от формы целевой функции и ограничения. Например, линейное программирование рассматривает случай, когда и целевая функция, и ограничения являются линейными. Известным методом линейного программирования является симплекс-метод .

Метод множителей Лагранжа можно использовать для сведения задач оптимизации с ограничениями к задачам неограниченной оптимизации.

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

Численное интегрирование, в некоторых случаях также известное как числовая квадратура , требует значения определенного интеграла . [19] Популярные методы используют одну из формул Ньютона-Котеса (например, правило средней точки или правило Симпсона ) или квадратуру Гаусса . [20] Эти методы основаны на стратегии «разделяй и властвуй», при которой интеграл на относительно большом наборе разбивается на интегралы на меньших наборах. В более высоких размерностях, где эти методы становятся непомерно дорогими с точки зрения вычислительных усилий, можно использовать методы Монте-Карло или квази-Монте-Карло (см. Интегрирование Монте-Карло [21] ) или, в умеренно больших размерностях, метод разреженных сеток .

Дифференциальные уравнения

Численный анализ также связан с вычислением (приблизительным способом) решения дифференциальных уравнений , как обыкновенных дифференциальных уравнений , так и уравнений в частных производных . [22]

Уравнения в частных производных решаются путем сначала дискретизации уравнения, перенося его в конечномерное подпространство. [23] Это можно сделать с помощью метода конечных элементов , [24] [25] [26] метода конечных разностей , [27] или (особенно в технике) метода конечных объемов . [28] Теоретическое обоснование этих методов часто включает в себя теоремы функционального анализа . Это сводит задачу к решению алгебраического уравнения.

Программное обеспечение

С конца двадцатого века большинство алгоритмов реализовано на различных языках программирования. Репозиторий Netlib содержит различные коллекции программных процедур для числовых задач, в основном на Фортране и C. Коммерческие продукты, реализующие множество различных численных алгоритмов, включают библиотеки IMSL и NAG ; Альтернативой бесплатному программному обеспечению является Научная библиотека GNU .

На протяжении многих лет Королевское статистическое общество опубликовало множество алгоритмов в своей книге «Прикладная статистика» (код этих функций «AS» находится здесь); Аналогично ACM в своих «Транзакциях по математическому программному обеспечению» (код «TOMS» находится здесь). Центр надводных боевых действий ВМФ несколько раз публиковал свою Библиотеку математических подпрограмм (код здесь).

Существует несколько популярных приложений для численных вычислений, таких как MATLAB , [29] [30] [31] TK Solver , S-PLUS и IDL [32] , а также бесплатные альтернативы с открытым исходным кодом, такие как FreeMat , Scilab , [33] [34] GNU Octave (аналог Matlab) и IT++ (библиотека C++). Существуют также такие языки программирования, как R [35] (аналог S-PLUS), Julia , [36] и Python с такими библиотеками, как NumPy , SciPy [37] [38] [39] и SymPy . Производительность варьируется в широких пределах: хотя векторные и матричные операции обычно выполняются быстро, скалярные циклы могут различаться по скорости более чем на порядок. [40] [41]

Многие системы компьютерной алгебры, такие как Mathematica , также выигрывают от наличия арифметики произвольной точности , которая может обеспечить более точные результаты. [42] [43] [44] [45]

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

Смотрите также

Примечания

Рекомендации

Цитаты

  1. ^ «Фотография, иллюстрация и описание корневой (2) таблички из Йельской вавилонской коллекции» . Архивировано из оригинала 13 августа 2012 года . Проверено 2 октября 2006 г.
  2. ^ Деммель, JW (1997). Прикладная численная линейная алгебра. СИАМ . дои : 10.1137/1.9781611971446. ISBN 978-1-61197-144-6.
  3. ^ Сиарлет, PG; Миара, Б.; Томас, Дж. М. (1989). Введение в численную линейную алгебру и оптимизацию . Издательство Кембриджского университета. ISBN 9780521327886. ОКЛК  877155729.
  4. ^ Трефетен, Ллойд; Бау III, Дэвид (1997). Численная линейная алгебра. СИАМ. ISBN 978-0-89871-361-9.
  5. ^ abc Брезински, К.; Вуйтак, Л. (2012). Численный анализ: исторические события в 20 веке. Эльзевир. ISBN 978-0-444-59858-5.
  6. ^ Стивен Блит. «Введение в количественные финансы». 2013. стр. VII.
  7. ^ Аб Уотсон, Джорджия (2010). «История и развитие численного анализа в Шотландии: личный взгляд» (PDF) . Рождение численного анализа . Всемирная научная. стр. 161–177. ISBN 9789814469456.
  8. ^ Бултил, Адемар ; Кулс, Рональд, ред. (2010). Рождение численного анализа. Том. 10. Мировая научная. ISBN 978-981-283-625-0.
  9. ^ Саад, Ю. (2003). Итерационные методы для разреженных линейных систем. СИАМ. ISBN 978-0-89871-534-7.
  10. ^ Хагеман, Луизиана; Янг, DM (2012). Прикладные итерационные методы (2-е изд.). Курьерская корпорация. ISBN 978-0-8284-0312-2.
  11. ^ Трауб, Дж. Ф. (1982). Итерационные методы решения уравнений (2-е изд.). Американское математическое общество. ISBN 978-0-8284-0312-2.
  12. ^ Гринбаум, А. (1997). Итерационные методы решения линейных систем. СИАМ. ISBN 978-0-89871-396-1.
  13. ^ abc Хайэм 2002
  14. ^ Брезински, К.; Залья, MR (2013). Методы экстраполяции: теория и практика. Эльзевир. ISBN 978-0-08-050622-7.
  15. ^ Хестенес, Магнус Р.; Штифель, Эдуард (декабрь 1952 г.). «Методы сопряженных градиентов для решения линейных систем» (PDF) . Журнал исследований Национального бюро стандартов . 49 (6): 409–. дои : 10.6028/jres.049.044.
  16. ^ Эскерро Фернандес, JA; Эрнандес Верон, M.A. (2017). Метод Ньютона: обновленный подход теории Канторовича. Биркхойзер. ISBN 978-3-319-55976-6.
  17. ^ Дефлхард, Питер (2006). Методы Ньютона для нелинейных задач. Аффинная инвариантность и адаптивные алгоритмы. Вычислительная математика. Том. 35 (2-е изд.). Спрингер. ISBN 978-3-540-21099-3.
  18. ^ Огден, CJ; Хафф, Т. (1997). «Разложение по сингулярным значениям и его применение при сжатии изображений» (PDF) . Математика 45 . Колледж Редвудс. Архивировано из оригинала (PDF) 25 сентября 2006 года.
  19. ^ Дэвис, ПиДжей; Рабиновиц, П. (2007). Методы численного интегрирования. Курьерская корпорация. ISBN 978-0-486-45339-2.
  20. ^ Вайсштейн, Эрик В. «Гауссова квадратура». Математический мир .
  21. ^ Гевеке, Джон (1996). «15. Моделирование Монте-Карло и численное интегрирование». Справочник по вычислительной экономике . Том. 1. Эльзевир. стр. 731–800. дои : 10.1016/S1574-0021(96)01017-9. ISBN 9780444898579.
  22. ^ Изерлес, А. (2009). Первый курс численного анализа дифференциальных уравнений (2-е изд.). Издательство Кембриджского университета. ISBN 978-0-521-73490-5.
  23. ^ Эймс, WF (2014). Численные методы решения уравнений в частных производных (3-е изд.). Академическая пресса. ISBN 978-0-08-057130-0.
  24. ^ Джонсон, К. (2012). Численное решение уравнений в частных производных методом конечных элементов. Курьерская корпорация. ISBN 978-0-486-46900-3.
  25. ^ Бреннер, С.; Скотт, Р. (2013). Математическая теория методов конечных элементов (2-е изд.). Спрингер. ISBN 978-1-4757-3658-8.
  26. ^ Стрэнг, Г.; Фикс, Дж.Дж. (2018) [1973]. Анализ метода конечных элементов (2-е изд.). Уэлсли-Кембридж Пресс. ISBN 9780980232783. ОСЛК  1145780513.
  27. ^ Стрикверда, JC (2004). Конечно-разностные схемы и уравнения в частных производных (2-е изд.). СИАМ. ISBN 978-0-89871-793-8.
  28. ^ Левек, Рэндалл (2002). Методы конечных объемов для решения гиперболических задач. Издательство Кембриджского университета. ISBN 978-1-139-43418-8.
  29. ^ Квартерони, А.; Салери, Ф.; Джервасио, П. (2014). Научные вычисления с MATLAB и Octave (4-е изд.). Спрингер. ISBN 978-3-642-45367-0.
  30. ^ Гандер, В.; Гребичек Дж., ред. (2011). Решение задач научных вычислений с использованием Maple и Matlab®. Спрингер. ISBN 978-3-642-18873-2.
  31. ^ Барнс, Б.; Фулфорд, Греция (2011). Математическое моделирование с использованием тематических исследований: подход дифференциальных уравнений с использованием Maple и MATLAB (2-е изд.). ЦРК Пресс. ISBN 978-1-4200-8350-7. ОСЛК  1058138488.
  32. ^ Гамли, Ле (2001). Практическое IDL-программирование. Эльзевир. ISBN 978-0-08-051444-4.
  33. ^ Банкс, К.; Канселье, JP; Делебек, Ф.; Гурса, М.; Никуха, Р.; Стир, С. (2012). Инженерные и научные вычисления с помощью Scilab . Спрингер. ISBN 978-1-4612-7204-5.
  34. ^ Спасибо, РМ; Котари, AM (2019). Цифровая обработка изображений с использованием SCILAB. Спрингер. ISBN 978-3-319-89533-8.
  35. ^ Ихака, Р.; Джентльмен, Р. (1996). «R: язык анализа данных и графики» (PDF) . Журнал вычислительной и графической статистики . 5 (3): 299–314. дои : 10.1080/10618600.1996.10474713. S2CID  60206680.
  36. ^ Безансон, Джефф; Эдельман, Алан; Карпински, Стефан; Шах, Вирал Б. (1 января 2017 г.). «Джулия: свежий подход к численным вычислениям». Обзор СИАМ . 59 (1): 65–98. дои : 10.1137/141000671. hdl : 1721.1/110125 . ISSN  0036-1445. S2CID  13026838.
  37. ^ Джонс Э., Олифант Т. и Петерсон П. (2001). SciPy: научные инструменты с открытым исходным кодом для Python.
  38. ^ Брессерт, Э. (2012). SciPy и NumPy: обзор для разработчиков . О'Рейли. ISBN 9781306810395.
  39. ^ Бланко-Сильва, FJ (2013). Изучение SciPy для численных и научных вычислений . Пакет. ISBN 9781782161639.
  40. Сравнение скорости различных пакетов обработки чисел. Архивировано 5 октября 2006 г. на Wayback Machine.
  41. ^ Сравнение математических программ для анализа данных. Архивировано 18 мая 2016 г. в Португальском веб-архиве. Стефан Штайнхаус, ScientificWeb.com.
  42. ^ Мэдер, RE (1997). Программирование по математике (3-е изд.). Аддисон-Уэсли. ISBN 9780201854497. ОСЛК  1311056676.
  43. ^ Вольфрам, Стивен (1999). Книга MATHEMATICA®, версия 4. Издательство Кембриджского университета . ISBN 9781579550042.
  44. ^ Шоу, WT; Тигг, Дж. (1993). Прикладная математика: с чего начать, как сделать (PDF) . Аддисон-Уэсли. ISBN 978-0-201-54217-2. ОСЛК  28149048.
  45. ^ Мараско, А.; Романо, А. (2001). Научные вычисления с помощью Mathematica: математические проблемы для обыкновенных дифференциальных уравнений. Спрингер. ISBN 978-0-8176-4205-1.

Источники

Внешние ссылки

Журналы

Онлайн тексты

Материал онлайн-курса