Получить производную дескриптора function_handle в MATLAB - PullRequest
5 голосов
/ 15 января 2012

Можно ли получить производную от function_handle как от другого function_handle ?

Как:

  fun1 = @(x) x^2;
  % do that ...
  disp(fun2);
    @(x) x*2

Я знаю, как найти производную символической функции, но я не могу преобразовать дескриптор функции в символьную функцию.

Я новичок в Matlab, и я не мог найти способ сделать это. Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 15 января 2012

Краткий ответ: «Нет». MATLAB понятия не имеет, что означает содержание function_handle в символическом смысле. Вам лучше создать его, используя syms на первом месте.

Более длинный ответ будет состоять в том, чтобы использовать Symbol Math Toolbox, как предложено @A Danesh, или приблизительное, как предложено @ Andrey.

Однако, если вы всегда работаете с полиномами, вы можете сохранить коэффициенты в виде массива и использовать следующие функции:

  • polyval для оценки
  • conv для умножения
  • deconv, чтобы разделить
  • polyder для дифференциации
  • polyint для интеграции
0 голосов
/ 12 февраля 2019
syms x 
f = @(x) x^2 + 1; 
diff(f,x)

Ответы:

2*x + 1
0 голосов
/ 15 января 2012

вы не можете аналитически из дескриптора функции.

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

0 голосов
/ 15 января 2012

Вы можете получить функцию приближения:

 delta = 0.0001;
 d = @(x)( (fun1(x+delta) - fun1(x))./delta)
...