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

12 visualizzazioni (ultimi 30 giorni)
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.

Risposta accettata

MathWorks Support Team
MathWorks Support Team il 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 Commenti
Walter Roberson
Walter Roberson il 22 Feb 2016
Modificato: MathWorks Support Team il 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 il 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.

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by