How do I symbolically work with implicit functions (i.e., "x(t)") within the Symbolic Math Toolbox?

14 views (last 30 days)
I would like to find the derivative of:
E1 = x' * sin(x)
where "x" and "y" are functions of time "t".
I tried:
syms x t
Dx= diff(x,t)
I receive the result:
Dx =
0
In addition
syms x y t
Dx= diff(x(t),t)
??? Unable to find subsindex function for class sym.

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 8 Nov 2011
The following example demonstrates how you can represent "x" as functions of time "t" and perform differentation on it:
Example 1:
syms t
x = sym('x(t)'); % x(t)
E1 = diff(x) * sin(x)
E2 = diff(E1,t)
pretty(E1)
pretty(E2)
The solution for E1:
/d \
|-- x(t)| sin(x(t))
\dt /
The solution for E2:
/ 2 \
|d | /d \2
|--- x(t)| sin(x(t)) + |-- x(t)| cos(x(t))
| 2 | \dt /
\dt /
The following example demonstrates how to substitute 'x(t)' with an explicit definition.
Example 2:
% Order of the derivative
n = 2
% Define symbolic variables.
syms t
x = sym('t^2');
f = sym('f(x)');
% SUBS is used to substitute definition of x
f_subs = subs(f);
disp('Diff f_subs wrt to t')
pretty(diff(5*f_subs + t^2,t,n))
disp(' ')
disp('Diff f_subs wrt to x(t)')
pretty(diff(5*f_subs + t^2,x,n))
disp(' ')
  2 Comments
Walter Roberson
Walter Roberson on 22 Feb 2016
Edited: MathWorks Support Team on 23 Feb 2022
From R2015a onwards, there is a new functionalDerivative() that would allow you to take the derivative with respect to a function.
Walter Roberson
Walter Roberson on 22 Feb 2016
From about R2011b onwards, instead of using
syms t
x = sym('x(t)');
you can also use
syms t x(t)
or even
syms x(t)
which will notice if t is not already defined as a symbol and will define it as a symbol if it needs to.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!