请教伽罗华域矩阵求逆

langren919 langren919 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
最近在学Raptor码,里面有一个矩阵求逆的过程,是在伽罗华域里进行的,做纠错码的朋友肯定很熟悉,伽罗华域的元操作是异或,我将清华大学出版《C语言常用算法程序集》第二版这本书里的矩阵求逆改了一下,这本书有随书的源代码,我改为如下:

int brinv(int **a,int n) //a对应矩阵二维矩阵A,n是矩阵的维数L ,计算A的逆
{
int *is,*js,i,j,k;
int d,p;
is=malloc(n*sizeof(int));
js=malloc(n*sizeof(int));
for (k=0; k<=n-1; k++)
{
d=0;
for (i=k; i<=n-1; i++)
for (j=k; j<=n-1; j++)
{
p=a[i][j];
if (p>d) { d=p; is[k]=i; js[k]=j;}
}
if (d+1==1)
{
free(is); free(js); printf("err**not inv\n");
return(1);
}
if (is[k]!=k)
for (j=0; j<=n-1; j++)
{
p=a[k][j]; a[k][j]=a[is[k]][j]; a[is[k]][j]=p;
}
if (js[k]!=k)
for (i=0; i<=n-1; i++)
{
p=a[i][k]; a[i][k]=a[i][js[k]]; a[i][js[k]]=p;
}
a[k][k]=a[k][k];
for (j=0; j<=n-1; j++)
if (j!=k)
{ a[k][j]=a[k][j]*a[k][k];}
for (i=0; i<=n-1; i++)
if (i!=k)
for (j=0; j<=n-1; j++)
if (j!=k)
{
a[i][j]=a[i][j]^(a[i][k]*a[k][j]);
}
for (i=0; i<=n-1; i++)
if (i!=k)
{ a[i][k]=a[i][k]*a[k][k];}
}
for (k=n-1; k>=0; k--)
{ if (js[k]!=k)
for (j=0; j<=n-1; j++)
{
p=a[k][j]; a[k][j]=a[js[k]][j]; a[js[k]][j]=p;
}
if (is[k]!=k)
for (i=0; i<=n-1; i++)
{
p=a[i][k]; a[i][k]=a[i][is[k]]; a[i][is[k]]=p;
}
}
free(is); free(js);
return 0;
}


这个程序能正确算出一部分的矩阵求逆,但是矩阵的维数超过一定的数量的时候,计算出的结果就不对了,恳请各位大侠指教,万分感谢!
...全文

相关推荐

NTL最新6.0(windows版)

**矩阵和向量运算**:NTL提供矩阵和向量的数据结构,支持基本的线性代数运算,如矩阵乘法、矩阵求逆、特征值计算等,这些都是许多数学算法的基础。5.

schumacher_2008

【多元域乘法】多项式乘法电路原理及MATLAB详解

关注公号【逆向通信猿】更精彩!!! 关于二元域上的两个元素的乘法、多项式除法,在之前的博客 【有限域除法】二元多项式除法电路原理及MATLAB详解 子程序:sub_poly_div.m 【有限域元素加法和乘法】有限域元素加法和乘法的原理及MATLAB实现 子程序:sub_gf_add.m、sub_gf_mul.m 中已对原理进行了比较详细的阐述和仿真,本文主要对多元域上多项式的乘法进行阐述和仿真。 乘法电路 I型乘法电路 II型乘法电路 MATLAB实现及详解 保存为文件名为sub_poly_mu

codersnote

Fast-algorithms-of-Reed-Solomon-erasure-codes

伽罗华域(Galois Field)理论,这是理解Reed-Solomon编码的基础。2. 多项式运算,包括多项式的乘法、除法和求逆。3. 矩阵理论,因为Reed-Solomon编码涉及到矩阵的运算。

yueyhang cheuk

reed-solomon码的程序_matlab_

**矩阵操作**:reed-solomon码的解码往往涉及到矩阵运算,如矩阵乘法和矩阵逆。在MATLAB中,可以使用“*”运算符进行矩阵乘法,“inv”函数求逆矩阵。6.

Dyingalive

GaloisFields.jl:Julia的有限字段

有限域,也被称为伽罗华域(Galois Field),是一个包含有限个元素的代数结构,满足加法和乘法运算具有封闭性、交换性、结合性以及存在单位元和逆元等基本代数性质。

按剑四顾
评论 4
收藏 已收藏
分享
返回顶部
langren919
C语言 70,039 成员 243,237 内容