обзор
Хороший вопрос. Имеется статья Р. Балтенспергера «Повышение точности метода матричного дифференцирования для произвольных точек коллокации». На мой взгляд, это не страшно, но в этом есть смысл (который уже был известен до появления в 2000 году): он подчеркивает важность точного представления того факта, что производная постоянной функции f(x)=1 должна быть нулевым (это верно в математическом смысле, но не обязательно в числовом представлении).
Легко видеть, что для этого необходимо, чтобы суммы строк n-й производной матрицы D(n) были равны нулю. Оно является общим для обеспечения этого ограничения путем регулировки диагонального элемента, то есть путем установки D(n)jj:=−∑i=1i≠jNDij.(1)
Понятно, что эта функция не работает точно при работе на компьютере из-за ошибок округления в вычислениях с плавающей запятой. Что еще более удивительно, эти ошибки становятся еще более серьезными при использовании аналитических формул для производной матрицы (которые доступны для многих классических точек коллокации, например, Гаусса-Лобатто).
Теперь в статье (и ссылках в ней) говорится, что ошибка производной находится в порядке отклонения суммы строк от нуля. Поэтому цель состоит в том, чтобы сделать их как можно меньшими по численности.
Численные тесты
Хорошим моментом является то, что процедура Форнберга, кажется, довольно хороша в этом отношении. На рисунке ниже я сравнил поведение точной, то есть аналитической матрицы первой производной и матрицы, полученной по алгоритму Форнберга, для различного числа коллокационных точек Чебышева-Лобатто.
Опять же, если верить утверждению в цитируемой статье, это означает, что алгоритм Форнберга даст более точные результаты для производной.
f(x)=11+x2.(2)
En=maxi∈{0,…,n}∣∣∣f′(xi)−∑j=1nDijf(xj)∣∣∣.(3)
D~jj=Djj−(∑i=1nDji),for all j.(4)
Вывод
В заключение, метод Форнберга представляется достаточно точным, в случае даже примерно на 3 порядка более точным, чем результаты аналитических формул. Это должно быть достаточно точным для большинства приложений. Более того, это замечательно, потому что Форнберг, кажется, явно не включает этот факт в свой метод (по крайней мере, нет упоминания в двух работах Форнберга).N=512
Другой порядок величины может быть получен для этого примера посредством прямого включения уравнения (4). Поскольку это довольно простой подход и применяется только один раз для каждой производной, я не вижу причин, чтобы не использовать его.
Метод из статьи Baltensperger, который использует более сложный подход для оценки суммы в уравнении (1) с целью уменьшения ошибок округления, дает примерно одинаковый порядок для ошибки. Так что, по крайней мере для этого примера, он примерно эквивалентен методу «Скорректированный Форнберг», описанному выше.