2013-01-28 1 views
0

Мой вопрос относится к Symbolic Math Toolbox от Matlab. У меня есть следующий код:Как хранить символически производные в matlab

syms x x_0 u delta sigma_1 
mu = sym ('mu(x)'); 
sigma_u = sym ('sigma(u)'); 
sigma = sym ('sigma(x)'); 
f = int (1/sigma_u, u, x_0, x); 
df = subs(diff(f,x)) 
df_2 = subs(diff (f,x,2)) 
L = subs(mu*df+1/2*sigma^2*df_2) 

Результат L является Corect

L = 

mu(x)/sigma(x) - diff(sigma(x), x)/2 

Однако для дальнейших выводов и для простоты, я хотел бы определить

sigma_1 = sym('diff(sigma,x)'); 

или в аналогичным образом, чтобы получить результаты за

L = 

mu(x)/sigma(x) - sigma_1(x)/2 

В принципе, я хотел бы сохранить под именем символическое выражение diff (sigma (x), x), что Matlab знает, что, когда он получает этот результат в выражении, вместо имени diff() sigma (x), x)

+0

'f' определяется с помощью интеграла, который Matlab не может оценить; это нормально или нет? – fpe

+0

Здравствуйте. нет, это не проблема, Matlab не может в любом случае оценить интеграл, так как функция sigma (u) явно не определена. Matlab отлично справляется с применением правила Лейбница при вычислении L (через df и df_2). Тем не менее, я просто хотел бы, чтобы вместо ответа на вопрос – user1545441

+0

diff (sigma (x), x) было имя для первого серийного файла, такого как sigma_1, который должен стоять за первую производную от sigma wrt x и в основном мне хотелось бы, чтобы sigma_1 всегда появляется в программе вместо diff (sigma (x), x). Впоследствии я хотел бы определить аналогично дальнейшие производные высшего порядка функции sigma. Спасибо – user1545441

ответ

0

Да, возможно, вы можете использовать subs(L, 'diff(sigma(x),x)', 'sigma_1(x)'). Примечание, чтобы сделать работу замещения, второй ввод subs должен быть точно таким же, как вы хотите заменить; следовательно, это не может быть «diff (sigma, x)», которому не хватает (x) за sigma.

Также обратите внимание, что here - это аналогичный вопрос, для которого я предоставил более полное решение (они задали вопрос после вас, но сначала прочитали их).