我知道,对于正常情况,如果我定义
syms x,y
K = f(x,y)
作为x
和y
的显式表达式,我们可以执行diff(K, x)
或diff(K, y)
来获得想要的内容。
但是现在,如果我还有另一个功能
J = g(K)
我想做
diff(J, K)
然后错误发生为:
“第二个参数必须是一个变量或一个非负整数,用于指定微分的数量。”
因此,简而言之,如何解决这种“链式表达差异”? (抱歉,这个模棱两可的描述。)
答案 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)