找回密码
 快速注册
搜索
查看: 35|回复: 8

实现下面这个复数变换使用什么指令?

[复制链接]

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

TSC999 发表于 2023-12-17 21:37 |阅读模式
复数变换.png
上面两式是相等的。使用什么指令能把上面那个复数表达式变换成下面的式子呢?

730

主题

1万

回帖

9万

积分

积分
93593
QQ

显示全部楼层

kuing 发表于 2023-12-18 02:32
乱试了一通,竟然出来了😁
  1. z = Sqrt[-4 - 3 I] (-1)^(17/20) (1 + Sqrt[5]);
  2. z // ComplexExpand;
  3. {Re[%], Im[%]} // TrigToExp // FullSimplify
复制代码

输出的是实部和虎部:{-2 + Sqrt[5 + 2 Sqrt[5]], 1 + 2 Sqrt[5 + 2 Sqrt[5]]}

原理不明,也不知道有没有一般性😁

点评

厉害!谢谢了!这个指令确实可以。收藏了。  发表于 2023-12-18 10:50

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-12-18 10:57
这个话题的来源是下面这个几何题:
正五边形 OABCD 如下图,O 在坐标原点,A 点坐标为 a=-4+2I, 求 C 点的坐标。
五边形题图.png
采用 kuing 上述指令的程序图片是:
五边形题运行结果.png
程序代码是:
  1. Clear["Global`*"];(*以下 kOA、kAB、kBC 分别表示 OA、AB、BC 线段的复斜率*)
  2. \!\(\*OverscriptBox[\(o\), \(_\)]\) = o = 0;  a = -4 + 2 I;
  3. \!\(\*OverscriptBox[\(a\), \(_\)]\) = -4 - 2 I;
  4. kOA = E^(2 I (\[Pi] - ArcTan[2/4])); kOA = 0.6 - 0.8 I; kAB = kOA E^(2 I (3 \[Pi]/5)); kAB = (-(3/5) + (4 I)/5) Power[-1, (5)^-1];
  5. kBC = kAB E^(2 I (3 \[Pi]/5));
  6. k[a_, b_] := (a - b)/(\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)); (*复斜率定义*)
  7. W1 = {b, \!\(\*OverscriptBox[\(b\), \(_\)]\)} /. Simplify@Solve[{(a - o) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(o\), \(_\)]\)) == (a - b) (\!\(\*OverscriptBox[\(a\), \(_\)]\) - \!\(\*OverscriptBox[\(b\), \(_\)]\)), k[a, b] == kAB}, {b, \!\(\*OverscriptBox[\(b\), \(_\)]\)}] // Flatten;
  8. b = Part[W1, 1]; \!\(\*OverscriptBox[\(b\), \(_\)]\) = Part[W1, 2];
  9. W2 = {c, \!\(\*OverscriptBox[\(c\), \(_\)]\)} /. Simplify@Solve[{(b - a) (\!\(\*OverscriptBox[\(b\), \(_\)]\) - \!\(\*OverscriptBox[\(a\), \(_\)]\)) == (b - c) (\!\(\*OverscriptBox[\(b\), \(_\)]\) - \!\(\*OverscriptBox[\(c\), \(_\)]\)), k[b, c] == kBC}, {c, \!\(\*OverscriptBox[\(c\), \(_\)]\)}] // Flatten;
  10. c = Part[W2, 3]; \!\(\*OverscriptBox[\(c\), \(_\)]\) = Part[W2, 4];
  11. c // ComplexExpand;
  12. Print["C 点坐标为:", {Re[%], Im[%]} // TrigToExp // FullSimplify];
复制代码

68

主题

434

回帖

4269

积分

积分
4269

显示全部楼层

hejoseph 发表于 2023-12-18 10:57
复数开方本身是多值的,而Mathematica选择了其中的一个分支值作计算,结果并不具有普遍性,更加严重的情况有可能出现与实际要求的计算结果不符合的情况。

点评

复数开方是多值的没错,但是 mathematica 给出的是复数开方的“主值”,具有唯一性。  发表于 2023-12-18 11:01
我说的不是唯一性,而是说计算结果可能跟实际不相符。例如(-1)^(1/3),一般来说这个结果应该是-1,而Mathematica却不是。  发表于 2023-12-18 11:10

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

 楼主| TSC999 发表于 2023-12-18 11:15
本帖最后由 TSC999 于 2023-12-18 11:24 编辑
hejoseph 发表于 2023-12-18 10:57
复数开方本身是多值的,而Mathematica选择了其中的一个分支值作计算,结果并不具有普遍性,更加严重的情况 ...


复数开方是多值的,因此在 mathematica 中规定了复数开方的主值概念。下面举两个例子说明:
第一个例子:
复数开方的主值.png
第二个例子:
复数开方的主值一.png

因此,在 mathematica 中指望用 \(N[\sqrt[3]{-8}]\) 算出 -8 的立方根等于 -2 是不行的。应该用指令 CubeRoot[-8] 或 Surd[-8, 3] 才行。

点评

这个我当然知道了,三次根可以这样,五次呢,其他奇数次的根呢。所以用Mathematica的复数开方要慎重,一不小心就会得到错误的结果。  发表于 2023-12-18 11:39

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 12:09

Powered by Discuz!

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