Символическая дифференциация

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

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

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

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

J = g(K)

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

diff(J, K)

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

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

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

1 ответ

Согласно функции сравнения в Matlab,

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

Итак, ошибка.

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)
Другие вопросы по тегам