Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

Differentiate an inline function

Asked by Jose

Jose

on 23 Nov 2012
Accepted Answer by Matt Fig

Matt Fig

Hi!

I have an assignment in Matlab and I need to find a function's 8th and 9th derivate. This function is an inline function, as it is an input from the user.

I have been trying to use the function diff, but it tells me: «Function 'diff' is not supported for class 'inline'.»

Any ideas?

6 Comments

Walter Roberson

Walter Roberson

on 23 Nov 2012

Is it required that you use an inline function? Could you use a symbolic function instead? Considering that you are using the symbolic diff() routine?

Jose

Jose

on 23 Nov 2012

I wish, but the function is an input from the user, and I don't know any way to convert it to a symbolic one.

But if there is an alternative to the diff function, it may work.

Walter Roberson

Walter Roberson

on 23 Nov 2012
syms x
f = sym(string_from_input);
diff(f,x,x,x,x,x,x,x,x)
Jose

Jose

Products

No products are associated with this question.

2 Answers

Answer by Matt Fig

Matt Fig

on 23 Nov 2012
Edited by Matt Fig

Matt Fig

on 23 Nov 2012
Accepted answer
f = inline('x^8');  % Our inline function.
D8 = diff(sym(f),8) % Find the 8th derivative
D8 == prod(1:8)     % Check.  ans = 1 as expected.

1 Comment

Jose

Jose

on 23 Nov 2012

Thanks you so much!

Matt Fig

Matt Fig

Answer by Matt J

Matt J

on 23 Nov 2012
Edited by Matt J

Matt J

on 23 Nov 2012

You cannot do symbolic differentiation on inline functions. If you don't have the Symbolic Toolbox, you will have to either consider a specific family of functions and pre-analyze their derivatives. Or, if you want to do numeric differentiation,

t=linspace(0,T,N);
f = vectorize(inline(string_from_input));
result = diff(f(t),8)./( t(2)-t(1) )^8;

0 Comments

Matt J

Matt J

Contact us