Як я можу чисельно диференціювати нерівномірно функцію вибірки?


21

Стандартні формули з кінцевою різницею можна застосовувати для чисельного обчислення похідної під очікуванням, що у вас є значення функції у рівномірно розташованих точках, так що є постійною. Що робити, якщо у мене нерівномірно розташовані точки, так що зараз змінюється від однієї пари сусідніх точок до наступної? Очевидно, я все ще можу обчислити першу похідну як , але чи є формули числової диференціації у вищих порядках і точності, які можуть адаптуватися до змін розміру сітки?h x k + 1 - x k h f ( x ) 1f(хк)годхк+1-хкгодf'(х)1годк[f(хк+1)-f(хк)]


7
Ви завжди можете побудувати (кусочно) поліноміальний інтерполянт, що проходить через ваші точки, а потім диференціювати це.
JM

Або ви можете реконструювати формули скінченної різниці без спрощення . Часто це потрібно робити для інтеграції, але цілком ймовірно, що пропозиція JM є більш стабільною. год=хк+1-хк
rcollyer

Що це за функція?
mbq

Приклад, який спонукав це питання, - це функція, відібрана при логарифмічно розміщених значеннях , але обчислення другої похідної даних, перетворених журналом, дає смішні результати, і я хотів перевірити її. Плюс я подумав, що буду задавати якомога загальніші запитання. хк=х0δк
David Z

1
Що стосується мене, то, що працює лише для першої та другої похідних, було б ідеально чудовою відповіддю на питання. Я написав питання, як це робив, щоб отримати загальну відповідь, якщо хтось мав його, але, звичайно, на практиці це найкорисніший перший та другий похідні.
David Z

Відповіді:


21

Коментар Дж. М. є правильним: ви можете знайти інтерполяційний поліном і диференціювати його. Є й інші способи виведення таких формул; як правило, всі вони призводять до розв'язання системи ван дер Монде для коефіцієнтів. Цей підхід є проблематичним, коли трафарет кінцевої різниці включає велику кількість балів, оскільки матриці Вандермондза стають поганими умовами. Форнберг створив більш чисельно стійкий підхід , який пояснюється більш чітко та загалом у другій його статті.

Ось простий скрипт MATLAB, який реалізує метод Форнберга для обчислення коефіцієнтів наближення скінченної різниці для будь-якої похідної порядку з будь-яким набором точок. Для приємного пояснення дивіться розділ 1 тексту LeVeque про методи кінцевих різниць .

Трохи більше про формули FD: Припустимо, у вас є 1D сітка. Якщо ви використовуєте цілий набір точок сітки для визначення набору формул FD, отриманий метод еквівалентний пошуку інтерполяційного полінома через всю сітку та диференціації цього. Цей підхід називають спектральною колокацією. Крім того, для кожної точки сітки можна визначити формулу FD, використовуючи лише кілька сусідніх точок. Це робиться традиційними методами кінцевих різниць.

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


3
З іншого боку, коли ви використовуєте інтерполяційні поліноми, завжди слід пам’ятати такі речі, як явище Рунге, можливо, трапляється з вашими даними, якщо ваші дані недостатньо налаштовані. Я б сказав, що кускові поліноми можуть бути менш сприйнятливими до цього ...
JM

1
Цікаво, чи могли бути пов'язані робота Коєва та техніка Форнберга?
Девід Кетчесон

1
Цікаво, що, здається, існує схожість між формулами Форнберга і більш ранішими формулами, розробленими Лінессом і Молером на основі класичного методу Невіля для генерації інтерполяційного полінома. Насправді вони можуть бути однаковими формулами в різних позначеннях, але я не ретельно перевіряв.
JM

2
Поліноміальна інтерполяція з багатьма точками вимагає, щоб спеціальні розподіли точок були добре обумовлені. Взагалі, для нерівномірних точкових розподілів не рекомендується робити інтерполяцію, а потім диференціювати поліпом інтерполяції, оскільки він може бути сильно коливальним (подумайте, "феномен Рунге", як згадував JM). Залежно від ваших потреб, може бути кращою ідеєю просто використовувати кубічні сплайни, які для багатьох практичних цілей можуть дати хороші відповіді на проблему наближення наближених похідних.
Allan P. Engsig-Karup

