Стандартные разностные формулы применимы для численного вычисления производной в соответствии с ожиданием того, что вы имеете значение функции при равномерно распределенных точках, так что ч ≡ х к + 1 - х к являются константой. Что если у меня неравномерно расположенные точки, так что теперь h изменяется от одной пары соседних точек к следующей? Очевидно, я все еще могу вычислить первую производную как f ′ ( x ) ≈ 1, но существуют ли численные формулы дифференцирования для более высоких порядков и точности, которые могут адаптироваться к изменению размера сетки?
finite-difference
discretization
Дэвид З
источник
источник
Ответы:
Комментарий JM прав: вы можете найти интерполирующий полином и дифференцировать его. Есть и другие способы получения таких формул; как правило, все они приводят к решению системы Ван-дер-Монд для коэффициентов. Этот подход проблематичен, когда трафарет с конечными разностями включает в себя большое количество точек, потому что матрицы Вандермонда становятся плохо обусловленными. Форнберг разработал более численно устойчивый подход , который объясняется более четко и в целом во второй его статье .
Вот простой скрипт MATLAB, который реализует метод Форнберга для вычисления коэффициентов аппроксимации конечных разностей для любой производной порядка с любым набором точек. Хорошее объяснение см. В главе 1 текста Левека о методах конечных разностей .
Немного подробнее о формулах FD: предположим, у вас есть 1D сетка. Если вы используете весь набор точек сетки для определения набора формул FD, результирующий метод эквивалентен нахождению интерполяционного полинома по всей сетке и его дифференцированию. Этот подход называется спектральной коллокацией. Кроме того, для каждой точки сетки вы можете определить формулу FD, используя всего несколько соседних точек. Это то, что делается в традиционных методах конечных разностей.
Как упоминалось в комментариях ниже, использование конечных разностей очень высокого порядка может привести к колебаниям (явление Рунге), если точки не выбраны тщательно.
источник
http://mathformeremortals.wordpress.com/2013/01/12/a-numerical-second-derivative-from-three-points/
Это отвечает на ваш вопрос и показывает формулу, которую вы ищете, для второй производной. Производные высшего порядка следуют той же схеме.
источник
Приведенные выше ответы хороши с точки зрения предоставления вам кода для использования, но не так хороши с точки зрения теории. Если вы хотите глубже вникнуть в интерполяционные полиномы, взгляните на этот теоретический подход на нескольких конкретных примерах:
Авторы используют лагранжеву интерполяцию (см. Статью в Википедии ) для вычисления трехточечных, четырехточечных и пятиточечных интерполяционных полиномов, а также их первой, второй и третьей производных. У них также есть выражения для ошибки усечения, что важно учитывать при использовании любой конечно-разностной схемы. У них также есть общая формула для вычисления интерполяционных полиномов с использованием N точек.
Лагранжевы интерполяционные полиномы полезны, потому что они и их производные могут быть очень точными в той области, которую вы интерполируете, и они не предполагают равномерного интервала сетки. Из-за природы лагранжевых интерполяционных полиномов вы никогда не сможете иметь больше порядков производных, чем точек сетки.
Я думаю, что это хорошо отвечает на ваш вопрос, потому что в приведенной мной статье есть формулы для произвольно разностных схем высокого порядка, которые по своей природе предназначены для неравномерных сеток и ограничены только количеством точек сетки, которые вы включаете в свой трафарет. В статье также есть общая формула для ошибки усечения, которая поможет вам сравнить лагранжевую интерполяционную полиномиальную схему с другими схемами, которые вы, возможно, рассматриваете. Авторская работа должна давать те же результаты, что и метод Форнберга. Их вклад - просто подсчет нескольких примеров и оценка ошибки, которая может оказаться полезной.
Я нашел и статью, на которую я ссылался, и работу Форнберга полезной для моих собственных исследований.
источник
Я нашел эту статью о конечно-разностных формулах с неравными подинтервалами . Я собираюсь использовать это вместо интерполяции. Как только я напишу все формулы, я опубликую их здесь.
источник
Самый простой метод - использовать конечно-разностные аппроксимации.
Простая двухточечная оценка состоит в том, чтобы вычислить наклон соседней секущей линии через точки (x, f (x)) и (x + h, f (x + h)). [1] Выбрав небольшое число h, h представляет небольшое изменение x, и оно может быть как положительным, так и отрицательным. Наклон этой линии
Это выражение является коэффициентом разности Ньютона.
Наклон этой секущей линии отличается от наклона касательной линии на величину, приблизительно пропорциональную h. Когда h приближается к нулю, наклон секущей линии приближается к наклону касательной. Следовательно, истинная производная от f в точке x является пределом значения коэффициента разности, когда секущие линии становятся все ближе и ближе к касательной линии.
источник