Численное дифференцирование - Numerical differentiation
В числовой анализ, численное дифференцирование описывает алгоритмы для оценки производная из математическая функция или функция подпрограмма используя значения функции и, возможно, другие знания о функции.
Конечные различия
Самый простой метод - использовать конечно-разностные аппроксимации.
Простая двухточечная оценка заключается в вычислении наклона ближайшего секущая линия через точки (Икс, ж(Икс)) и (Икс + час, ж(Икс + час)).[1] Выбираем небольшое количество час, час представляет собой небольшое изменение в Икс, и он может быть как положительным, так и отрицательным. Наклон этой линии равен
Это выражение Ньютон с коэффициент разницы (также известный как разделенная разница ).
Наклон этой секущей линии отличается от наклона касательной на величину, примерно пропорциональную час. В качестве час приближается к нулю, наклон секущей линии приближается к наклону касательной. Следовательно, истинное производная от ж в Икс является пределом значения коэффициента разности, когда секущие линии становятся все ближе и ближе к касательной:
Так как сразу замена 0 для час приводит к неопределенная форма , вычисление производной напрямую может быть неинтуитивным.
Точно так же наклон можно оценить, используя положения (Икс − час) и Икс.
Другая двухточечная формула - вычислить наклон ближайшей секущей линии, проходящей через точки (Икс - час, ж(Икс − час)) и (Икс + час, ж(Икс + час)). Наклон этой линии равен
Эта формула известна как симметричный коэффициент разности. В этом случае ошибки первого порядка аннулируются, поэтому наклон этих секущих линий отличается от наклона касательной на величину, примерно пропорциональную . Следовательно, при малых значениях час это более точное приближение к касательной, чем односторонняя оценка. Однако, хотя наклон рассчитывается при Икс, значение функции при Икс не участвует.
Ошибка оценки определяется выражением
- ,
куда это какая-то точка между и .Эта ошибка не включает ошибка округления из-за представленных чисел и выполнения расчетов с ограниченной точностью.
Симметричный коэффициент разности используется в качестве метода аппроксимации производной в ряде калькуляторов, включая ТИ-82, ТИ-83, ТИ-84, ТИ-85, все из которых используют этот метод с час = 0.001.[2][3]
Размер шага
Важное соображение на практике, когда функция вычисляется с использованием арифметика с плавающей запятой выбор размера шага, час. Если выбрано слишком маленькое, вычитание даст большой ошибка округления. Фактически, все конечно-разностные формулы плохо воспитанный[4] и из-за отмены даст нулевое значение, если час достаточно мала.[5] Если значение слишком велико, расчет наклона секущей линии будет более точным, но оценка наклона касательной с использованием секущей может быть хуже.
Для основных центральных разностей оптимальным шагом является кубический корень из машина эпсилон.[6]Для формулы численной производной, рассчитанной при Икс и Икс + час, выбор для час то, что мало без большой ошибки округления, (но не когда Икс = 0), где машина эпсилон ε обычно порядка 2,2×10−16 за двойная точность.[7] Формула для час который уравновешивает ошибку округления с ошибкой секущей для оптимальной точности[8]
(но не когда ), и для его использования потребуется знание функции.
За одинарная точность проблемы усугубляются тем, что, хотя Икс может быть представимое число с плавающей запятой, Икс + час почти наверняка не будет. Это означает, что Икс + час будет изменено (округлением или усечением) на ближайшее машинно-представимое число, в результате чего (Икс + час) − Икс буду нет равный час; две оценки функции не будут точно час Кроме. В этом отношении, поскольку большинство десятичных дробей представляют собой повторяющиеся последовательности в двоичном формате (точно так же, как 1/3 в десятичном), казалось бы, круглый шаг, такой как час = 0,1 не будет круглым числом в двоичной системе; это 0,000110011001100 ...2 Возможный подход следующий:
ч: = sqrt (eps) * x; xph: = x + h; dx: = xph - x; наклон: = (F (xph) - F (x)) / dx;
Однако с компьютерами оптимизация компилятора средства могут не уделять внимания деталям реальной компьютерной арифметики и вместо этого применять аксиомы математики для вывода, что dx и час одинаковые. С C и подобных языках, директива, которая xph это летучая переменная предотвратит это.
Другие методы
Методы высшего порядка
Существуют методы высшего порядка для приближения производной, а также методы для высших производных.
Ниже приведен метод пяти точек для первой производной (пятиточечный трафарет в одном измерении):[9]
куда .
Для других конфигураций трафаретов и производных заказов Калькулятор конечно-разностных коэффициентов - это инструмент, который можно использовать для создания методов приближения производных для любого шаблона с любым порядком производных (при условии, что решение существует).
Высшие производные
Используя коэффициент разности Ньютона,
может быть показано следующее[10] (за п> 0):
Методы комплексных переменных
Классические конечно-разностные приближения для численного дифференцирования плохо обусловлены. Однако если это голоморфная функция, с действительными значениями на действительной прямой, которые могут быть вычислены в точках комплексной плоскости вблизи , то есть стабильный методы. Например,[5] первая производная может быть вычислена по формуле комплексной производной:[11][12][13]
Эта формула может быть получена Серия Тейлор расширение:
Формула комплексной производной действительна только для вычисления производных первого порядка. Обобщение вышеизложенного для вычисления производных любого порядка использует многокомплексные числа, приводя к многокомплексным производным.[14]
Как правило, производные любого порядка могут быть рассчитаны с использованием Интегральная формула Коши[15]:
где выполняется интеграция численно.
Использование комплексных переменных для численного дифференцирования было начато Лайнессом и Молером в 1967 году.[16] Метод, основанный на численном обращении комплекса Преобразование Лапласа был разработан Abate и Dubner.[17] Форнберг разработал алгоритм, который можно использовать, не требуя знаний о методе или характере функции.[4]
Дифференциальная квадратура
Дифференциальная квадратура - это приближение производных с использованием взвешенных сумм значений функций.[18][19] Название аналогично квадратура, смысл численное интегрирование, где взвешенные суммы используются в таких методах, как Метод Симпсона или Трапецеидальная линейка. Существуют различные методы определения весовых коэффициентов. Дифференциальная квадратура используется для решения уравнения в частных производных.
Смотрите также
- Автоматическая дифференциация
- Пятиточечный трафарет
- Численное интегрирование
- Численные обыкновенные дифференциальные уравнения
- Численное сглаживание и дифференцирование
- Список программного обеспечения для численного анализа
Рекомендации
- ^ Ричард Л. Берден, Дж. Дуглас Фейрес (2000), Числовой анализ, (7-е изд.), Брукс / Коул. ISBN 0-534-38216-9.
- ^ Кэтрин Клипперт Мерсет (2003). Окна в обучении математике: кейсы для средних и средних классов. Педагогический колледж Press. п.34. ISBN 978-0-8077-4279-2.
- ^ Тамара Лефкур Руби; Джеймс Селлерс; Лиза Корф; Джереми Ван Хорн; Майк Манн (2014). Каплан А.П. Расчет AB и BC 2015. Kaplan Publishing. п. 299. ISBN 978-1-61865-686-5.
- ^ а б Численное дифференцирование аналитических функций, Б. Форнберг - транзакции ACM в математическом программном обеспечении (TOMS), 1981.
- ^ а б Использование комплексных переменных для оценки производных вещественных функций, У. Сквайр, Г. Трапп - ОБЗОР SIAM, 1998.
- ^ Зауэр, Тимоти (2012). Числовой анализ. Пирсон. стр.248.
- ^ Следующий Числовые рецепты в C, Глава 5.7.
- ^ п. 263.
- ^ Abramowitz & Stegun, Таблица 25.2.
- ^ Шилов, Георгий. Элементарный действительный и комплексный анализ.
- ^ Мартинс, Дж. Р. Р. А .; Sturdza, P .; Алонсо, Дж. Дж. (2003). «Комплексно-ступенчатое приближение производной». Транзакции ACM на математическом ПО. 29 (3): 245–262. CiteSeerX 10.1.1.141.8002. Дои:10.1145/838250.838251.
- ^ Дифференциация без разницы к Николас Хайэм
- ^ статья из MathWorks блог, опубликованный Клив Молер
- ^ «Архивная копия» (PDF). Архивировано из оригинал (PDF) на 2014-01-09. Получено 2012-11-24.CS1 maint: заархивированная копия как заголовок (связь)
- ^ Абловиц, М. Дж., Фокас, А. С. (2003). Комплексные переменные: введение и приложения. Издательство Кембриджского университета. Проверить теорему 2.6.2
- ^ Lyness, J. N .; Молер, К. Б. (1967). «Численное дифференцирование аналитических функций». SIAM J. Numer. Анальный. 4: 202–210. Дои:10.1137/0704019.
- ^ Абате, Дж; Дубнер, H (март 1968 г.). «Новый метод генерации разложения функций в степенной ряд». SIAM J. Numer. Анальный. 5 (1): 102–112. Дои:10.1137/0705008.
- ^ Дифференциальная квадратура и ее применение в технике: инженерные приложения, Чанг Шу, Springer, 2000, ISBN 978-1-85233-209-9.
- ^ Усовершенствованные методы дифференциальной квадратуры, Инъян Чжан, CRC Press, 2009, ISBN 978-1-4200-8248-7.
внешняя ссылка
- http://mathworld.wolfram.com/NumericalDifferentiation.html
- Ресурсы по числовой дифференциации: заметки из учебников, PPT, рабочие листы, аудиовизуальные лекции на YouTube в Численные методы для студентов STEM
- ftp://math.nist.gov/pub/repository/diff/src/DIFF Код на Фортране для численного дифференцирования функции с использованием процесса Невилла для экстраполяции из последовательности простых полиномиальных приближений.
- Подпрограммы численного дифференцирования библиотеки NAG
- http://graphulator.com Онлайн-калькулятор для построения числовых графиков с функцией исчисления.
- Способствовать росту. Математическое численное дифференцирование, включая конечное дифференцирование и комплексную ступенчатую производную
- Комплексная ступенчатая дифференциация
- Дифференциация без разницы к Николас Хайэм, СИАМ Новости.
- проект findiff Python