1
Гарна відповідь. Тільки для інформації цей документ дає альтернативний підхід до Форнберга. Він дотримується того самого принципу, але дає інший алгоритм.
davidhigh


2

Наведені вище відповіді чудові з точки зору надання вам коду, але теоретично не дуже гарні. Якщо ви хочете заглибитися в інтерполяцію поліномів, погляньте на цю теоретичну обробку з кількома конкретними прикладами:

Сінгх, Ашок К. і Б. С. Бхадаурія. "Формули скінченної різниці для неоднакових під інтервалів за допомогою інтерполяційної формули Лагранжа." Міжнародний журнал математики та аналізу 3.17 (2009): 815-827. ( Посилання на PDF )

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

Інтерполяційні поліноми Лагранжа є корисними, оскільки вони та їх похідні можуть бути дуже точними в області інтерполяції, і вони не припускають рівного міжряддя. Через природу лапоранських інтерполяційних поліномів ви ніколи не можете мати більше порядків похідних, ніж у вас є точки сітки.

Я думаю, що це добре відповідає на ваше запитання, тому що в роботі, яку я цитував, є формули для довільно схем кінцевих різниць високого порядку, які за своєю природою призначені для нерівних сіток і обмежені лише кількістю точок сітки, які ви включаєте у свій трафарет. У статті також є загальна формула для помилки усікання, яка допоможе вам оцінити інтерполяційну поліноміальну схему Лагрангія щодо інших схем, які ви могли б розглянути. Документ автора повинен дати ті ж результати, що і метод Форнберга. Їх внесок справді є лише підрахунком кількох прикладів та оцінкою помилки, яка може виявитися корисною.

Я знайшов як папір я цитовану і роботу Fornberg, щоб бути корисними для моїх власних досліджень.


1
Вибачте, що я маю це констатувати, але Ваша цитована довідка виглядає дивно - вони використовують жахливі формули і вирішують лише кілька особливих випадків. На відміну від цього, Форнберг вирішив загальну проблему, давши простий алгоритм, і це вже в 80-х. Дивіться тут
davidhigh

Ще один документ, що вирішує загальну проблему, тут
Девід

2
і останній коментар про неповагу до цього документу. У "відмінному теоретичному поводженні" ви не можете мати 9 посилань, де 7 посилаються на вашу власну роботу, а одна - на загальну книгу з числовим аналізом. Принаймні ні, якщо ви самі не вигадали тему, чого не мали ці автори.
Давидхіг

Ви абсолютно праві. Я б не сказав, що формули жахливі, хоча їх можна вдосконалити. Особливі випадки насправді є досить приємними, як тести / порівняння, і вони дають загальну формулу, яка повинна бути такою ж, як у Форнберга.
jvriesem

1
@jvriesem Зверніть увагу, що цитований документ має неправильний знак у третьому терміні рівняння. (15б)
Тарек


-4

Найпростіший метод полягає у використанні скінченних різницьких наближень.

Проста двоточкова оцінка - обчислити нахил сусідньої секантної лінії через точки (x, f (x)) та (x + h, f (x + h)). [1] Вибираючи невелику кількість h, h являє собою невелику зміну x, і вона може бути як позитивною, так і негативною. Нахил цієї лінії є

f(х+год)-f(х)год

Цей вираз є коефіцієнтом різниці Ньютона.

Нахил цієї семантичної лінії відрізняється від нахилу дотичної лінії на величину, приблизно пропорційну h. Коли h наближається до нуля, нахил секантної лінії наближається до схилу дотичної лінії. Отже, справжня похідна f при x - це межа значення коефіцієнта різниці, коли секантні лінії наближаються і наближаються до дотичної лінії


1
Я думаю, що ви ставитеся до уваги, оскільки Девід Заславський спеціально згадав формулу коефіцієнта різниці, і питання задається, чи є кращі наближення.
День

7
Також тому, що це пряма копія та вставка з Вікіпедії , за винятком спам-посилання, яке спочатку було частиною відповіді.
David Z
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.