0

我有以下代码:

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)。

这可能吗?还有其他更整洁的方法吗?

4

1 回答 1

1

我真的不确定我明白你在问什么(我也不明白你的其他问题),但这是一个尝试。

因为,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)tat t_given。你应该能够做到这一点,只需使用subs,例如,这样的:

sums t_given xdot_given;
edot_t_given = subs(edot,{t,xdot},{t_given, xdot_given});

t如果其中唯一的部分edot是时间的函数,则您可能不需要替换xdot

于 2014-08-10T17:30:09.743 回答