生成函数多项式操作合集

(3)CRC校验码的生成多项式表示与常用生成多项式 这是CRC码原理与实现系列的第三篇文章。(1)CRC码简介及其与汉明码的区别(2)CRC校验码的原理。 阅读详情

一.生成函数与多项式乘法.

众所周知,生成函数是OI中的计数利器,而很多生成函数的题目需要快速计算式子中的多项式运算,所以本篇主要是介绍多项式运算的.

值得注意的是,这里很多奇怪的多项式运算本来是不存在模 x n x^n xn意义下的定义的,但是由于生成函数本质是形式幂级数,所以直接取泰勒展开后的结果就是了.

多项式乘法作为最基础的多项式运算,这里不再介绍,具体参见快速傅里叶变换FFT与快速数论变换NTT入门.


二.多项式求逆.

多项式的逆:对于一个多项式 F ( x ) F(x) F(x),其逆 G ( x ) G(x) G(x)定义为:
G ( x ) F ( x ) = 1 G(x)F(x)=1 G(x)F(x)=1

但很多情况下 G ( x ) G(x) G(x)是一个无穷级数的形式,所以一般我们只需要取其最后 n n n项(次数低于 n n n次),记为:
G ( x ) F ( x ) ≡ 1    ( m o d    x n ) G(x)F(x)\equiv 1\,\,(mod\,\,x^{n}) G(x)F(x)≡1(modxn)

当然可以暴力求解,但是有一种倍增的思路:我们假设已经求出了模 x ⌈ n 2 ⌉ x^{\left\lceil\frac{n}{2}\right\rceil} x⌈2n​⌉意义下 F ( x ) F(x) F(x)的逆 H ( x ) H(x) H(x),推出 G ( x ) G(x) G(x)与 H ( x ) H(x) H(x)之间的关系.

现在有两个条件:
G ( x ) F ( x ) ≡ 1    ( m o d    x ⌈ n 2 ⌉ ) H ( x ) F ( x ) ≡ 1    ( m o d    x ⌈ n 2 ⌉ ) G(x)F(x)\equiv 1 \,\,(mod\,\,x^{\left\lceil\frac{n}{2}\right\rceil})\\ H(x)F(x)\equiv 1\,\,(mod\,\,x^{\left\lceil\frac{n}{2}\right\rceil}) G(x)F(x)≡1(modx⌈2n​⌉)H(x)F(x)≡1(modx⌈2n​⌉)

将两式相减可得:
( G ( x ) − H ( x ) ) F ( x ) ≡ 0    ( m o d    x ⌈ n 2 ⌉ ) G ( x ) − H ( x ) ≡ 0    ( m o d    x ⌈ n 2 ⌉ ) (G(x)-H(x))F(x)\equiv 0\,\,(mod\,\,x^{\left\lceil\frac{n}{2}\right\rceil})\\ G(x)-H(x)\equiv 0\,\,(mod\,\,x^{\left\lceil\frac{n}{2}\right\rceil}) (G(x)−H(x))F(x)≡0(modx⌈2n​⌉)G(x)−H(x)≡0(modx⌈2n​⌉)

再平方一下可以得到:
( G ( x ) − H ( x ) ) 2 ≡ 0    ( m o d    x n ) G 2 ( x ) + H 2 ( x ) − 2 G ( x ) H ( x ) ≡ 0    ( m o d    x n ) (G(x)-H(x))^{2}\equiv 0\,\,(mod\,\,x^{n})\\ G^{2}(x)+H^{2}(x)-2G(x)H(x)\equiv 0\,\,(mod\,\,x^{n}) (G(x)−H(x))2≡0(modxn)G2(x)+H2(x)−2G(x)H(x)≡0(modxn)

两边同时乘上 F ( x ) F(x) F(x)得到:
F ( x ) G 2 ( x ) + F ( x ) H 2 ( x ) − 2 F ( x ) G ( x ) H ( x ) ≡ 0    ( m o d    x n ) G ( x ) + F ( x ) H 2 ( x ) − 2 H ( x ) ≡ 0    ( m o d    x n ) G ( x ) ≡ 2 H ( x ) − F ( x ) H 2 ( x )    ( m o d    x n ) G ( x ) ≡ H ( x ) ( 2 − F ( x ) H ( x ) )    ( m o d    x n ) F(x)G^{2}(x)+F(x)H^{2}(x)-2F(x)G(x)H(x)\equiv 0\,\,(mod\,\,x^{n})\\ G(x)+F(x)H^{2}(x)-2H(x)\equiv 0\,\,(mod\,\,x^{n})\\ G(x)\equiv 2H(x)-F(x)H^{2}(x)\,\,(mod\,\,x^{n})\\ G(x)\equiv H(x)(2-F(x)H(x))\,\,(mod\,\,x^{n}) F(x)G2(x)+F(x)H2(x)−2F(x)G(x)H(x)≡0(modxn)G(x)+F(x)H2(x)−2H(x)≡0(modxn)G(x)≡2H(x)−F(x)H2(x)(modxn)G(x)≡H(x)(2−F(x)H(x))(modxn)

