Огляд
Хороше питання. Існує праця під назвою "Підвищення точності методу диференціації матриць для довільних точок колокації" Р. Балтенспергера. На мою думку, це не є великим питанням, але він має точку (про що було відомо ще до появи в 2000 році): він підкреслює важливість точного подання факту, що похідна постійної функції f( х ) = 1 повинна бути нульовим (це справедливо в математичному сенсі, але не обов'язково в числовому поданні).
Неважко побачити, що для цього потрібні суми рядків n-ї похідної матриці D( n ) дорівнювати нулю. Загальноприйняти це обмеження можна шляхом коригування діагонального запису, тобто, встановивши D( n )j j: = - ∑i = 1i ≠ jNDi j.(1)
Зрозуміло, що ця функція не відповідає точно під час роботи за комп’ютером через помилки округлення при розрахунках з плаваючою комою. Що більш дивно, що ці помилки стають ще більш серйозними при використанні аналітичних формул для похідної матриці (які доступні для багатьох класичних точок колокації, наприклад, Гаусса-Лобата).
Тепер у статті (та посиланнях на неї) зазначено, що похибка похідної полягає в порядку відхилення рядкових сум від нуля. Мета полягає в тому, щоб зробити їх чисельними якомога меншими.
Числові тести
Хорошим моментом є те, що процедура Форнберга, здається, є досить хорошою в цьому плані. На малюнку нижче я порівняв поведінку точної, тобто аналітичної, першої похідної матриці та тієї, отриманої алгоритмом Форнберга, для різної кількості точок колокації Чебишева-Лобата.
Знову ж таки, вважаючи твердження в цитованій роботі, це означає, що алгоритм Форнберга дасть більш точні результати для похідної.
Для того, щоб довести це, я буду використовувати ту саму функцію, що і в роботі,
f( х ) = 11 + х2.(2)
Ен= максi ∈ { 0 , … , n }∣∣∣f'( хi) - ∑j = 1нDi jf( хj) ∣∣∣.(3)
D~j j= Dj j- ( ∑i = 1нDj i) ,для всіх j .(4)
Висновок
На закінчення, метод Форнберга здається досить точним, у випадку навіть приблизно на 3 порядки точнішими, ніж результати аналітичних формул. Це повинно бути досить точним для більшості програм. Більше того, це чудово, тому що Форнберг, схоже, прямо не включає цей факт у свій метод (принаймні, у двох документах Форнберга немає згадок).N= 512
Інший порядок можна отримати для цього прикладу шляхом прямого включення рівняння (4). Оскільки це досить простий підхід і застосовується лише один раз для кожної похідної, я не бачу причин у тому, щоб не використовувати його.
Метод з паперу Бальтенспергера, який використовує більш досконалий підхід до оцінки суми у рівнянні (1) з метою зменшення помилок округлення, - дає приблизно такий же порядок для помилки. Отож, принаймні для цього прикладу, це приблизно еквівалентно вищевказаному методу "Адаптований Форнберг".