Я пытаюсь заставить maxima
выполнить некоторые "абстрактные" расширения серии Тейлора, и я столкнулся с проблемой упрощения.Прототипом проблемы может быть конечно-разностный аналог градиента
g(x1,dx1) := (f(x1+dx1) - f(x1))/dx1; /* dx1 is small */
taylor(g(x1,dx1), [dx1], [0], 0);
, для которого maxima
возвращает
Пока все хорошо.Но теперь попробуйте конечно-разностный аналог второй производной (гессиана)
h(x1,dx1) := (f(x1+dx1) - 2*f(x1) + f(x1-dx1))/dx1^2;
taylor(h(x1,dx1), dx1, 0, 0);
, для которого я получаю
что не так полезно.
Прототип "реальной" проблемы, которую я хочу решить, состоит в том, чтобы вычислить ошибки низкого порядка в приближении конечных разностей до ∂^2 f/(∂x1 ∂x2)
,
(f(x1+dx1, x2+dx2) - f(x1+dx1, x2) - f(x1, x2+dx2) + f(x1, x2))/(dx1*dx2)
и собрать условия до второго порядка (который включает до 4-х производных от f
).Я подозреваю, что без достаточно эффективного упрощения это будет легче сделать вручную, чем компьютерной алгеброй, поэтому мне интересно, что можно сделать, чтобы убедить maxima
сделать для меня упрощение.