然后就可以快乐倍增了.

时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn).

代码如下:

int ta[N+9];

void Poly_inv(int *a,int n,int *res){
  if (!n) {res[0]=Get_inv(a[0]);return;}
  Poly_inv(a,n>>1,res);
  for (int i=0;i<=n;++i) ta[i]=a[i];
  Get_len(n<<1);
  NTT(res,len,0);
  NTT(ta,len,0);
  for (int i=0;i<len;++i) smul(res[i],sub(2,mul(res[i],ta[i]))),ta[i]=0;
  NTT(res,len,1);
  for (int i=n+1;i<=n<<1;++i) res[i]=0;
}



三.多项式对数.

多项式对数主要是指多项式 ln ⁡ \ln ln,即给定多项式 F ( x ) F(x) F(x),求 G ( x ) G(x) G(x)满足:
e G ( x ) ≡ F ( x )    ( m o d    x n ) e^{G(x)}\equiv F(x)\,\,(mod\,\,x^{n}) eG(x)≡F(x)(modxn)

对数函数在求导后就变成除法了,所以尝试先求导再积分:
ln ⁡ F ( x ) = ∫ ( ln ⁡ F ( x ) ) ′ d x = ∫ ln ⁡ ′ F ( x ) F ′ ( x ) d x = ∫ F ′ ( x ) F ( x ) d x \ln F(x)=\int(\ln F(x))'\mathrm{d}x=\int\ln'F(x)F'(x)\mathrm{d}x=\int\frac{F'(x)}{F(x)}\mathrm{d}x lnF(x)=∫(lnF(x))′dx=∫ln′F(x)F′(x)dx=∫F(x)F′(x)​dx

现在的式子就可以直接做了.

不过有一个问题是,这样子多项式 ln ⁡ \ln ln必须得满足 F ( x ) F(x) F(x)的常数项为 1 1 1,最终求出的 G ( x ) G(x) G(x)的常数项为 0 0 0.

至于原因,主要是这样按照泰勒展开定义的多项式 ln ⁡ \ln ln必须满足这样的条件.

时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn).

代码如下:

void Poly_ln(int *a,int n,int *res){
  if (!n) return;
  Poly_inv(a,n-1,res);
  for (int i=1;i<=n;++i) ta[i-1]=mul(i,a[i]);
  Get_len(n-1<<1);
  NTT(res,len,0);
  NTT(ta,len,0);
  for (int i=0;i<len;++i) smul(res[i],ta[i]),ta[i]=0;
  NTT(res,len,1);
  for (int i=n;i>=1;--i) res[i]=mul(inv[i],res[i-1]);
  res[0]=0;
  for (int i=n+1;i<n<<1;++i) res[i]=0;
}



四.牛顿迭代.

牛顿迭代是一种估算方程解的方法,不过这里我们直接应用到多项式上了.

对于给定的规则函数 T ( x ) T(x) T(x),我们有方程:
T ( F ( x ) ) ≡ 0    ( m o d    x n ) T(F(x))\equiv 0\,\,(mod\,\,x^{n}) T(F(x))≡0(modxn)

现在我们要求 F ( x ) F(x) F(x).

考虑倍增求解,如果我们已经求出了在模 x ⌈ n 2 ⌉ x^{\left\lceil\frac{n}{2}\right\rceil} x⌈2n​⌉意义下的解 G ( x ) G(x) G(x),即:
T ( G ( x ) ) ≡ 0    ( m o d    x ⌈ n 2 ⌉ ) T(G(x))\equiv 0\,\,(mod\,\,x^{\left\lceil\frac{n}{2}\right\rceil}) T(G(x))≡0(modx⌈2n​⌉)

