象征差异

时间:2019-01-04 03:55:49

标签: matlab symbolic-math

我知道,对于正常情况,如果我定义

syms x,y
K = f(x,y)

作为xy的显式表达式,我们可以执行diff(K, x)diff(K, y)来获得想要的内容。

但是现在,如果我还有另一个功能

J = g(K)

我想做

diff(J, K)

然后错误发生为:

  

“第二个参数必须是一个变量或一个非负整数,用于指定微分的数量。”

因此,简而言之,如何解决这种“链式表达差异”? (抱歉,这个模棱两可的描述。)

1 个答案:

答案 0 :(得分:0)

根据Matlab中的diff函数,

  

第一个参数应该是您要区分的函数   其余参数必须是符号变量或   非负数,代表微分数。

所以,错误。

The second argument must be a variable or a non negative integer specifying the number of differentiations.

在代码diff(J, K)中说,K是Matlab的符号变量,但在实际情况下,K是用x和y表示的表达式。因此,这就是Matlab抛出该错误的原因。

因此,如果要使用变量x,y区分链式函数,则每当要区分该表达式时,都需要在diff()函数中显式提及每个符号变量。这样做的代码如下。

% define the symbolic functions
% as f(x,y) and g(K)
syms f(x,y) g(K)

% create the functions
K = f(x,y)
J = g(K)

% differentiate the functions with
% respect to x and y respectively.
% ------------------------
% differentiate w.r.t x
diff_K_x = diff(K, x)
% differentiate w.r.t y
diff_K_y = diff(K, y)
% -----------------------

% differentiate the function J with respect to x and y both
diff_K_xy = diff(J,x,y)