【问题标题】:Algorithm to convert complex number to Quater-Imaginary base without radix将复数转换为无基数的四虚基数的算法
【发布时间】:2017-09-20 00:16:54
【问题描述】:

注意:我不知道这是属于这里还是属于数学交流,但我会从这里开始,因为我正在寻找数值解决方案。

我需要将通用形式 $x+yi$ 的复数转换为基数 $2i$(Quater-Imaginary Base),最好不带基数(该基数中的小数点/分数)。

  • 是否有任何库可以进行这种转换?
  • 有没有办法在没有基数的情况下以 $2i$ 为基数来表示所有复数(具有整数系数)?
  • 欧几里得除法算法是唯一的转换算法吗?

【问题讨论】:

    标签: python math complex-numbers base-conversion


    【解决方案1】:

    好的,这已经一整天了,没有人回答。因此,尽管我缺乏这方面的知识,但我会尽力回答。经过大量的谷歌搜索,我发现了以下内容:

    有没有做这种转换的库?

    我没有发现任何允许这种类型的转换,我发现最好的是:https://codereview.stackexchange.com/questions/78514/all-in-one-number-base-converter
    这家伙写了一些代码来在碱基之间进行转换,看起来相当不错,只是它不适用于虚构的碱基。-记住这件事,因为你仍然可以使用它-.

    有没有办法在没有基数的情况下以 $2i$ 为底数来表示所有复数(具有整数系数)?

    不,任何具有奇数虚部系数的复数都需要在点后使用一位数字(因为表示1i 的唯一方法是四分之一虚数中的10.2)。

    欧式除法算法是唯一的转换算法吗?

    我不确定欧几里得除法是否在这里有效,-不是简单的形式-。

    但是,经过一番搜索,我发现了这个问题: https://codegolf.stackexchange.com/questions/69112/output-quater-imaginary-base-numbers-in-binary
    这是一个代码高尔夫问题,如果您不介意Javascript,您可以使用第一个答案中的代码,以及没有人可以理解的代码。

    但是,代码背后的想法是您可以将复数的实部转换为基数-4,我们将其称为r。然后在它们之间交错 0 以将实部转换为基数 2i

    1-例如7 在基础-4 中是133,在基础2i 中是10303 这是 因为与2i 中奇数位置对应的幂是 -4 的相同幂,即 [1,-4,16,-32,.....]

    至于虚部,可以将虚部系数除以2,然后转换为-4基数,然后插入基数2i数的奇数位置,得到虚数部分。这个想法是奇数 2i 幂是 [2i,-8i,16i,.....],然后将它们除以 2i(将复数系数除以 2)得到基数 -4 系数 [1, -4,8,.....]

    2-例如要将7i 转换为2i 基数,首先将系数除以 2、得到3.5,即130.2 in base -4,如果你只是插入 这些数字进入你得到的基数2i 的奇数位置 103000.27i

    最后,您只需将两个部分(虚数和实数)相加即可得到基数 2i 中的整个复数
    例如7+7i in base 2i 等于:7 in base 2i10303 - 来自 1-例如和7i 在基础2i 中,即103000.2 - 来自2-例如- 其结果是113303.2,这是2i 的基础7+7i 表示。

    请记住,昨天是我第一次听说虚基数,所以我可能并不完全正确。

    【讨论】:

    • 感谢您的回答!为了给你一个更好的主意,我采用了 Knuth 的 Quater-Imaginary base (implementation) 的“蛮力”方法。因为我推测 2i 基地总是存在解决方案,所以我可以忠实地搜索。大问题?它的速度很慢。好处?如果猜想是真的,我好像不需要小数点了!
    • 我很高兴听到这个消息。但是,我有点好奇如何在没有小数点的情况下表示具有奇数虚系数的复数。可以举个例子吗?
    • 当然!我基本上实现了示例on the wikipedia page,您假设您的实部是所有其他数字的总和,而虚部由其余部分组成。在示例中,-1+4i 被分解为 -1 == 103 和 4i == 020,因此当您将它们加在一起时,您会得到 123(以 2i 为底)。唯一的问题是没有直接的方法来计算这些总和——你只需要猜测。所以我从零枚举所有以 4 为底的数字,将它们变成以 2i 为底的数字,然后测试它们:)
    • 这听起来不太可靠 - 或者在这方面非常有效 -。您可以尝试将 7+7i 输入到您的算法中并查看输出吗?
    • sure thing! 就像我说的——有很多猜测。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多