Числовое дифференцирование
В численном анализе алгоритмы дифференцирования численного оценивают производную математической функции или подпрограммы функции, используя значения функции и, возможно, другие знания о функции.
Конечные разности [ править ]
Самый простой метод — использовать конечно-разностные аппроксимации.
Простая оценка по двум точкам заключается в вычислении наклона ближайшей секущей линии, проходящей через точки ( x , f ( x )) и ( x + h , f ( x + h )) . [1] При выборе небольшого числа h . h представляет собой небольшое изменение x и может быть как положительным, так и отрицательным Наклон этой линии
Наклон этой секущей линии отличается от наклона касательной на величину, примерно пропорциональную h . Когда h приближается к нулю, наклон секущей линии приближается к наклону касательной. Следовательно, истинная производная f в точке x является пределом значения разностного коэффициента, поскольку секущие линии становятся все ближе и ближе к касательной линии:
Поскольку непосредственная замена на 0 h приводит к неопределенная форма , непосредственное вычисление производной может быть неинтуитивным.
Эквивалентно, наклон можно оценить, используя позиции x - h и x .
Другая двухточечная формула предназначена для вычисления наклона ближайшей секущей линии, проходящей через точки ( x − h , f ( x − h )) и ( x + h , f ( x + h ) ) . Наклон этой линии
Эта формула известна как симметричный разностный коэффициент . В этом случае ошибки первого порядка компенсируются, поэтому наклон этих секущих линий отличается от наклона касательной на величину, примерно пропорциональную . Следовательно, для малых значений h это более точное приближение к касательной, чем односторонняя оценка. Однако, хотя наклон вычисляется в точке x , значение функции в точке x не участвует.
Ошибка оценки определяется выражением
Коэффициент симметричной разности используется в качестве метода аппроксимации производной во многих калькуляторах, включая TI-82 , TI-83 , TI-84 , TI-85 , все из которых используют этот метод с h = 0,001 . [2] [3]
Размер шага [ править ]
Важным соображением на практике, когда функция вычисляется с использованием арифметики с плавающей запятой конечной точности, является выбор размера шага h . Если выбрано слишком маленькое значение, вычитание приведет к большой ошибке округления . На самом деле все формулы конечных разностей плохо обусловлены. [4] и из-за отмены выдаст нулевое значение, если h достаточно мало. [5] Если слишком большое значение, расчет наклона секущей будет более точным, но оценка наклона касательной с использованием секущей может быть хуже. [6]
Для основных центральных разностей оптимальным шагом является извлечение кубического корня из машинного эпсилона . [7] Для формулы числовой производной, вычисляемой по значениям x и x + h , выбор значения h без большой ошибки округления равен небольшого (хотя и не тогда, когда x = 0), где машинный эпсилон ε обычно имеет порядок 2,2 × 10 −16 для двойной точности . [8] Формула для h , которая уравновешивает ошибку округления и секущую ошибку для достижения оптимальной точности: [9]
Для компьютерных вычислений проблемы усугубляются, поскольку, хотя x обязательно содержит представимое число с плавающей запятой с некоторой точностью (32 или 64 бита и т. д .), x + h почти наверняка не будет точно представимым с этой точностью. Это означает, что x + h будет изменено (путем округления или усечения) на ближайшее машинно представимое число, в результате чего ( x + h ) − x будет не равно h ; два вычисления функции не будут находиться на расстоянии ровно h друг от друга. В этом отношении, поскольку большинство десятичных дробей представляют собой повторяющиеся последовательности в двоичном формате (точно так же, как 1/3 в десятичном формате), кажущийся круглым шаг, такой как h = 0,1, не будет круглым числом в двоичном формате; это 0,000110011001100... 2 Возможный подход следующий:
h := sqrt(eps) * x; xph := x + h; dx := xph - x; slope := (F(xph) - F(x)) / dx;
Однако в случае компьютеров средства оптимизации компилятора могут не учитывать детали реальной компьютерной арифметики и вместо этого применять математические аксиомы, чтобы сделать вывод, что dx и h одинаковы. В C директива, указывающая, что xph является изменчивой переменной и подобных языках это предотвратит .
Другие методы [ править ]
Методы высшего порядка [ править ]
Существуют методы высшего порядка аппроксимации производной, а также методы для высших производных.
Ниже приведен пятиточечный метод для первой производной ( пятиточечный трафарет в одном измерении): [10]
Для других конфигураций трафарета и производных порядков Калькулятор конечных разностных коэффициентов представляет собой инструмент, который можно использовать для создания методов аппроксимации производных для любого трафарета с любым производным порядком (при условии, что решение существует).
Высшие производные [ править ]
Используя разностный коэффициент Ньютона,
Методы комплексных переменных [ править ]
Классические конечно-разностные приближения для численного дифференцирования плохо обусловлены. Однако, если — голоморфная функция , имеющая действительное значение на действительной прямой, которую можно вычислить в точках комплексной плоскости вблизи , то есть стабильные методы. Например, [5] первую производную можно вычислить по формуле производной комплексного шага: [12] [13] [14]
Рекомендуемый размер шага для получения точных производных для ряда условий: . [6] Эту формулу можно получить разложением в ряд Тейлора :
Формула производной комплексного шага действительна только для расчета производных первого порядка. Обобщение вышеизложенного для вычисления производных любого порядка использует мультикомплексные числа , что приводит к мультикомплексным производным. [15] [16] [17]
Доступна реализация мультикомплексной арифметики на языке C++. [18]
В общем случае производные любого порядка можно вычислить по интегральной формуле Коши : [19]
Использование комплексных переменных для численного дифференцирования было начато Лайнсом и Молером в 1967 году. [20] Их алгоритм применим к производным более высокого порядка.
Метод, основанный на численном обращении комплексного преобразования Лапласа, был разработан Абате и Дубнером. [21] Алгоритм, который можно использовать, не требуя знаний о методе или характере функции, был разработан Форнбергом. [4]
Дифференциальная квадратура [ править ]
Дифференциальная квадратура — это аппроксимация производных с использованием взвешенных сумм значений функций. [22] [23] Дифференциальная квадратура представляет практический интерес, поскольку позволяет вычислять производные по зашумленным данным. Название по аналогии с квадратурой , что означает числовое интегрирование , где взвешенные суммы используются в таких методах, как метод Симпсона или правило трапеций . Существуют различные методы определения весовых коэффициентов, например, фильтр Савицкого–Голея . Дифференциальная квадратура используется для решения уравнений в частных производных . Существуют и другие методы вычисления производных на основе зашумленных данных. [24]
См. также [ править ]
- Автоматическое дифференцирование . Численные расчеты с производными.
- Пятиточечный трафарет - точка и четыре ее ближайших соседа.
- Фильтр Савицкого-Голея — алгоритм сглаживания точек данных.
- Численное интегрирование - Методы вычисления определенных интегралов.
- Численные обыкновенные дифференциальные уравнения — методы, используемые для поиска численных решений обыкновенных дифференциальных уравнений.
- Числовое сглаживание и дифференциация — алгоритм сглаживания точек данных.
- Список программного обеспечения для численного анализа
Ссылки [ править ]
- ^ Ричард Л. Берден, Дж. Дуглас Фейрс (2000), Численный анализ , (7-е изд.), Брукс/Коул. ISBN 0-534-38216-9 .
- ^ Кэтрин Клипперт Мерсет (2003). Окна в преподавании математики: примеры средних и средних классов . Издательство педагогического колледжа. п. 34 . ISBN 978-0-8077-4279-2 .
- ^ Тамара Лефкур Руби; Джеймс Селлерс; Лиза Корф; Джереми Ван Хорн; Майк Манн (2014). Каплан А. П. Исчисление AB и BC 2015 . Каплан Паблишинг. п. 299. ИСБН 978-1-61865-686-5 .
- ↑ Перейти обратно: Перейти обратно: а б Численное дифференцирование аналитических функций, Б. Форнберг – Транзакции ACM в математическом программном обеспечении (TOMS), 1981.
- ↑ Перейти обратно: Перейти обратно: а б Использование комплексных переменных для оценки производных действительных функций, У. Сквайр, Г. Трапп – SIAM REVIEW, 1998.
- ↑ Перейти обратно: Перейти обратно: а б Мартинс, Хоаким РРА; Нин, Эндрю (01 октября 2021 г.). Оптимизация инженерного проектирования (PDF) . Издательство Кембриджского университета. ISBN 978-1108833417 .
- ^ Зауэр, Тимоти (2012). Численный анализ . Пирсон. стр.248.
- ^ Следуя числовым рецептам в C , глава 5.7 .
- ^ с. 263 .
- ^ Абрамовиц и Стегун, Таблица 25.2.
- ^ Шилов, Георгий. Элементарный вещественный и комплексный анализ .
- ^ Мартинс, JRRA; Стурдза, П.; Алонсо, Джей-Джей (2003). «Приближение комплексной производной». Транзакции ACM в математическом программном обеспечении . 29 (3): 245–262. CiteSeerX 10.1.1.141.8002 . дои : 10.1145/838250.838251 . S2CID 7022422 .
- ^ Дифференциация без (без) разницы Николаса Хайэма
- ^ статья из блога MathWorks , опубликованная Кливом Молером.
- ^ «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 9 января 2014 г. Проверено 24 ноября 2012 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ Лантуан, Г.; Рассел, Р.П.; Дарджент, Т. (2012). «Использование мультикомплексных переменных для автоматического вычисления производных высокого порядка». АКМ Транс. Математика. Программное обеспечение . 38 (3): 1–21. дои : 10.1145/2168773.2168774 . S2CID 16253562 .
- ^ Верхейлевеген, А. (2014). «Вычисление производных более высокого порядка с использованием метода многокомплексных шагов» (PDF) .
- ^ Белл, Айдахо (2019). «mcx (библиотека мультикомплексной алгебры)» . Гитхаб .
- ^ Абловиц, М.Дж., Фокас, А.С. (2003). Комплексные переменные: введение и применение. Издательство Кембриджского университета . Проверьте теорему 2.6.2.
- ^ Лайнесс, Дж. Н.; Молер, CB (1967). «Численное дифференцирование аналитических функций». СИАМ Дж. Нумер. Анал . 4 (2): 202–210. Бибкод : 1967SJNA....4..202L . дои : 10.1137/0704019 .
- ^ Абате, Дж; Дубнер, Х. (март 1968 г.). «Новый метод разложения функций в степенной ряд». СИАМ Дж. Нумер. Анал . 5 (1): 102–112. Бибкод : 1968SJNA....5..102A . дои : 10.1137/0705008 .
- ^ Дифференциальная квадратура и ее применение в технике: Инженерные приложения, Чанг Шу, Springer, 2000, ISBN 978-1-85233-209-9 .
- ^ Расширенные дифференциальные квадратурные методы, Инъянь Чжан, CRC Press, 2009, ISBN 978-1-4200-8248-7 .
- ^ Анерт, Карстен; Абель, Маркус (2007). «Численная дифференциация экспериментальных данных: локальные и глобальные методы». Компьютерная физика. Коммуникации . 177 (10): 764–774. Бибкод : 2007CoPhC.177..764A . CiteSeerX 10.1.1.752.3843 . дои : 10.1016/j.cpc.2007.03.009 . ISSN 0010-4655 . S2CID 15129086 .