Производная анонимных функций без определения символьных переменных в Matlab

Рассмотрим следующий код:

f = @(x) x.^2; 

Можно ли получить производную дескриптора функции f в качестве дескриптора другой функции без определения символической переменной?


person Msh    schedule 08.02.2019    source источник


Ответы (1)


Нет, чтобы получить производную функцию, вам нужно использовать инструментарий Symbolic.

Но вы можете получить приближение (аппроксимацию конечной разности), создав функцию следующим образом:

f = @(x) x.^2;
d = 1e-6;
df = @(x) (f(x+d)-f(x))/d;

d здесь определяет точность приближения. Если вы сделаете его слишком маленьким, вы окажетесь в домене ошибки округления с плавающей запятой, так что будьте осторожны!

Тестирование:

x = -2:0.01:2;
max(abs(df(x) - 2*x))  % returns 1.0006e-06
person Cris Luengo    schedule 08.02.2019
comment
Или, что еще лучше, используйте схемы более высокого порядка или, по крайней мере, используя центральную разность @(x) (f(x+d)-f(x-d))/(2*d), что позволит вам повысить точность для того же d. Хотя это правильный подход - person Wolfie; 08.02.2019