找回密码
 欢迎注册
查看: 44069|回复: 13

[求助] mathematica 用什么指令能把复数表达式的实部虚部分开

[复制链接]
发表于 2016-8-26 14:40:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
对于一个复数字母表达式(不是数字表达式哈),用什么指令能把它的实部或虚部分开?
如何把复数公式的实部和虚部分开?.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2016-8-26 15:19:54 | 显示全部楼层
你使劲上传图片,郭先强会生气的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2016-8-26 16:59:25 | 显示全部楼层
用共轭函数,还要假定abcd都是实数。我觉得你这样表示隐含了这个条件而mathematica不知道。
Simplify[(#+Conjugate[#])/2&[(a+b I)/(c+d I)],Element[{a,b,c,d},Reals]]

点评

看楼主贴图的 红色文字 感觉 不是这个意思  发表于 2016-8-26 21:19
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2016-8-26 20:49:52 | 显示全部楼层
在Mathematica里面,一切 都是表达式,一切表达式又都是 可以用树来表示。所以你的问题完全可以用树的一些操作函数来完成。

于是查看一下树形结构
  1. ComplexExpand[(a + b I)/(c + d I)] // TreeForm
复制代码


由此可以得知 ComplexExpand[(a + b I)/(c + d I)]的输出是一个Plus表达式,即该表达式的Head是Plus,参数是 三个子表达式。对于虚部,我们要取的是最后一个子表达式,所以只需Last即可。而该子表达式是带有I的,进一步递归之,取这个Times表达式的最后元素,所以最终答案就是

  1. ComplexExpand[(a + b I)/(c + d I)] // Last // Last
复制代码


==================================================
基于以上基础概念的认识,可以玩些花样:
取实部:
  1. Take[ComplexExpand[(a + b I)/(c + d I)], 2]
复制代码

取虚部:
  1. Take[ComplexExpand[(a + b I)/(c + d I)], -1, -1]
复制代码

点评

嗯嗯,横看成岭侧成峰,没说我这个是标准答案。 另外,现在的Mathematica早已经不是数学 软件了,所以用它的时候视野可以放的更广阔写  发表于 2016-8-28 09:05
硬抠出表达式中间的某块感觉不够“数学”。  发表于 2016-8-28 06:28
太感谢 wayne 大师了!您说的完全对,我觉得极少会有人知道这些。  发表于 2016-8-26 22:01
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2016-8-28 06:30:33 | 显示全部楼层
居然把函数次序倒过来直接出结果了。
  1. ComplexExpand[Re[(a + b I)/(c + d I)]]
复制代码

点评

漂亮!Re,Im本身是支持符号运算的  发表于 2016-8-28 09:02
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2016-8-28 06:55:19 | 显示全部楼层
然后…………Mathematica默认变量是实数?因为a、b、c、d替换成复数形式的话结果其实很美。
  1. (FullSimplify[#/.I->0]+FullSimplify[#-(#/.I->0)])&[ComplexExpand[(a+b I)/(c+d I)/.{a->aR+aI I,b->bR+bI I,c->cR+cI I,d->dR+dI I}]]
复制代码

点评

那还不如直接 ComplexExpand[(a + b I)/(c + d I), {a, b, c, d}] 呢  发表于 2016-8-28 09:23
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2022-5-9 11:13:10 | 显示全部楼层
下面的方法也很有用:
由 \( z = (a + b\,{i})/(c + d\,{i}) \)  知 \(z\) 的共轭复数为 \( \overline{z}=  (a - b\,{i})/(c - d\,{i}) \)
实部\( =(z +\overline{z})/2 \);
虚部\( =(z -\overline{z})/2 \);

\(z =\) 实部 + 虚部
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-3-15 12:54:30 | 显示全部楼层
ComplexExpand[ReIm[(a + b I)/(c + d I)]]
这个命令,可以把实部与虚部分开来,都当成实数
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-12-22 20:16 , Processed in 0.033123 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表