如何描述matlab符号变量的导数?

4si2a6ki  于 2023-01-17  发布在  Matlab
关注(0)|答案(1)|浏览(161)

例如,我将变量x(t)、xdot(t)命名为关于时间的变量:syms t x(t) xdot(t);,x对时间的导数是xdot,xdot=diff(x,t),但是我计算diff(x,t)的时候,结果不是xdot,如何设置计算结果中diff(x,t)的显示为xdot,另外计算结果中的时间变量显示为variable(t),如何设置结果只显示variable

syms t x(t) xdot(t);
xdot=diff(x,t);
y=diff(x,t);
y

y结果显示为

,但是我希望它显示为xdot

9jyewag0

9jyewag01#

请看下面的代码:

a = 3;
b = 3;
b

在我看来,你希望显示b = a,而不是b = 3,这不是MATLAB的工作方式,ab都等于3,但这并不意味着a就是b
代码也是如此:

a = 3;
b = a;
b

这给出了b = 3,而不是b = a。我不会详细讨论 * 为什么 * 会这样(以及为什么在MATLAB中必须这样)。知道它是如何工作的就足够了。
您将diff(x,t)赋给了两个 * 不同的 * 变量xdoty,这意味着,虽然xdoty具有相同的值,但xdot * 不是 * y
如果你在代码之后做xdot = 3,那么y仍然是dx/dt。
旁注:为什么要这样做?你确定有必要吗?你可以随时打印结果:

fprintf('xdot = %s', y(t))
xdot = diff(x(t), t)

丑陋的变通方法去做一些我不明白你为什么要做的事情:
创建函数:

function res = xdot(t)
   syms x(t) res;
   res = diff(x,t);
end

然后将y定义为函数句柄:

y = @xdot
y = function_handle with value:
  @xdot

现在y(t)仍然会给予dx/dt,但是y会给出xdot
我强烈建议你不要这么做。

相关问题