Matlab 的 root 和 conj 错误

问题描述 投票:0回答:1

我想我发现了一个Matlab bug(我目前使用的是R2023a)。我的问题是,我该如何规避它。

考虑以下代码

syms z
r1 = vpa( root( z^5 + z^4 + z^3 + z^2 + z^1 + 1 == 0, z, 1 ) )          % 0.5 + 0.866025403784438646763723170753i
r2 = conj( vpa( root( z^5 + z^4 + z^3 + z^2 + z^1 + 1 == 0, z, 1 ) ) )  % 0.5 - 0.866025403784438646763723170753i

s1 = vpa( root( z^5 + z^4 + z^3 + z^2 + z^1 + 1 == 0, z, 1 ) )          % 0.5 + 0.866025403784438646763723170753i
s2 = vpa( conj( root( z^5 + z^4 + z^3 + z^2 + z^1 + 1 == 0, z, 1 ) ) )  % 0.5 + 0.866025403784438646763723170753i

其中

r1
r2
彼此正确共轭,但
s1
s2
相同。因此,matlab似乎忽略了对“
conj
对象”的
root
调用(我不知道这里正确的术语。

  • 如何正确共轭“
    root
    -对象”?
  • 分别(我的实际问题可能更容易解决):如何在Matlab中识别两个值是否彼此共轭。
matlab symbolic-math complex-numbers
1个回答
0
投票

由于没有已发布的根为 root(表达式,1) 的首选“顺序”,因此符号工具箱可以自由地为您提供它想要的任何顺序。由于符号工具箱知道当系数为实数时,根以复共轭对的形式出现,因此在 conj(roots(表达式,1)) 的情况下,显然工具箱只是隐式地切换了背景顺序以简化表达式。该表达式显然被解释为“表达式的一个根的共轭”,而不是“给定首选顺序的该表达式的第一个根的共轭”。事实上,根的“顺序”是任意的,并且可以根据调用顺序和工具箱简化在后台进行更改,这是一个错误吗?特别是考虑到文档中没有发布首选“顺序”?我把这个留给你。如果您一次请求所有这些,然后转换它们,也许您可以在代码中毫无歧义地使用它们。例如,

>> syms z
>> ex = z^5 + z^4 + z^3 + z^2 + z^1 + 1 == 0;
>> s = root(ex)
s =
 root(z^5 + z^4 + z^3 + z^2 + z + 1, z, 1)
 root(z^5 + z^4 + z^3 + z^2 + z + 1, z, 2)
 root(z^5 + z^4 + z^3 + z^2 + z + 1, z, 3)
 root(z^5 + z^4 + z^3 + z^2 + z + 1, z, 4)
 root(z^5 + z^4 + z^3 + z^2 + z + 1, z, 5)
>> vpa(s)
ans =
 - 0.5 - 0.86602540378443864676372317075294i
   0.5 - 0.86602540378443864676372317075294i
   0.5 + 0.86602540378443864676372317075294i
 - 0.5 + 0.86602540378443864676372317075294i
                                        -1.0
>> c = conj(root(ex))
c =
 root(z^5 + z^4 + z^3 + z^2 + z + 1, z, 1)
 root(z^5 + z^4 + z^3 + z^2 + z + 1, z, 2)
 root(z^5 + z^4 + z^3 + z^2 + z + 1, z, 3)
 root(z^5 + z^4 + z^3 + z^2 + z + 1, z, 4)
 root(z^5 + z^4 + z^3 + z^2 + z + 1, z, 5)
>> vpa(c)
ans =
 - 0.5 - 0.86602540378443864676372317075294i
   0.5 - 0.86602540378443864676372317075294i
   0.5 + 0.86602540378443864676372317075294i
 - 0.5 + 0.86602540378443864676372317075294i
                                        -1.0
© www.soinside.com 2019 - 2024. All rights reserved.