那么我们将 T ( F ( x ) ) T(F(x)) T(F(x))在 G ( x ) G(x) G(x)处泰勒展开:
T ( F ( x ) ) = ∑ i = 0 + ∞ T ( i ) ( G ( x ) ) i ! ( F ( x ) − G ( x ) ) i = T ( G ( x ) ) + T ′ ( G ( x ) ) ( F ( x ) − G ( x ) ) + 1 2 T ′ ′ ( G ( x ) ) ( F ( x ) − G ( x ) ) 2 + ⋯ T(F(x))=\sum_{i=0}^{+\infty}\frac{T^{(i)}(G(x))}{i!}(F(x)-G(x))^{i}\\ =T(G(x))+T'(G(x))(F(x)-G(x))+\frac{1}{2}T''(G(x))(F(x)-G(x))^{2}+\cdots T(F(x))=i=0∑+∞​i!T(i)(G(x))​(F(x)−G(x))i=T(G(x))+T′(G(x))(F(x)−G(x))+21​T′′(G(x))(F(x)−G(x))2+⋯

由于我们求的是模 x n x^{n} xn意义下的结果,所以对于 ( F ( x ) − G ( x ) ) 2 (F(x)-G(x))^{2} (F(x)−G(x))2有:
( F ( x ) − G ( x ) ) 2 ≡ 0    ( m o d    n ) (F(x)-G(x))^{2}\equiv 0\,\,(mod\,\,n) (F(x)−G(x))2≡0(modn)

也就是说:
T ( F ( x ) ) ≡ 0    ( m o d    x n ) T ( G ( x ) ) + T ′ ( G ( x ) ) ( F ( x ) − G ( x ) ) ≡ 0    ( m o d    x n ) F ( x ) ≡ G ( x ) − T ( G ( x ) ) T ′ ( G ( x ) )    ( m o d    x n ) T(F(x))\equiv 0\,\,(mod\,\,x^{n})\\ T(G(x))+T'(G(x))(F(x)-G(x))\equiv 0\,\,(mod\,\,x^{n})\\ F(x)\equiv G(x)-\frac{T(G(x))}{T'(G(x))}\,\,(mod\,\,x^{n}) T(F(x))≡0(modxn)T(G(x))+T′(G(x))(F(x)−G(x))≡0(modxn)F(x)≡G(x)−T′(G(x))T(G(x))​(modxn)

推导出来的结果在做多项式操作的时候非常有效.


五.多项式指数.

多项式指数主要是指多项式 exp ⁡ \exp exp,即给定多项式 F ( x ) F(x) F(x),求 G ( x ) G(x) G(x)满足:
G ( x ) ≡ e F ( x )    ( m o d    x n ) G(x)\equiv e^{F(x)}\,\,(mod\,\,x^{n}) G(x)≡eF(x)(modxn)

我们先对两边求 ln ⁡ \ln ln,得到:
ln ⁡ G ( x ) ≡ F ( x )    ( m o d    x n ) ln ⁡ G ( x ) − F ( x ) ≡ 0    ( m o d    x n ) \ln G(x)\equiv F(x)\,\,(mod\,\,x^{n})\\ \ln G(x)-F(x)\equiv 0\,\,(mod\,\,x^{n}) lnG(x)≡F(x)(modxn)lnG(x)−F(x)≡0(modxn)

设在模 x ⌈ n 2 ⌉ x^{\left\lceil\frac{n}{2}\right\rceil} x⌈2n​⌉意义下的答案为 H ( x ) H(x) H(x),那么根据牛顿迭代公式有:
G ( x ) ≡ H ( x ) − ln ⁡ H ( x ) − F ( x ) 1 H ( x )    ( m o d    x n ) G ( x ) ≡ H ( x ) ( 1 − ln ⁡ H ( x ) + F ( x ) )    ( m o d    x n ) G(x)\equiv H(x)-\frac{\ln H(x)-F(x)}{\frac{1}{H(x)}}\,\,(mod\,\,x^{n})\\ G(x)\equiv H(x)\left(1-\ln H(x)+F(x)\right)\,\,(mod\,\,x^{n}) G(x)≡H(x)−H(x)1​lnH(x)−F(x)​(modxn)G(x)≡H(x)(1−lnH(x)+F(x))(modxn)

然后就可以快乐倍增了.

时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn).

与 ln ⁡ \ln ln相对的, exp ⁡ \exp exp必须满足 F ( x ) F(x) F(x)常数项为 0 0 0, G ( x ) G(x) G(x)常数项为 1 1 1的条件.

代码如下:

int tb[N+9];

void Poly_exp(int *a,int n,int *res){
  if (!n) {res[0]=1;return;}
  Poly_exp(a,n>>1,res);
  Poly_ln(res,n,tb);
  tb[0]=sub(add(a[0],1),tb[0]);
  for (int i=1;i<=n;++i) tb[i]=sub(a[i],tb[i]);
  Get_len(n<<1);
  NTT(res,len,0);
  NTT(tb,len,0);
  for (int i=0;i<len;++i) smul(res[i],tb[i]),tb[i]=0;
  NTT(res,len,1);
  for (int i=n+1;i<=n<<1;++i) res[i]=0;
}



