我有一个符号函数 exp(a+b),想分解出 A=exp(a) 以产生 exp(a+b) = A*exp(b),但我不知道如何在MATLAB。以下是我的尝试:
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)。
任何帮助是极大的赞赏。
我有一个符号函数 exp(a+b),想分解出 A=exp(a) 以产生 exp(a+b) = A*exp(b),但我不知道如何在MATLAB。以下是我的尝试:
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)。
任何帮助是极大的赞赏。
首先,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)