我有一个问题。我得到了函数f(t) = C3*exp(t*x*1i) + C4*exp(-t*x*1i)作为微分方程的解(作为syms)。但是我需要这个解决方案作为一个实函数(C3*cos + C4*sin)。我该怎么做呢?我怎样才能得到这个函数的实部和虚部?matlab中有没有允许我这样做的函数?
发布于 2017-09-08 03:35:51
发布于 2017-09-08 03:57:20
您可以使用rewrite根据正弦和余弦重写表达式/函数。但是,您不能应用real和imag函数来获得与非符号计算一样好的形式。在复杂表达式中获得实部和虚部的诀窍是使用0对i进行substitute,以获得实部,然后从原始表达式中减去实部以获得虚部。使用simplify作为担保。
举个例子:
syms C3 C4 t x
f(t) = C3*exp(t*x*1i) + C4*exp(-t*x*1i);
fsincos = rewrite(f, 'sincos');
realf = simplify(subs(fsincos, i,0));
imagf = simplify(fsincos-realf);
%or you can use the collect function to avoid simplify>> fsincos
fsincos(t) =
C3*(cos(t*x) + sin(t*x)*1i) + C4*(cos(t*x) - sin(t*x)*1i)>> realf
realf(t) =
cos(t*x)*(C3 + C4)>> imagf
imagf(t) =
sin(t*x)*(C3*1i - C4*1i)https://stackoverflow.com/questions/46103490
复制相似问题