六.多项式快速幂.

给定多项式 F ( x ) F(x) F(x),求 G ( x ) G(x) G(x)满足:
G ( x ) ≡ F k ( x )    ( m o d    x n ) G(x)\equiv F^{k}(x)\,\,(mod\,\,x^{n}) G(x)≡Fk(x)(modxn)

当然可以直接拿快速幂写,但是这样时间复杂度为 O ( n log ⁡ n log ⁡ k ) O(n\log n\log k) O(nlognlogk),然而还有更加优秀的做法.

我们考虑对其 ln ⁡ \ln ln后 exp ⁡ \exp exp,即:
G ( x ) ≡ e k ln ⁡ F ( x )    ( m o d    x n ) G(x)\equiv e^{k\ln F(x)}\,\,(mod\,\,x^{n}) G(x)≡eklnF(x)(modxn)

问题是这个做法只能用在常数项为 1 1 1的情况.

对于常数项不为 1 1 1的情况,我们取其最低的不为 0 0 0的项,设为 a m x m a_mx^{m} am​xm,那么直接将这个单项式作为因式提出来后再做快速幂,最后将 ( a m x m ) k (a_mx^{m})^{k} (am​xm)k乘回去就好了.

时间复杂度降到了 O ( n log ⁡ n ) O(n\log n) O(nlogn).

代码如下:

int tc[N+9];

void Poly_power(int *a,int n,int k,int *res){
  if (!k) {res[0]=1;return;}
  int m=0;
  for (;!a[m]&&m<=n;++m);
  if (m>n/k) return;
  int mk=m*k,t0=Power(a[m],k),t1=Get_inv(a[m]);
  for (int i=0;i<=n-mk;++i) tb[i]=mul(a[i+m],t1);
  Poly_ln(tb,n-mk,tc);
  for (int i=0;i<=n-mk;++i) smul(tc[i],k),tb[i]=0;
  Poly_exp(tc,n-mk,res);
  for (int i=n-mk;i>=0;--i) res[i+mk]=mul(res[i],t0),tc[i]=0;
  for (int i=0;i<mk;++i) res[i]=0;
}



七.多项式开根.

给定多项式 F ( x ) F(x) F(x),求 G ( x ) G(x) G(x)满足:
G 2 ( x ) ≡ F ( x )    ( m o d    x n ) G^{2}(x)\equiv F(x)\,\,(mod\,\,x^{n}) G2(x)≡F(x)(modxn)

当然可以直接 ln ⁡ \ln ln后 exp ⁡ \exp exp,但是还有一种常数更加优秀的牛顿迭代做法.

直接进行移项,得到:
G 2 ( x ) − F ( x ) ≡ 0    ( m o d    x n ) G^{2}(x)-F(x)\equiv 0\,\,(mod\,\,x^{n}) G2(x)−F(x)≡0(modxn)

设在模 x ⌈ n 2 ⌉ x^{\left\lceil \frac{n}{2}\right\rceil} x⌈2n​⌉意义下的答案为 H ( x ) H(x) H(x),那么根据牛顿迭代公式有:
G ( x ) ≡ H ( x ) − H 2 ( x ) − F ( x ) 2 H ( x )    ( m o d    x n ) G ( x ) ≡ 1 2 ( H ( x ) + F ( x ) H ( x ) )    ( m o d    x n ) G(x)\equiv H(x)-\frac{H^{2}(x)-F(x)}{2H(x)}\,\,(mod\,\,x^{n})\\ G(x)\equiv \frac{1}{2}\left(H(x)+\frac{F(x)}{H(x)}\right)\,\,(mod\,\,x^{n}) G(x)≡H(x)−2H(x)H2(x)−F(x)​(modxn)G(x)≡21​(H(x)+H(x)F(x)​)(modxn)

至于常数项写个二次剩余就行了.

时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn).

代码如下:

void Poly_sqrt(int *a,int n,int *res){
  if (!n) {int t=Cipolla(a[0]);res[0]=min(t,mod-t);return;}
  Poly_sqrt(a,n>>1,res);
  Poly_inv(res,n,tb);
  for (int i=0;i<=n;++i) ta[i]=a[i];
  Get_len(n<<1);
  NTT(ta,len,0);
  NTT(tb,len,0);
  for (int i=0;i<len;++i) smul(ta[i],tb[i]),tb[i]=0;
  NTT(ta,len,1);
  for (int i=0;i<=n;++i) res[i]=mul(inv2,add(res[i],ta[i])),ta[i]=0;
  for (int i=n+1;i<=n<<1;++i) ta[i]=0;
}



