Численное дифференцирование - Numerical differentiation

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

Derivative.svg

Конечные различия

Самый простой метод - использовать конечно-разностные аппроксимации.

Простая двухточечная оценка заключается в вычислении наклона ближайшего секущая линия через точки (Икс, ж(Икс)) и (Икс + час, ж(Икс + час)).[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] Название аналогично квадратура, смысл численное интегрирование, где взвешенные суммы используются в таких методах, как Метод Симпсона или Трапецеидальная линейка. Существуют различные методы определения весовых коэффициентов. Дифференциальная квадратура используется для решения уравнения в частных производных.

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

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

  1. ^ Ричард Л. Берден, Дж. Дуглас Фейрес (2000), Числовой анализ, (7-е изд.), Брукс / Коул. ISBN  0-534-38216-9.
  2. ^ Кэтрин Клипперт Мерсет (2003). Окна в обучении математике: кейсы для средних и средних классов. Педагогический колледж Press. п.34. ISBN  978-0-8077-4279-2.
  3. ^ Тамара Лефкур Руби; Джеймс Селлерс; Лиза Корф; Джереми Ван Хорн; Майк Манн (2014). Каплан А.П. Расчет AB и BC 2015. Kaplan Publishing. п. 299. ISBN  978-1-61865-686-5.
  4. ^ а б Численное дифференцирование аналитических функций, Б. Форнберг - транзакции ACM в математическом программном обеспечении (TOMS), 1981.
  5. ^ а б Использование комплексных переменных для оценки производных вещественных функций, У. Сквайр, Г. Трапп - ОБЗОР SIAM, 1998.
  6. ^ Зауэр, Тимоти (2012). Числовой анализ. Пирсон. стр.248.
  7. ^ Следующий Числовые рецепты в C, Глава 5.7.
  8. ^ п. 263.
  9. ^ Abramowitz & Stegun, Таблица 25.2.
  10. ^ Шилов, Георгий. Элементарный действительный и комплексный анализ.
  11. ^ Мартинс, Дж. Р. Р. А .; Sturdza, P .; Алонсо, Дж. Дж. (2003). «Комплексно-ступенчатое приближение производной». Транзакции ACM на математическом ПО. 29 (3): 245–262. CiteSeerX  10.1.1.141.8002. Дои:10.1145/838250.838251.
  12. ^ Дифференциация без разницы к Николас Хайэм
  13. ^ статья из MathWorks блог, опубликованный Клив Молер
  14. ^ «Архивная копия» (PDF). Архивировано из оригинал (PDF) на 2014-01-09. Получено 2012-11-24.CS1 maint: заархивированная копия как заголовок (связь)
  15. ^ Абловиц, М. Дж., Фокас, А. С. (2003). Комплексные переменные: введение и приложения. Издательство Кембриджского университета. Проверить теорему 2.6.2
  16. ^ Lyness, J. N .; Молер, К. Б. (1967). «Численное дифференцирование аналитических функций». SIAM J. Numer. Анальный. 4: 202–210. Дои:10.1137/0704019.
  17. ^ Абате, Дж; Дубнер, H (март 1968 г.). «Новый метод генерации разложения функций в степенной ряд». SIAM J. Numer. Анальный. 5 (1): 102–112. Дои:10.1137/0705008.
  18. ^ Дифференциальная квадратура и ее применение в технике: инженерные приложения, Чанг Шу, Springer, 2000, ISBN  978-1-85233-209-9.
  19. ^ Усовершенствованные методы дифференциальной квадратуры, Инъян Чжан, CRC Press, 2009, ISBN  978-1-4200-8248-7.

внешняя ссылка