在符号表达式中替换函数的导数

时间:2014-11-18 15:30:54

标签: matlab symbolic-math

我和here有同样的问题。

在Matlab中,函数的导数可以象征性地表示为

>> syms t
>> syms x(t)
>> diff(x,t)

ans(t) =

D(x)(t)

但是,如果我知道衍生物,我怎么能在表达式中替换。

>> subs(ans,D(x)(t),3)
Error: ()-indexing must appear last in an index expression.

2 个答案:

答案 0 :(得分:5)

让我们通过一个例子:

syms t x(t) y
f = x^2+y
dfdt = diff(f,t) % returns 2*D(x)(t)*x(t)
dxdt = diff(x,t) % returns D(x)(t)
subs(dfdt,dxdt,3)

返回6*x(t)。关键是D(x)(t)只是衍生物相对于时间的印刷表示,而不是实际值。您需要将其分配给实际变量。在您的示例中,您需要执行@rayeng建议的操作,但如果您为输出分配名称,它会更加灵活和清晰。

xdxdt都是symfun调用"抽象"的帮助和文档。或"任意"符号功能,即没有定义的功能。这些行为与sym类型的常规符号变量略有不同。在命令窗口中键入class(x)whos以查看变量类型。

答案 1 :(得分:2)

MATLAB解释您正在进行嵌套索引调用。它认为您正在执行D(x),然后无论结果是什么,您都使用t索引到数组中。您应该做的是在diff(x,t)的第二个参数内嵌入subs调用,然后进行替换。因此:

subs(ans, diff(x,t), 3);