Согласно функции diff в Matlab,
Первый аргумент должен быть функцией, которую вы хотите дифференцировать, а остальные аргументы должны быть либо символическими переменными, либо неотрицательным числом, которое представляетчисло дифференцирований.
Итак, ошибка.
The second argument must be a variable or a non negative integer specifying the number of differentiations.
В коде diff(J, K)
говорится, что K является символической переменной для Matlab, но в реальном случае Kявляется выражением в терминах х и у.Так вот почему 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)