八.多项式三角函数.

给定多项式 F ( x ) F(x) F(x),求 G ( x ) G(x) G(x)和 H ( x ) H(x) H(x)满足:
G ( x ) ≡ sin ⁡ F ( x )    ( m o d    x n ) H ( x ) ≡ cos ⁡ F ( x )    ( m o d    x n ) G(x)\equiv \sin F(x)\,\,(mod\,\,x^{n})\\ H(x)\equiv \cos F(x)\,\,(mod\,\,x^{n}) G(x)≡sinF(x)(modxn)H(x)≡cosF(x)(modxn)

生成函数本质上是形式幂级数,所以将 e x , sin ⁡ ( x ) , cos ⁡ ( x ) e^{x},\sin(x),\cos(x) ex,sin(x),cos(x)三者泰勒展开:
e x = ∑ i = 0 + ∞ x i i ! = 1 + x + x 2 2 ! + x 3 3 ! + ⋯ sin ⁡ ( x ) = ∑ i = 0 + ∞ ( − 1 ) i ( 2 i + 1 ) ! x 2 i + 1 = x − x 3 3 ! + x 5 5 ! − x 7 7 ! + ⋯ cos ⁡ ( x ) = ∑ i = 0 + ∞ ( − 1 ) i ( 2 i ) ! x 2 i = 1 − x 2 2 ! + x 4 4 ! − x 6 6 ! + ⋯ e^{x}=\sum_{i=0}^{+\infty}\frac{x^{i}}{i!}=1+x+\frac{x^{2}}{2!}+\frac{x^{3}}{3!}+\cdots\\ \sin(x)=\sum_{i=0}^{+\infty}\frac{(-1)^{i}}{(2i+1)!}x^{2i+1}=x-\frac{x^{3}}{3!}+\frac{x^{5}}{5!}-\frac{x^{7}}{7!}+\cdots\\ \cos(x)=\sum_{i=0}^{+\infty}\frac{(-1)^{i}}{(2i)!}x^{2i}=1-\frac{x^{2}}{2!}+\frac{x^{4}}{4!}-\frac{x^{6}}{6!}+\cdots ex=i=0∑+∞​i!xi​=1+x+2!x2​+3!x3​+⋯sin(x)=i=0∑+∞​(2i+1)!(−1)i​x2i+1=x−3!x3​+5!x5​−7!x7​+⋯cos(x)=i=0∑+∞​(2i)!(−1)i​x2i=1−2!x2​+4!x4​−6!x6​+⋯

用这些东西可以推导出用三角函数表示 exp ⁡ \exp exp的欧拉公式:
e ϕ i = cos ⁡ ϕ + i sin ⁡ ϕ e^{\phi i}=\cos \phi+i\sin \phi eϕi=cosϕ+isinϕ

那么同样可以用这些东西推导出用 exp ⁡ \exp exp表示三角函数的公式:
sin ⁡ ϕ = i e − ϕ i − e ϕ i 2 cos ⁡ ϕ = e ϕ i + e − ϕ i 2 \sin \phi=i\frac{e^{-\phi i}-e^{\phi i}}{2}\\ \cos \phi=\frac{e^{\phi i}+e^{-\phi i}}{2} sinϕ=i2e−ϕi−eϕi​cosϕ=2eϕi+e−ϕi​

然后我们知道 i i i在模一个NTT模数 p p p意义下为 g p − 1 4 g^{\frac{p-1}{4}} g4p−1​,其中 g g g为一个原根.

剩下就是套板子的事情了,时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn).

注意在实现的时候,可以先求出 e ϕ i e^{\phi i} eϕi,再通过求逆得到 e − ϕ i e^{-\phi i} e−ϕi,比直接用调用两次 exp ⁡ \exp exp常数小一些.

代码如下:

void Poly_sin(int *a,int n,int *res){
  int im=wn[0][N>>2];
  for (int i=0;i<=n;++i) res[i]=mul(im,a[i]);
  Poly_exp(res,n,tc);
  for (int i=0;i<=n;++i) res[i]=0;
  Poly_inv(tc,n,res);
  for (int i=0;i<=n;++i) res[i]=mul(mul(inv2,im),sub(res[i],tc[i])),tc[i]=0;
}

void Poly_cos(int *a,int n,int *res){
  int im=wn[0][N>>2];
  for (int i=0;i<=n;++i) res[i]=mul(im,a[i]);
  Poly_exp(res,n,tc);
  for (int i=0;i<=n;++i) res[i]=0;
  Poly_inv(tc,n,res);
  for (int i=0;i<=n;++i) res[i]=mul(inv2,add(res[i],tc[i])),tc[i]=0;
}
CRC32的原理介绍以及查表法实现和多项式相除实现 CRC32的生成原理和实现代码; 阅读详情

