我有以下代码:
syms t x;
e=symfun(x-t,[x,t]);
在我要解决的问题中,x 是 t 的函数,但我只知道它在给定 t 处的值,所以我在这里将它建模为一个变量。我想在不“丢失”x 的情况下对 e 进行微分,这样然后我可以用我知道的 x'(t) 代替它。在我的另一个问题中,有人建议我写以下内容:
e=symfun(exp(t)-t,[t]);
并在微分后检查我是否可以用 x'(t) 的值替换 exp(t)。
这可能吗?还有其他更整洁的方法吗?
我有以下代码:
syms t x;
e=symfun(x-t,[x,t]);
在我要解决的问题中,x 是 t 的函数,但我只知道它在给定 t 处的值,所以我在这里将它建模为一个变量。我想在不“丢失”x 的情况下对 e 进行微分,这样然后我可以用我知道的 x'(t) 代替它。在我的另一个问题中,有人建议我写以下内容:
e=symfun(exp(t)-t,[t]);
并在微分后检查我是否可以用 x'(t) 的值替换 exp(t)。
这可能吗?还有其他更整洁的方法吗?
我真的不确定我明白你在问什么(我也不明白你的其他问题),但这是一个尝试。
因为,x
是时间的函数,所以让我们通过将其定义为帮助和文档中symfun
所称的“抽象”或“任意”符号函数(即没有定义的函数)来明确这一点。在 Matlab R2014b 中:
syms t x(t);
e = symfun(x-t,t)
返回
e(t) =
x(t) - t
取symfun
函数e
对时间的导数:
edot = diff(e,t)
返回
edot(t) =
D(x)(t) - 1
的表达式edot(t)
是关于时间的导数的函数x
:
xdot = diff(x,t)
这是摘要symfun
:
xdot(t) =
D(x)(t)
现在,我认为您希望能够将xdot
( xdot_given
)的特定值替换e(t)
为t
at t_given
。你应该能够做到这一点,只需使用subs
,例如,这样的:
sums t_given xdot_given;
edot_t_given = subs(edot,{t,xdot},{t_given, xdot_given});
t
如果其中唯一的部分edot
是时间的函数,则您可能不需要替换xdot
。