当前位置: 首页 > 知识库问答 >
问题:

一种无基复数到四元虚基的转换算法

简培
2023-03-14

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

我需要将通用形式$x yi$的复数转换为基$2i$(四分之一虚数基数),最好没有基数(该基数中的小数点/分数)。

  • 有没有进行这种转换的库
  • 有没有办法用不带基数的2i$来表示所有复数(带整数系数)
  • 欧几里德除法是唯一的转换算法吗

共有1个答案

濮阳鸿祯
2023-03-14

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

有没有进行这种转换的库?

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

有没有办法用不带基数的2i$来表示所有复数(带整数系数)?

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

欧几里德除法是唯一的转换算法吗?

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

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

但是,代码背后的想法是您可以将复数的实部转换为base-4。然后在它们之间隔行0以将实部转换为base2i

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

对于虚部,可以将虚部系数除以2,然后将其转换为基数4,然后将其插入基数2i的奇数位置,得到虚部。其思想是奇数2i的幂是[2i,-8i,16i,…],将这些除以2i(将复系数除以2)得到基系数[1,-4,8,…]

2-例如,要将7i转换为2i基数,首先将系数除以2,得到3.5,即130.2基数-4,如果只需将这些数字插入基数2i数字的奇数位置,则得到103000.2,即7i

最后您只需将两部分(虚数和实数)相加,即可得到基数2i中的复数作为一个整体,例如,基数2i中的7 7i等于:基数2i中的7,其结果是>113303.2基本的7i表示法。

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

 类似资料:
  • 如果按照“字节”->“短”->“int”->“长”->“浮点”->“双倍”的自动转换,那么输出应该打印“双倍”,对吗? (https://www.geeksforgeeks.org/type-conversion-java-examples/)

  • 将非常大的n位数字转换为十进制表示的复杂性是什么? 我的想法是,重复整数除法的基本算法,取余数得到每个数字,将具有复杂性,其中是乘法算法的复杂性;然而,除法不是2个n位数字之间的除法,而是1个n位数字和一个小常量之间的除法,因此在我看来,复杂度可能更小。

  • 问题内容: 现在,我正在尝试找到一种方法,将数字从Java中的一个基数转换为另一个基数,给定一个数字,该数字所在的基数以及要转换为的基数。 我找到了JavaScript的解决方案,并且想知道是否可以在Java中执行类似的操作: 问题答案: 你可以做 因此,使用您的函数签名,在Java中:

  • 我很难理解为什么一维数组到基元数组的转换失败,而二维情况下却有效。 我试着翻阅文件,但没有用。我可以看到的一件事是,在第一种情况下,由于我们试图将转换为,所以可能导致错误,而第二种情况可以正常工作,因为将是一个对象类型。 用一个示例来解释的工作原理,特别是对基元的工作原理,将非常有帮助。

  • 主要内容:static_cast 关键字,const_cast 关键字,reinterpret_cast 关键字,dynamic_cast 关键字上节讲到,隐式类型转换是安全的,显式类型转换是有风险的,C语言之所以增加强制类型转换的语法,就是为了强调风险,让程序员意识到自己在做什么。 但是,这种强调风险的方式还是比较粗放,粒度比较大,它并没有表明存在什么风险,风险程度如何。再者,C风格的强制类型转换统一使用 ,而 在代码中随处可见,所以也不利于使用文本检索工具(例如 Windows 下的 Ctr

  • 考虑这段代码: 这在Clang或GCC下不起作用,给我: 错误:不同指针类型“Foo*”和“Bar*”之间的条件表达式缺少强制转换Base*obj=!酒吧foo:bar; 这意味着要编译它,我必须将代码更改为: 既然存在到< code>Base*的隐式转换,那么是什么阻止了编译器这样做呢? 换句话说,为什么不使用强制转换,但使用操作员没有?是因为我不清楚我想使用部件吗?