TSC999 发表于 2016-8-26 14:40:28

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

对于一个复数字母表达式(不是数字表达式哈),用什么指令能把它的实部或虚部分开?

mathematica 发表于 2016-8-26 15:19:54

你使劲上传图片,郭先强会生气的

zeroieme 发表于 2016-8-26 16:59:25

用共轭函数,还要假定abcd都是实数。我觉得你这样表示隐含了这个条件而mathematica不知道。
Simplify[(#+Conjugate[#])/2&[(a+b I)/(c+d I)],Element[{a,b,c,d},Reals]]

wayne 发表于 2016-8-26 20:49:52

在Mathematica里面,一切 都是表达式,一切表达式又都是 可以用树来表示。所以你的问题完全可以用树的一些操作函数来完成。

于是查看一下树形结构
ComplexExpand[(a + b I)/(c + d I)] // TreeForm

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

ComplexExpand[(a + b I)/(c + d I)] // Last // Last

==================================================
基于以上基础概念的认识,可以玩些花样:
取实部:
Take, 2]
取虚部:
Take, -1, -1]

zeroieme 发表于 2016-8-28 06:30:33

居然把函数次序倒过来直接出结果了。
ComplexExpand]

zeroieme 发表于 2016-8-28 06:55:19

然后…………Mathematica默认变量是实数?因为a、b、c、d替换成复数形式的话结果其实很美。
(FullSimplify[#/.I->0]+FullSimplify[#-(#/.I->0)])&]

TSC999 发表于 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 =\) 实部 + 虚部

nyy 发表于 2023-3-15 12:54:30

ComplexExpand]
这个命令,可以把实部与虚部分开来,都当成实数
页: [1]
查看完整版本: mathematica 用什么指令能把复数表达式的实部虚部分开