Как я могу численно дифференцировать неравномерно выбранную функцию?

21

Стандартные разностные формулы применимы для численного вычисления производной в соответствии с ожиданием того, что вы имеете значение функции при равномерно распределенных точках, так что ч х к + 1 - х к являются константой. Что если у меня неравномерно расположенные точки, так что теперь h изменяется от одной пары соседних точек к следующей? Очевидно, я все еще могу вычислить первую производную как f ( x ) 1f(xk)hxk+1xkh, но существуют ли численные формулы дифференцирования для более высоких порядков и точности, которые могут адаптироваться к изменению размера сетки?f(x)1hk[f(xk+1)f(xk)]

Дэвид З
источник
7
Вы всегда можете построить (кусочно) полиномиальный интерполант, проходящий через ваши точки, а затем дифференцировать это.
JM
Или вы можете восстановить формулы конечных разностей без упрощения . Часто это необходимо сделать для интеграции, но вполне вероятно, что предложение JM более устойчиво. h=xk+1xk
rcollyer
Что это за функция?
МБк
Примером, который вызвал этот вопрос, является функция, выбранная с логарифмически разнесенными значениями , но вычисление второй производной лог-преобразованных данных дает забавные результаты, и я хотел проверить это. Плюс я решил, что задам как можно более общий вопрос. xk=x0δk
Дэвид З,
1
Насколько я понимаю, что-то, что работает только для первого и второго производных, было бы прекрасным ответом на вопрос. Я написал вопрос так же, как и я, чтобы дать общий ответ, если у кого-то был такой, но, конечно, на практике наиболее полезными являются первый и второй производные.
Дэвид Z

Ответы:

21

Комментарий JM прав: вы можете найти интерполирующий полином и дифференцировать его. Есть и другие способы получения таких формул; как правило, все они приводят к решению системы Ван-дер-Монд для коэффициентов. Этот подход проблематичен, когда трафарет с конечными разностями включает в себя большое количество точек, потому что матрицы Вандермонда становятся плохо обусловленными. Форнберг разработал более численно устойчивый подход , который объясняется более четко и в целом во второй его статье .

Вот простой скрипт MATLAB, который реализует метод Форнберга для вычисления коэффициентов аппроксимации конечных разностей для любой производной порядка с любым набором точек. Хорошее объяснение см. В главе 1 текста Левека о методах конечных разностей .

Немного подробнее о формулах FD: предположим, у вас есть 1D сетка. Если вы используете весь набор точек сетки для определения набора формул FD, результирующий метод эквивалентен нахождению интерполяционного полинома по всей сетке и его дифференцированию. Этот подход называется спектральной коллокацией. Кроме того, для каждой точки сетки вы можете определить формулу FD, используя всего несколько соседних точек. Это то, что делается в традиционных методах конечных разностей.

Как упоминалось в комментариях ниже, использование конечных разностей очень высокого порядка может привести к колебаниям (явление Рунге), если точки не выбраны тщательно.

Дэвид Кетчесон
источник
3
С другой стороны, когда вы используете интерполяционные полиномы, нужно всегда помнить такие вещи, как феномен Рунге, который может произойти с вашими данными, если ваши данные настроены неверно. Я бы сказал, что кусочные полиномы могут быть менее восприимчивы к этому ...
JM
1
Интересно, можно ли связать работу Коева и технику Форнберга?
Дэвид Кетчесон
1
Интересно, что существует сходство между формулами Форнберга и более ранними формулами, разработанными Линсом и Молером на основе классического метода Невилля для генерации интерполяционного полинома. На самом деле они могут быть одинаковыми формулами в разных обозначениях, но я не проверил их полностью.
JM
2
Полиномиальная интерполяция со многими точками требует, чтобы специальные точечные распределения были хорошо обусловлены. В общем, для неравномерных распределений точек не рекомендуется выполнять интерполяцию, а затем дифференцировать интерполяционный полином, потому что он может быть сильно колебательным (подумайте о «явлении Рунге», как упомянуто JM). В зависимости от ваших потребностей, может быть, лучше использовать кубические сплайны, которые для многих практических целей могут дать хорошие ответы на проблему аппроксимации аппроксимирующих производных.
Аллан П. Энгсиг-Каруп
1
Хороший ответ. Просто для информации, эта статья дает альтернативный подход к Форнбергу. Он следует тому же принципу, но дает другой алгоритм.
Дэвид Хай
2

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

Сингх, Ашок К. и Б.С. Бхадаурия. «Разностные формулы для неравных подинтервалов, использующие интерполяционную формулу Лагранжа». Международный журнал по математике и анализу 3.17 (2009): 815-827. ( Ссылка на PDF )

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

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

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

Я нашел и статью, на которую я ссылался, и работу Форнберга полезной для моих собственных исследований.

jvriesem
источник
1
извините, что я должен это заявить, но ваша приведенная ссылка выглядит странно - они используют ужасные формулы и решают лишь несколько особых случаев. Напротив, Форнберг решил общую проблему , предложив простой алгоритм, который уже в 80-х годах. Смотрите здесь
Дэвид Хай
другая статья, решающая общую проблему, находится здесь
davidhigh
2
и последний комментарий, чтобы неуважительно относиться к этой статье. В «превосходном теоретическом подходе» у вас не может быть 9 ссылок, где 7 относятся к вашей собственной работе, а одна - к общей книге по числовому анализу. По крайней мере, если бы вы сами не изобрели тему, чего нет у этих авторов.
Дэвид Хай
Вы абсолютно правы. Я бы не сказал, что формулы ужасны, хотя их можно улучшить. Особые случаи на самом деле довольно хороши как тесты / сравнения, и они дают общую формулу, которая должна совпадать с формулой Форнберга.
jvriesem
1
@jvriesem Пожалуйста, обратите внимание, что цитируемая статья имеет неправильный знак в третьем члене в уравнении. (15б)
Тарек
-4

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

Простая двухточечная оценка состоит в том, чтобы вычислить наклон соседней секущей линии через точки (x, f (x)) и (x + h, f (x + h)). [1] Выбрав небольшое число h, h представляет небольшое изменение x, и оно может быть как положительным, так и отрицательным. Наклон этой линии

f(x+h)f(x)h

Это выражение является коэффициентом разности Ньютона.

Наклон этой секущей линии отличается от наклона касательной линии на величину, приблизительно пропорциональную h. Когда h приближается к нулю, наклон секущей линии приближается к наклону касательной. Следовательно, истинная производная от f в точке x является пределом значения коэффициента разности, когда секущие линии становятся все ближе и ближе к касательной линии.

evion2011
источник
1
Я думаю, что вы получаете отрицательное голосование, потому что Давид Заславский специально упомянул формулу коэффициента разности, и вопрос состоит в том, есть ли какие-либо лучшие приближения.
Дан
7
Кроме того, потому что это прямое копирование и вставка из Википедии , за исключением спам-ссылки, которая изначально была частью ответа.
Дэвид Z