Вземете производното на function_handle в MATLAB

Възможно ли е да се получи производната на function_handle като друга function_handle?

Като:

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

Знам как да намеря производната на символна функция, но не мога да конвертирам function_handle в символна функция.

Нов съм в matlab и не можах да намеря начин да направя това. Благодаря предварително.


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