Как отличить встроенную функцию в Matlab

предположим, я пишу следующее в Matlab

c='x^2-6';
f=inline(c);

Тогда f будет встроенной функцией. Я могу оценить f при разных значениях, введя

f(2)
f(5)

и т. д.

Однако, когда я пытаюсь diff(f), он не возвращает 2*x. Как мне получить 2*x от f?


person mathemagician    schedule 07.10.2016    source источник


Ответы (3)


Вы не можете использовать объекты inline для символьных математических вычислений. Вместо этого используйте объекты sym:

c= sym('x^2-6'); % creates the 'sym' object
subs(c,2) % calculates c(2)
diff(c);

Также обратите внимание, что inline будет удален в будущем выпуске.

person AVK    schedule 07.10.2016

Вам понадобится MATLAB Symbolic Toolbox. То, что вы описываете, называется символической дифференциацией. (Есть также символическая интеграция и т.д.). «Нормальная» (несимволическая) версия MATLAB предназначена для выполнения числовых вычислений, а не исчисления или алгебраических манипуляций.

person LarrySnyder610    schedule 07.10.2016

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

clear;
clc;
v=input('Parameter :');%input for example 'x' and remember the quotes
syms(v);%symbolic variable : x in this case
y=input('function :');%example exp (x) ,not exp(y) or ay other variable
f=matlabFunction(y);%converts y to a command type function f
df = matlabFunction(diff(y)); %calculates the differentiation.

Теперь, если вы сделаете что-то вроде f(1), он покажет 2,71828, а df(1) покажет 2,71828.

person Mathematica Noob    schedule 14.02.2017