将多项式转换为标准化形式

时间:2012-03-21 14:23:33

标签: algorithm math

有没有人知道形式的等式

2 n +( - 2) n - 1 + ... + 2 - n +( - 2) - n + 1 + ... = y < / p>

如何消除所有系数(非指数)的缺点?我知道 n 是什么,但我无法计算它们以找到 y

例如:

2 4 - 2 2 + 2简化为2 3 + 2 2 + 2

2 4 - 2 3 + 2 - 2 -1 + 2 -2 简化为2 < sup> 3 + 2 0 + 2 -1 + 2 -2

  • y 可以为零但从不为负数。这将被标记为错误。
  • 所有数字均为log 2
  • 系数将始终为1或-1。
  • 不允许浮动或理性。

目的是我想保存指数数组(正数或负数)但不保存系数,我需要多项式采用标准化形式以便于比较。

这种转型有名称吗?

2 个答案:

答案 0 :(得分:0)

似乎你可以用整数的二进制表示来表示正元素,而用负数表示相同的元素。例如:2^4 – 2^2 + 2变为10010(正元素)和00100(负元素)。然后从正整数中减去负整数(得到01110,翻译回来:2^3 + 2^2 + 2

当然你必须确保你可以保存所有值(例如,如果你有2 ^ 100的组件,没有内置的整数类型就足够了 - 你至少需要一个100位整数(更大)如果你有负指数,见下文))。此时,您可以滚动自己的实现(或查找BigInt库)。

此外,你必须跟踪哪个位索引代表哪个指数 - 在上面的例子中它是微不足道的,因为所有指数都是非负的,但是你需要对负指数进行一些移位(例如2^4 – 2^3 + 2 – 2^-1 + 2^-2转换为10010.01(+)和01000.10( - ),点(.)表示非负指数和负指数之间的差异;然后导致01001.112^3 + 2^0 + 2^-1 + 2^-2)。

答案 1 :(得分:0)

如果你想要一个算法,只需选择一个负项并转换:-2 n =&gt; -2 n + 1 +2 n ,然后在可能的情况下取消术语(例如2 n + 1 -2 n + 1 =&gt; 0)。重复,直到没有更多的否定词。