(Примечание: предполагается, что это сообщество Wiki.)
Предположим, что у меня есть множество точек xi = {x0, x1, x2,... xn} и соответствующих значений функции fi = f (xi) = {f0, f1, f2,..., fn }, где f (x), вообще говоря, является неизвестной функцией. (В некоторых ситуациях мы могли бы знать f (x) раньше времени, но мы хотим сделать это в целом, поскольку мы часто не делаем знать f (x) заранее.) Какой хороший способ аппроксимировать производную f (x) в каждой точке xi? То есть, как я могу оценить значения dfi == d/dx fi == df (xi)/dx в каждой из точек xi?
К сожалению, у MATLAB нет очень хорошей универсальной, цифровой процедуры дифференцирования. Частично это связано с тем, что выбор хорошей рутины может быть затруднен!
Итак, какие существуют методы? Какие существуют процедуры? Как мы можем выбрать хорошую рутину для конкретной проблемы?
При выборе способа дифференциации в MATLAB существует несколько соображений:
- Есть ли у вас символическая функция или набор точек?
- Является ли ваша сетка равномерно или неравномерно распределенной?
- Периодически ли ваш домен? Можете ли вы принять периодические граничные условия?
- Какой уровень точности вы ищете? Вам нужно вычислить производные в рамках данного допуска?
- Вам ли важно, чтобы ваша производная была оценена в тех же точках, что и ваша функция?
- Вам нужно рассчитать несколько порядков производных?
Какой лучший способ для продолжения?