我试着做一个通用的多项式函数,它给出了计算它的时间周期,最高的多项式幂powr,以及每个常数a;,其中a和powr的长度相同。 我的代码方法如下:time的每个元素都从powr转换为一个向量,然后当使用a将元素与元素相乘时,然后计算结果向量的和,使其成为一个元素。 for i=1:length(time)
result(i)=sum((time(i).^[powr]).*[a]);
end 问题是做这个计算的时间太长了,time的元素越多,和/或a和powr越长。有没有一种方法可以更快地完成这项计算?
我需要解决以下问题:给定大小为x的整数序列N和子集大小k,查找所有可能的子集和。子集和是子集中元素的和。
如果允许x中的元素在子集(子多集)中多次出现(当然到k ),则该问题通过快速傅立叶变换得到伪多项式时间解。下面是一个示例:
x = [0, 1, 2, 3, 6]
k = 4
xFrequency = [1, 1, 1, 1, 0, 0, 1] # On the support of [0, 1, 2, 3, 4, 5, 6]
sumFrequency = selfConvolve(xFrequency, times = 4) # A fast approach is to simply
我正在做一个建造牛顿盆地的老项目,我正努力使它尽快完成。我要加快的第一件事是如何在给定的复点x0上求多项式函数。我想出了4种不同的方法,并用timeit对它们进行了测试。我使用的代码如下:
import timeit
import numpy as np
import random
from numpy import polyval
class Test(object):
re = random.randint(-40000, 40000)/10000
im = random.randint(-40000, 40000)/10000
x0 = complex(re,
如何使Python在保持以x代替实值的能力的同时,将多项式作为输入?
以下是我尝试过的:
fx=input("Enter a Polynomial: ")
x=float(input("At wich position should the polynomial be evaluated: "))
while True:
print(eval("fx"))
continue
出现的问题是Python将只计算fx为x,而不是我通过第二个输入给x的值。
这里是Horner方法的伪码,用于计算x处多项式的值(其中ai表示x^i的系数):
y=a[0]
for i = n to 1
y = a[i] + x*y
许多关于互联网的文章指出,霍纳方法的运行时间与n成正比。但既然y中的项数与(n-i)成正比(当我们已经完成i迭代时),那么所用的总时间不应该是(n-1)+(n-2)....1,它与n^2成正比吗?还是我们总是认为,任何乘法(不管多少项),都需要恒定的时间吗?
我是NTL库的新手,因为它的GF2X、GF2E、GF2EX等等。现在,我想在Galois字段GF(2^8)上执行乘法。问题如下:
Rijndael (standardised as AES) uses the characteristic 2 finite field with 256 elements,
which can also be called the Galois field GF(2^8).
It employs the following reducing polynomial for multiplication:
x^8 + x^4 + x^3 + x^1 + 1.
例
我试图创建一个代码来计算Java中CRC错误检测/校正的其余部分,但是我不知道它和二进制除法之间有什么区别。
在以下情况下:
BigInteger G = new BigInteger("1001", 2);
BigInteger M = new BigInteger("101110", 2);
BigInteger R = M.remainder(G);
R值为:1
但是,当我手动计算CRC余数时,它将是: 011
这里有什么不同,是否有计算CRC余数的方法或算法?
何纳法则是计算多项式求和的有效方法?
int HornerRule( int array [] , unsigned int n , int x )
{
int result = array[n] ;
for( int i = n - 1 ; i >= 0 ; --i )
{
result = result *x + array[i];
}
return result ;
}
我被要求实现NTRU公开密钥系统作为我的最后一年大学项目的一部分。我试图实现一种算法,通过递归将长多项式相乘,但是我很难理解伪码。
Algorithm PolyMult(c, b, a, n, N)
Require: N, n, and the polynomial operands, b and c.
PolyMult returns the product polynomial a through the argument list
PolyMult(a,b,c,n,N)
{
1. if(...)
2. {
3. ...
4. ...
5. ...
6. ...
7