Я хочу вычислить вторую производную анонимной функции в Matlab. Я уже знаю некоторые формулы для этого (Числовое дифференцирование), но они, похоже, не работают.
Я могу вычислить первую производную с помощью:
f = @(x) (x^3);
h = 1e-10;
df = @(x) (f(x+h) - f(x))/h;
Но когда я пытаюсь вычислить вторую производную с помощью следующего, я не получаю ожидаемого результата:
f = @(x) (x^3);
h = 1e-10;
d2f = @(x) (f(x+h) - 2*f(x) + f(x-h))/(h^2);
Для d2f я должен получить функцию, аналогичную d2f = 6x, но если сюжет d2f, я получаю следующее: сюжет d2f
Что я делаю неправильно?
h
и катастрофической отменой из-за числовой точности с плавающей запятой . Попробуйтеh=1e-7
или больше. Однако, тратя на то, где вы оцениваете функции, вы все равно можете увидеть много шума. - person horchler   schedule 10.04.2019h
, используя vpa:h = vpa(1e-10)
. Теперь у вас есть точность в 32 цифры, поэтомуh
должно быть меньше1e-16
. - person obchardon   schedule 10.04.2019