首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在matlab中求复函数的实部和虚部

在matlab中求复函数的实部和虚部
EN

Stack Overflow用户
提问于 2017-09-08 03:06:33
回答 2查看 401关注 0票数 0

我有一个问题。我得到了函数f(t) = C3*exp(t*x*1i) + C4*exp(-t*x*1i)作为微分方程的解(作为syms)。但是我需要这个解决方案作为一个实函数(C3*cos + C4*sin)。我该怎么做呢?我怎样才能得到这个函数的实部和虚部?matlab中有没有允许我这样做的函数?

EN

回答 2

Stack Overflow用户

发布于 2017-09-08 03:35:51

您可以使用rewrite重写余弦和正弦形式的表达式,然后使用collect收集i形式的系数,给出您的实项和虚项:

代码语言:javascript
复制
f = C3*exp(t*x*1i) + C4*exp(-t*x*1i);
g = collect(rewrite(f, 'sincos'), i)

g =

(C3*sin(t*x) - C4*sin(t*x))*1i + C3*cos(t*x) + C4*cos(t*x)

从上面可以看出,如果C3等于C4,则虚项为零。

票数 2
EN

Stack Overflow用户

发布于 2017-09-08 03:57:20

您可以使用rewrite根据正弦和余弦重写表达式/函数。但是,您不能应用realimag函数来获得与非符号计算一样好的形式。在复杂表达式中获得实部和虚部的诀窍是使用0i进行substitute,以获得实部,然后从原始表达式中减去实部以获得虚部。使用simplify作为担保。

举个例子:

代码语言:javascript
复制
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
代码语言:javascript
复制
>> fsincos

fsincos(t) =

C3*(cos(t*x) + sin(t*x)*1i) + C4*(cos(t*x) - sin(t*x)*1i)
代码语言:javascript
复制
>> realf

realf(t) =

cos(t*x)*(C3 + C4)
代码语言:javascript
复制
>> imagf

imagf(t) =

sin(t*x)*(C3*1i - C4*1i)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46103490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档