请问MMA复数的幅角主值如何修改为 [0,2pi) ?
mathematica吧
全部回复
仅看楼主
level 4
MMA默认幅角是(-pi, pi ], 比如-2i的幅角为-pi/2, 所以
sqrt[-2i]=1-i.
但是在[0,2pi)的设定下, 2i的幅角为3pi/2, 所以
sqrt[-2i]=-1+i.
请问如何才能修改幅角的定义, 或者有没有等效的方法使得在处理类似的根号运算时,
即如上面的sqrt[-2i], 能够得到-1+i的结果
谢谢~
2022年04月10日 08点04分 1
level 4
如果只涉及根号的话, 我尝试重新对Sqrt函数做了分段函数的定义来有效的实现, 但是还是除了一些问题...
-----代码-----------------------------------
Unprotect[Sqrt];
Sqrt[x_] := x^(1/2) /; Im[x] >= 0;
Sqrt[x_] := -(x)^((1/2)) /; Im[x] < 0;
----------------------------------------------
这样定义之后, 如果输入确切的复数, 确实实现了要求. 比如Sqrt[-2 I]=-1+I
但是如果输入一个未知数y, 然后再用Replace来对y赋值, 结果却又回到了之前的结果...
2022年04月10日 09点04分 3
吧务
level 10
你定义的失败是容易解释的,但要解决这个问题没有那么简单。
内置的MMA代码如Integrate积分器实际上绕过了这个问题,我有空再说。
2022年04月10日 12点04分 4
1