Символическая дифференциация - PullRequest
0 голосов
/ 04 января 2019

Ну, я знаю, для обычного случая, если я определю

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

как явное выражение для x и y, мы можем сделать diff(K, x) или diff(K, y), чтобы получитьчто мы хотим.

Но сейчас, если у меня есть другая функция

J = g(K)

И я хочу сделать

diff(J, K)

, тогда ошибка возникает как:

'Второй аргумент должен быть переменной или неотрицательным целым числом, определяющим количество дифференцирований.'

Итак, в двух словах, как решить этот вид 'цепного выражениядифференциация?(Извините за это неоднозначное описание.)

1 Ответ

0 голосов
/ 04 января 2019

Согласно функции 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)
...