相关推荐

IOI国家集训队论文合集:从入门到精读的算法学习指南

算法学习离不开高质量文献,而信息学竞赛领域的集训队论文正是介于学术论文与竞赛题解之间的独特资源。它由历届IOI国家集训队成员撰写,围绕字符串、动态规划优化、分治、网络流等核心专题展开,兼顾原理推导与实战例题,具有极强的可读性和系统性。这类论文的价值不仅在于补充教科书缺失的进阶技巧,更在于帮助学习者建立从原理到实现的完整思维链条。无论是备战竞赛、准备算法面试,还是深入研究算法设计,按专题阶梯式阅读并辅以代码复写,都能有效将知识转化为实战能力。本文以一套覆盖1999至2021年的IOI国家集训队论文合集为例,详

anjichan4261的博客 522

生成多项式

生成多项式就是用来把要进行防错处理的二进制码流进行转换生成校验码,然后接收方会收到原始的二进制码流和校验码,按照与发送方相同的多项式再次进行转换生成校验码,与发来的校验码进行比较。3、用生成多项式(二进制数)对信息码做除,得到R位的余数(注意:这里的二进制做除法得到的余数其实是模2除法得到的余数,并不等于其对应十进制数做除法得到的余数)。1、将X的最高次幂为R的生成多项式G(X)转换成对应的R+1位二进制数。4、将余数拼到信息码左移后空出的位置,得到完整的CRC码。求使用CRC后最终发送的信息码。

modi000的博客 7944

小波变换图像处理MATLAB项目实战源码合集

