Факторное символьное выражение, включающее exp()

У меня есть символическая функция exp(a+b), и я хотел бы выделить A=exp(a) для получения exp(a+b) = A*exp(b), но я не могу понять, как это сделать в МАТЛАБ. Ниже моя попытка:

syms a b A
X = exp(a+b);
Y = subs(X,exp(a),A) % = A*exp(b)

однако Y = exp(a+b). По какой-то причине MATLAB не может определить: exp(a+b) = exp(a) * exp(b) = A*exp(b).

Любая помощь приветствуется.


person pdwhoward    schedule 13.09.2015    source источник


Ответы (1)


Сначала expand выражение, чтобы степени были разделены, затем выполните замена. По умолчанию при написании выражения в первый раз (до запуска его через какие-либо функции) MATLAB попытается упростить ваше выражение, поэтому exp(a)*exp(b) может быть гораздо лучше выражено с помощью exp(a+b). Вот почему ваша замена не имела никакого эффекта. Однако, если вы явно хотите заменить часть выражения, заключенную в экспоненту, основанием, сначала разверните функцию, а затем выполните замену:

>> syms a b A;
>> X = exp(a+b);
>> Xexpand = expand(X)

Xexpand =

exp(a)*exp(b)

>> Y = subs(Xexpand, exp(a), A)

Y =

A*exp(b)
person rayryeng    schedule 13.09.2015