Получите производную от function_handle в MATLAB

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

Нравиться:

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

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

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


person user839791    schedule 15.01.2012    source источник
comment
см. stackoverflow.com/q/2307705/1132686   -  person A.Danesh    schedule 15.01.2012


Ответы (4)


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

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

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

  • polyval оценить
  • conv умножить
  • deconv разделить
  • polyder различать
  • polyint интегрировать
person Nzbuu    schedule 15.01.2012

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

 delta = 0.0001;
 d = @(x)( (fun1(x+delta) - fun1(x))./delta)
person Andrey Rubshtein    schedule 15.01.2012

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

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

person bdecaf    schedule 15.01.2012

syms x 
f = @(x) x^2 + 1; 
diff(f,x)

Ответ:

2*x + 1
person Msh    schedule 12.02.2019