Mathematica处理复数问题的基本方法
的有关信息介绍如下:在进行四则运算的时候,复数和实数是一样的处理方法,所以这里就不作多余的说明了。那么,这二种数域有什么需要区别的地方呢?
平面上,一个向量对应复平面上一个复数,比如,给出向量{a,b},对应的复数就是:
x = {a, b};
X = x[] + I x[]
对于给定的复数,可以分别给出实部和虚部:
Re[5 + 3 I]
Im[5 + 3 I]
ReIm就是把Re和Im的功能组合起来了:
ReIm[5 + 3 I]
给出一个特定复数的共轭复数:
Conjugate[5 + 6 I]
求复数的模长,用Abs或Norm:
Abs[5 + 12 I]
Norm[5 + 12 I]
如果是待定复数,当如何处理呢?比如,求a+b I的实部和虚部、共轭复数、模长:
ReIm[a + b I]
Conjugate[a + b I]
Norm[a + b I]
Abs[a + b I]
结果,Mathematica把a和b当成复数来对待了。
如果提前约定a和b都是实数,或许就会好一点:
Assuming[(a \[Element] Reals && b \[Element] Reals), ReIm[a + b I]]
Assuming[(a \[Element] Reals && b \[Element] Reals),
Conjugate[a + b I]]
Assuming[(a \[Element] Reals && b \[Element] Reals), Abs[a + b I]]
Assuming[(a \[Element] Reals && b \[Element] Reals), Norm[a + b I]]
然而没什么用,这是怎么回事?
网友BeerRabbit-Math-SH 告诉我,用Refine就可以解决这个问题,这个方法是对的:
Refine[ReIm[a + b I], (a \[Element] Reals && b \[Element] Reals)]
Refine[Conjugate[a + b I], (a \[Element] Reals && b \[Element] Reals)]
Refine[Abs[a + b I], (a \[Element] Reals && b \[Element] Reals)]
Refine[Norm[a + b I], (a \[Element] Reals && b \[Element] Reals)]
但是要注意,Abs在这里失效了。