htmltable {th, td {th {pre {简介:小波变换作为数字信号处理中的重要工具,具有优良的时频局部化特性,广泛应用于图像去噪、增强、边缘检测和特征提取等领域。MATLAB凭借其强大的数学计算能力和丰富的小波工具箱函数,为小波变换的实现提供了便捷支持。本源程序合集包含完整的MATLAB代码,涵盖小波分解与重构、阈值去噪、图像增强、边缘检测及多分辨率分析等关键技术,适用于学习与科研实践,帮助用户深入理解小波理论并提升MATLAB编程能力。

weixin_36073714的博客 825

2020-09-11

奇偶校验: 在数据传输过程,尤其是传送串口数据时,有奇校验和偶校检,考虑如下字节: 00101100 若采用奇校验位则最后会补一位0,若采用偶校验则会补一位1。 判断补0或补1其实很简单,奇校验凑奇数个‘1’,偶校验凑偶数个’1‘。 这个校验应该算是所有数据校验中最简单的了,然而它也有不足之处:如果数据传输过程只有奇数个码位变化,那么不管变化在哪我们判断数据传输错误是对的,但是一旦有2位发生了变化,我们就无法检测到错误,该方法的校错率是50%。 校验和(累加求模): ...

7044

CRC8校验,生成多项式:X8 + X2 + X + 1

CRC8校验程序 /********************************************************************************************************* ** Function name: CountCrc ** Descriptions: CRC校验码计算子程序 ** input parameters: 无 ** output parameters: 无 ** Returned value: *********************************************************************************************************/ 生成多项式:X8 + X2 + X + 1

多智能体强化学习论文——SEAC(NIPS 2020)

存在的问题&研究动机&研究思路 在稀疏奖励的环境下,多智能体的exploration存在效率不足等问题。 在IAC的基础上尝试加入重要性采样,使得每次更新智能体iii的参数时,不再仅仅使用智能体iii的数据,而是使用所有智能体的数据进行智能体iii数据的更新。 对于原始的IAC算法是on-policy的,而SEAC则是off-poligy的。 创新点 在每个智能体iii的actoriactor_iactori​和criticicritic_icritici​的更新过程中,都加入了重要性

我的AI笔记 1206

CF438E The Child and Binary Tree(有意思的生成函数 + 多项式求逆 + 多项式开方)

整理的算法模板合集: ACM模板 点我看多项式全家桶(●^◡_◡◡​^●) 首先我们发现模数为998244353,很自然的想到NTT!!!想到用多项式来求解本题。 具有同样效果的数字还有:1004535809、469762049…

繁凡さん的博客 550

手把手教你用西门子博图V18配置阿特拉斯PF6000拧紧枪PN通讯(附完整GSD文件与ToolsTalk配置文件)

本文详细介绍了如何使用西门子博图V18配置阿特拉斯PF6000拧紧枪的PN通讯,包括硬件连接、网络参数规划、ToolsTalk软件配置及博图工程设置。通过完整的GSD文件和配置文件,帮助工程师快速实现高精度拧紧设备与PLC的高效通讯,适用于汽车装配和电子制造等工业自动化场景。

weixin_42662293的博客 601

好文收集

收集一些文章

lahlah的博客 357

固定翼飞行器建模(二)——MATLAB/Simulink建模、配平及线性化

MATLAB/Simulink固定翼建模、配平及线性化。

2302_80148937的博客 1万+

得物APP破解

本文介绍了得物App(版本4.74.5)的逆向破解过程,重点分析了绕过强制更新、抓包技巧以及破解newSign参数的详细方法。首先通过断网再联网的方式绕过强制更新,然后使用SocksDroid进行抓包分析,发现首页推荐接口需要newSign参数。通过反编译定位到RequestUtils.c方法,利用Frida进行Hook验证,最终解析出newSign的生成逻辑:将请求参数加入固定字段后排序拼接,再进行MD5加密生成签名。文中提供了完整的Hook脚本和签名算法分析,仅供学习移动安全技术参考。

m0_74653634的博客 3481

拉格朗日反演小记

在尝试做 P7439 的时候被控到死,于是学习了拉格朗日反演。因为笔者非常弱,所以这篇博客大多都是复述别人的话(?)讲的内容可能有很多谬误而且可能不深刻,请谨慎食用。我们可以把拉格朗日反演当成一种解方程的工具。在遇到一些非常复杂的方程时我们可以从其反函数入手,通过人为构造复合然后用拉格朗日反演找到所求答案与构造函数之间的关系。或者你也可以理解成我们在处理一个很复杂的函数的时候,主观地把它分成若干简单的部分(把它写成复合的形式)来处理。最后找到答案函数与一些好求函数系数的关系然后多项式工业启动!

weixin_41042769的博客 116

汇川EASY系列之以太网通讯(MODBUS_TCP做从站)

汇川easy系列PLC做MODBUS_TCP从站,,ModbusTCP服务器默认开启,无需设置通信协议(即不需要配置),端口号为“502”。ModbusTCP从站最多支持31个ModbusTCP客户端(ModbusTCP主站)同时连接。

这是一个长期关注工控行业技术的博客,实现0-1的突破,期待您的关注和留言 8869

Jozky 刷题目录

文章目录 第一章 字符串问题 第二章 博弈论 第三章 计算几何 第四章 网络流 第五章 动态规划 第六章 数论 第七章 图论 第八章 数据结构 第九章 其他算法 第十章 贪心(思维题/构造题)

qq_35975367的博客 1105

用 Message Monitoring Overview 打造接口健康驾驶舱:SAP AIF 消息监控实战解析

究竟解决了什么痛点?概括起来,这个应用把SAP AIF的接口监控,从传统的事务码和技术视角,带到了一个更加直观、业务友好的层次:(通过卡片式总览,让你在一个页面上看到所有自己负责的接口及其健康状况。通过和的联动,实现了从接口态势到具体消息的快速钻取。通过Recipient模型和应用,实现了监控职责的灵活分配。借助拖拽排序、搜索过滤等特性,让每个运维人员都可以打造属于自己的接口健康 cockpit。如果你正在做S/4HANA或项目,无论是公有云还是本地部署,只要系统启用了SAP AIF。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 106

Unreal从入门到精通之如何绘制用于VR的3DUI交互的手柄射线

之前我写过一篇文章《Unreal5从入门到精通之如何在VR中使用3DUI》,其中讲到使用WidgetComponent和3DUI进行交互。然而,这种方法存在一个问题:为了让射线可视化,我们需要勾选“调试/显示调试”,这样才能在手柄上看到代表其指向的一条红色射线。但最关键的问题是,这个显示调试信息的功能只属于Debug调试模式,也就是说,一旦将项目正式打包发布,这条射线辅助线就没有了。如下图所示:我就觉得Unreal官方真的是有点过分了,这不应该是最基本的功能么?难道我们VR要在Debug模式下发布?

TxNet 1612

CRC 生成多项式

是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。 在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。 应满足以下条件: a、生成多项式的最高位和最低位必须为1。 b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做模2除后应该使余数不为0。 c、不同位发生错误时,应该

lonffy的专栏 6845

第一章 电力电子仿真软件 PLECS简介

PLECS是瑞士Plexim公司开发的电力电子仿真软件,具有快速仿真、丰富元件库和热分析功能。软件提供单机版和嵌入MATLAB的版本,支持多平台安装且流程简单。首次运行需获取授权文件,提供60分钟演示模式。界面包含模型创建、帮助文档和元件库浏览器等功能区域,操作便捷。该软件是专业高效的电力电子系统仿真工具。

495

白话 CRC

前言 我们经常碰到 CRC 这个概念,尤其是在通信领域。但是 CRC 的原理是什么呢?我们必要了解一下。 简介 CRC(Cyclic Redundancy Check,循环冗余校验)是一种数据错误检测方法,主要用来检测数据传输或者保存后是否出现错误。 CRC 相对于其他检测手段(如奇偶校验、算术和校验等),因其检错能力强、开销小、易于编码器和检测电路实现,从检错的正确率与性能等方面,都比其他校验方式具有优势,所以 CRC 成为计算机通信领域最为普遍的校验方式。 原理 CRC 原理看起来比较复杂难懂,因为大多

Doublelv 的博客专栏。 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

基本知识(3)CRC校验原理整理

CRC校验原理整理CRC校验又称为生成多项式校验。CRC校验原理,基本想法:1&gt;先在发送的帧后面附加一个数(校验码),生成一个新的帧发送给接收端。2&gt;新帧与发送端和接收端共同选定的某个特定数整除。3&gt;达到接收端,把新帧除以选定的除数。4&gt;若没有余数,那么没有差错。否则,有差错。5&gt;CRC校验计算实例:    (1)首先把生成多项式转换成二进制数,由G(X) = X4 ...

咖啡的博客 1657

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

CAN总线的CRC校验

CAN总线的CRC校验1.生成多项式2.通讯校验的过程3.CAN总线中使用的生成多项式4.参考文章 1.生成多项式 理解CRC校验,首先需要了解生成多项式的概念,生成多项式也就是发送方和接受方约定的一个除数而已,发送方和接收方都使用这一个相同的除数进行模2运算,计算结果相同则说明传输数据没有问题,而如果计算结果不同可能传输的数据就出现了问题,目的就是为了保证数据传输的可靠性。 上面提到的模二计算本质上就是异或运算,相同的位为0,不同的位为1,也就是不考虑进位、错位的二进制加减法运算,例如:10011011

qq_37960317的博客 2万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

CRC编码生成多项式对应的代码

如题:代码10110011 对应的多项式为 X7+X5+X4+X+1; 解题思路: 1就是有,0就是没有。倒着开始看从1到x的n次方。比如x2+x,没有1,那么代码就是110;再比如x3+1,没有x2和x,即1001。 找了很多资料都没说到点上, 其实方法很简单。 ...

tangfan7的博客 1万+

crc生成多项式怎么算_利用system Verilog生成任意CRC多项式

IC君的第43篇原创文章之前有一篇文章讲了CRC串行和并行电路的实现:CRC算法的硬件电路实现:串行电路和并行电路。有做过类似设计的同学问:有没有办法轻松愉快地生成任意CRC多项式的电路?我们在设计一开始时,CRC的长度确实可能是不确定的。假如一开始用固定的方式做死电路,后面改起来可能有点小麻烦。如果我们设计的CRC多项式代码,只要改变一些参数就可以得到任意长度CRC电路,那我们设计的灵...

weixin_39990401的博客 728

数据预处理--生成多项式特征(PolynomialFeatures)

使用 scikit-learn提供的PolynomialFeatures 这个类可以进行特征的构造, 例如有两个特征a和b,由这两个特征构造的特征项为[1, a, b, a2, a*b, b2]。 PolynomialFeatures 这个类有 3 个参数: degree:控制多项式的次数; interaction_only:默认为 False,如果指定为 True,那么就不会有特征本身和本身结合...

qq_30982323的博客 4712

CRC校验详解(附代码示例)

目录 1.CRC校验原理 2.生成多项式 3.以CRC-16校验为例讲解编程实现 3.3.1 完全按照CRC原理实现校验 3.3.2工程中常用CRC校验过程 3.3.3改进的CRC校验过程 4.以CRC-8校验为例讲解查表法 5.以CRC-16校验为例讲解查表法 5.1.生成表格 5.2.查表法实现 CRC校验即循环冗余校验(CyclicRedundancyCheck...

u013073067的博客 13万+

循环码生成矩阵与监督 (校验) 矩阵

循环码生成多项式与生成矩阵 系统码生成矩阵的构造 系统码的循环码生成矩阵 循环码的监督 (校验) 矩阵

timerring的博客 5060
上一篇: 分治FFT与多项式点值插值
下一篇: 行列式与矩阵树定理入门
hezlik
博客等级 码龄9年 111粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值