求上三角矩阵的逆矩阵阵,详细步骤

求矩阵A的逆矩阵:A=〔1 1 … 1 10 1 … 1 1::::0 0 … 1 10 0 … 0 1〕.请写出具体过程.-学路网-学习路上 有我相伴
求矩阵A的逆矩阵:A=〔1 1 … 1 10 1 … 1 1::::0 0 … 1 10 0 … 0 1〕.请写出具体过程.
来源:互联网 &责任编辑:王小亮 &
matlab求矩阵A的逆矩阵,其中:A=[123;456;789]你好&&A=[123;456;789];&&inv(A)ans=1.0e+016*-0.-0.-1.-0.-0.4504希望对你有帮助求逆矩阵求A的逆矩阵A=1-32-30111-1由于最近回答的线性代数都被吞了。所以只给你提供一下思路①可以利用A^(-1)=A*/|A|②利用初等变换,(A,E)~(E,B),B即为A的逆矩阵已知矩阵A,求A的逆矩阵只有3×3,很简单。B=01/31/301/3-2/3-110A的伴随矩阵的逆矩阵是否等于A的逆矩阵的伴随矩阵呢是的。证明:若A可逆,根据"A的逆矩阵"与"A的伴随矩阵"关系式A^-1=A*/│A│,得伴随矩阵为A*=│A│A^-1-------------------(1)于是(A*)^-1=(│A│A^-1)^-1=A/│A│-----...已知矩阵A的逆矩阵A-1如何推导出伴随矩阵A*的逆矩阵(急)∵A^-1=A*/|A|∴A*=|A|A^-1所以(A*)^-1=(|A|A^-1)^-1=1/|A|*(A^-1)^-1=A/|A|A和A^-1是可以互相转换的啊A=(A^-1)^-1|A|=1/|A^-1|所以(A*)^-1=A/|A|=|A^-1|*(A^-1)^-1令A...求矩阵A的逆矩阵:A=〔11…1101…11::::00…1100…01〕.请写出具体过程.(图2)求矩阵A的逆矩阵:A=〔11…1101…11::::00…1100…01〕.请写出具体过程.(图4)求矩阵A的逆矩阵:A=〔11…1101…11::::00…1100…01〕.请写出具体过程.(图7)求矩阵A的逆矩阵:A=〔11…1101…11::::00…1100…01〕.请写出具体过程.(图13)求矩阵A的逆矩阵:A=〔11…1101…11::::00…1100…01〕.请写出具体过程.(图16)求矩阵A的逆矩阵:A=〔11…1101…11::::00…1100…01〕.请写出具体过程.(图18)这是用户提出的一个学习问题,具体问题为:求矩阵A的逆矩阵:A=〔1 1 … 1 1已知矩阵A的逆矩阵A-1如何推导出伴随矩阵A*的逆矩阵(急)∵A^-1=A*/|A|∴A*=|A|A^-1所以(A*)^-1=(|A|A^-1)^-1=1/|A|*(A^-1)^-1=A/|A|A和A防抓取,学路网提供内容。0 1 … 1 1::::0 0 … 1 10 0 … 0 1〕.请写出具体过程.证A的逆矩阵的逆矩阵等于A.A的转置可逆,且A的转置的逆矩阵...(1)∵A可逆∴A[A^(-1)]=[A^(-1)]A=I∴A^(-1)可逆,且A^(-1)的逆矩阵是A。(2)∵A'[A^(-1)]防抓取,学路网提供内容。我们通过互联网以及本网用户共同努力为此问题提供了相关答案,以便碰到此类问题的同学参考学习,请注意,我们不能保证答案的准确性,仅供参考,具体如下:矩阵A的逆矩阵乘以矩阵B和矩阵B乘以矩阵A的逆矩阵结果相等...A^-1B与B^-1A一般不相等矩阵的乘法不满足交换律防抓取,学路网提供内容。用户都认为优质的答案:什么情况下矩阵A的转置等于矩阵A的逆阵?你大概误读了书的意思A正交时AA'=A'A=I,A'表示转置防抓取,学路网提供内容。求矩阵A的逆矩阵:线代……讨论可逆矩阵A与A的逆矩阵的特征值与特征向量的关...A与A^-1的特征值互为倒数,且特征向量相同请看图片中的(2)http://hiphotos.baidu.com/lry31383/pic防抓取,学路网提供内容。用初等变换法求解如果A是正定矩阵,证明A的逆矩阵也是正定阵若A是正定的,则由1.4可知:存在实可逆矩阵C使A=CTC∴A-1=(CTC)-1=C-1(C-1)T∵C可逆∴C-1也是实可逆矩阵∴有A-1也是正定矩阵。防抓取,学路网提供内容。A^(-1)=求矩阵A=(2-)的特征值与特征向量答:如图如图,如有疑问或不明白请追问哦!防抓取,学路网提供内容。〔1 -1 … 0 0矩阵A=(123;221;343)求其逆矩阵答:用初等行变化求矩阵的逆矩阵的时候,即用行变换把矩阵(A,E)化成(E,B)的形式,那么B就等于A的逆在这里(A,E)=34300防抓取,学路网提供内容。0 1 -1… 0 0求矩阵A与A*的秩的关系中,为什么A的n答:设A是n阶矩阵,A*是A的伴随矩阵,两者的秩的关系如下:r(A*)=n,若r(A)=nr(A*)=1,若r(A)=n-1;r(A*)=0,若r(A)防抓取,学路网提供内容。::::0 0 … 1 -1已知矩阵A,求A的n次方,又多少种解法?答:思路1:若r(A)=1则A能分解为一行与一列的两个矩阵的乘积,用结合律就可以很方便的求出A^n思路2:若A能分解成2个矩阵的和A=B+C而且BC=CB则A^防抓取,学路网提供内容。0 0 … 0 1〕求矩阵A=的逆矩阵答:用初等行变化求矩阵的逆矩阵的时候,即用行变换把矩阵(A,E)化成(E,B)的形式,那么B就等于A的逆在这里(A,E)=10-12100防抓取,学路网提供内容。证A的逆矩阵的逆矩阵等于A.A的转置可逆,且A的转置的逆矩阵...(1)∵A可逆∴A[A^(-1)]=[A^(-1)]A=I∴A^(-1)可逆,且A^(-1)的逆矩阵是A。(2)∵A'[A^(-1)]'=[AA^(-1)]'=I'=I∴A'可逆,且A'的逆矩阵是[A^(-1)]'。(3)∵(kA)[1/kA^(-1)]=k×(1...矩阵A的逆矩阵乘以矩阵B和矩阵B乘以矩阵A的逆矩阵结果相等...A^-1B与B^-1A一般不相等矩阵的乘法不满足交换律什么情况下矩阵A的转置等于矩阵A的逆阵?你大概误读了书的意思A正交时AA'=A'A=I,A'表示转置线代……讨论可逆矩阵A与A的逆矩阵的特征值与特征向量的关...A与A^-1的特征值互为倒数,且特征向量相同请看图片中的(2)http://hiphotos.baidu.com/lry31383/pic/item/c5e.jpg
相关信息:
- Copyright & 2017 www.xue63.com All Rights Reserved矩阵LU分解求逆详细分析与C语言实现
我的图书馆
矩阵LU分解求逆详细分析与C语言实现
、理论分析
矩阵的一种有效而广泛应用的分解方法是矩阵的LU三角分解,将一个n阶矩阵A分解为一个下三角矩阵L和一个上三角矩阵U的乘积。所以首先对矩阵进行三角分解,这里采用Doolittle分解,即分解为一个下三角矩阵(对角元素为1),和一个上三角矩阵的乘积。再进行相应的处理。
所以,矩阵求逆的算法流程可表述如下:
图1 矩阵求逆流程图
1)进行LU分解;
2)对分解后的L阵(下三角矩阵)和U阵(上三角矩阵)进行求逆;;
3)L阵的逆矩阵和U阵的逆矩阵相乘,即可求得原来矩阵的逆。即:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
矩阵的LU 分解
若n阶方阵 的各阶顺序主子式不等于零,即:
&&&&&&&&&&&&&&&&&&&&&&
则A的LU分解存在且唯一。
&&&&&&&&&&
由矩阵的乘法原理, 可推导出LU分解的迭代算法
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&
矩阵的LU分解是一个循环迭代的过程, U矩阵是从第1行迭代到第n行, 而L矩阵则是从第1列迭代到第n列, 且U矩阵先于L矩阵一个节拍。
矩阵和U矩阵求逆
首先假设下三角矩阵L的逆矩阵为,不失一般性,考虑4阶的情况,利用,有:
&&&&&& &&&&&&&&&&&&&(8)
上三角矩阵U的逆矩阵可以由下式得到:。
&&&&& &&&&&&&&&&&&&&(9)&&&&&&&&&
矩阵求逆是一个迭代的过程,依次循环, 迭代次, 求出整个逆矩阵。其中U矩阵的循环迭代时按行顺序,列倒序进行,L矩阵的循环迭代按列顺序,行顺序进行,直到计算出整个矩阵的所有结果为止。
上三角矩阵U的逆矩阵u与下三角矩阵L的逆矩阵相乘, 最终得到原始矩阵A的逆矩阵, 完成整个矩阵求逆的过程。对于n阶矩阵相乘的迭代形式可表示如下:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
例:给定一4阶矩阵,通过LU分解求逆矩阵。
解:算法过程为:,
第一步:求LU矩阵
设,通过(4)~(7)式可逐步进行矩阵L和U中元素的计算,如下所示:
经迭代计算,最后得到L和U矩阵为:
第二步:求L和U矩阵的逆,
(1)求U矩阵的逆
由式(9)可得矩阵U的逆的各元素计算如下:
(2)求L矩阵的逆
由(8)式可得L矩阵的逆的各元素计算如下
所以得到L和U的逆矩阵为:
(3)求A的逆矩阵
由式(10)可计算得到矩阵A的逆,如下:
由程序计算出的结果如下:
、C语言程序设计及测试
算法c程序实现
#include&stdio.h&
#include &string.h&
#define N 4
void main()
{ float a[N][N];
&float L[N][N],U[N][N],out[N][N],
out1[N][N];
&float r[N][N],u[N][N];
&memset( a , 0 , sizeof(a));
&memset( L , 0 , sizeof(L));
&memset( U , 0 , sizeof(U));
&memset( r , 0 , sizeof(r));
&memset( u , 0 , sizeof(u));
&int k,i,j;
&int flag=1;
&float s,t;
&////////////////////input a
matrix////
&printf("\ninput A=");
&for(i=0;i&n;i++)
&for(j=0;j&n;j++)
&scanf("%f",&a[i][j]);
//////////////////figure the input matrix//////////////////////////
printf("输入矩阵:\n");
for(i=0;i&n;i++)
&&&&&& for (j
= 0; j & j++)
&&&&&& &&&&&& {
&&&&&& &&&&&& printf("%lf
", a[i][j]);
&&&&&& printf("\n");
for(j=0;j&n;j++)
& a[0][j]=a[0][j];& //计算U矩阵的第一行
&for(i=1;i&n;i++)
& a[i][0]=a[i][0]/a[0][0];&&
//计算L矩阵的第1列
&for(k=1;k&n;k++)
& for(j=k;j&n;j++)
&& for (i=0;i&k;i++)
s=s+a[k][i]*a[i][j];&& //累加
&& a[k][j]=a[k][j]-s; //计算U矩阵的其他元素
& for(i=k+1;i&n;i++)
&& for(j=0;j&k;j++)
t=t+a[i][j]*a[j][k];&& //累加
a[i][k]=(a[i][k]-t)/a[k][k];&&& //计算L矩阵的其他元素
&for(i=0;i&n;i++)
& for(j=0;j&n;j++)
& { if(i&j)
{ L[i][j]=a[i][j]; U[i][j]=0;}//如果i&j,说明行大于列,计算矩阵的下三角部分,得出L的值,U的//为0
&&&& { U[i][j]=a[i][j];
if(i==j) L[i][j]=1;& //否则如果i&j,说明行小于列,计算矩阵的上三角部分,得出U的//值,L的为0
&&&&&& else L[i][j]=0;
& }& if(U[1][1]*U[2][2]*U[3][3]*U[4][4]==0){
& printf("\n逆矩阵不存在");}
&if(flag==1){
&/////////////////////求L和U矩阵的逆
& for (i=0;i&n;i++) /*求矩阵U的逆 */
{u[i][i]=1/U[i][i];//对角元素的值,直接取倒数
for (k=i-1;k&=0;k--)
for (j=k+1;j&=i;j++)
s=s+U[k][j]*u[j][i];
u[k][i]=-s/U[k][k];//迭代计算,按列倒序依次得到每一个值,
for (i=0;i&n;i++) //求矩阵L的逆
{r[i][i]=1; //对角元素的值,直接取倒数,这里为1
for (k=i+1;k&n;k++)
{for (j=i;j&=k-1;j++)
r[k][i]=r[k][i]-L[k][j]*r[j][i];&&
//迭代计算,按列顺序依次得到每一个值
/////////////////绘制矩阵LU分解后的L和U矩阵///////////////////////
&printf("\nLU分解后L矩阵:");
&for(i=0;i&n;i++)
& { printf("\n");
&&& for(j=0;j&n;j++)
&&&& printf("
%lf",L[i][j]);
&printf("\nLU分解后U矩阵:");
&for(i=0;i&n;i++)
&{ printf("\n");
&& for(j=0;j&n;j++)
&&& printf("
%lf",U[i][j]);
&printf("\n");
&////////绘制L和U矩阵的逆矩阵
&printf("\nL矩阵的逆矩阵:");
&for(i=0;i&n;i++)
& { printf("\n");
&&& for(j=0;j&n;j++)
&&&& printf("
%lf",r[i][j]);
&printf("\nU矩阵的逆矩阵:");
&for(i=0;i&n;i++)
&{ printf("\n");
&& for(j=0;j&n;j++)
&&& printf("
%lf",u[i][j]);
&printf("\n");
&//验证将L和U相乘,得到原矩阵
&printf("\nL矩阵和U矩阵乘积\n");
& for(i=0;i&n;i++)
&&&&&& &for(j=0;j&n;j++)
&&&&&& {out[i][j]=0;}
&for(i=0;i&n;i++)
&&&&&& &&&&&& {
&&&&&& &for(j=0;j&n;j++)
&&&&&& &&&&&& &{
&&&&&& &&&&&& &for(k=0;k&n;k++)
&&&&&& &&&&&& &&&&&& &{out[i][j]+=L[i][k]*U[k][j];}
&&&&&& &&&&&& &}&
&for(i=0;i&n;i++)
&&&&&& &for(j=0;j&n;j++)
&&&&&& &&&&&& &printf("%lf\t",out[i][j]);
printf("\r\n");
&//////////将r和u相乘,得到逆矩阵
&printf("\n原矩阵的逆矩阵:\n");
& for(i=0;i&n;i++)
&&&&&& &for(j=0;j&n;j++)
&&&&&& {out1[i][j]=0;}
&for(i=0;i&n;i++)
&&&&&& &&&&&& {
&&&&&& &for(j=0;j&n;j++)
&&&&&& &&&&&& &{
&&&&&& &&&&&& &for(k=0;k&n;k++)&&&& &&&&&& &&&&&&
&&&&&& &&&&&& &{out1[i][j]+=u[i][k]*r[k][j];}
&&&&&& &&&&&& &}&
&for(i=0;i&n;i++)
&&&&&& &for(j=0;j&n;j++)
&&&&&& &&&&&& &printf("%lf\t",out1[i][j]);
printf("\r\n");
)非满秩矩阵
1&、整数矩阵
2&、小数矩阵
)满秩矩阵
1& 整数矩阵的测试
2& 小数矩阵的测试
[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢欢迎加入我们,一同切磋技术 &
用户名: &&&
密 码: &
共有 1401 人关注过本帖
标题:求用C语言编写求N阶矩阵的逆矩阵
等 级:新手上路
&&已结贴√
&&问题点数:20&&回复次数:3&&&
求用C语言编写求N阶矩阵的逆矩阵
&&& 我自己编了好长时间,都编不出来,我被那横的竖的循环搞糊涂了,谁能帮我一个忙,谢谢!
搜索更多相关主题的帖子:
来 自:四川南充
等 级:黑侠
帖 子:146
专家分:582
&&得分:20&
#include &stdio.h&
#include &stdlib.h&
#define MAXSIZE 12500
#define MAXRC 100
typedef struct
&&& int i,j;
typedef struct//三元组是顺序表
&&& Triple data[MAXSIZE+1];
&&& int mu,nu,
typedef struct
&&& Triple data[MAXSIZE+1];
&&& int rpos[MAXRC+1];//各*行*第一个非零元的位置
&&& int mu,nu,
void initialSMatrix(TSMatrix *M,int *array,int m,int n)//初始化三元组顺序表
&&& int i,j;
&&& M-&mu=m;
&&& M-&nu=n;//预设=====
&&& M-&tu=0;
&&& for(i=0;i&m;i++)
&&&&&&&&for(j=0;j&n;j++)
&&&&&&&&&&&&if(*(array+i*n+j)!=0)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& M-&tu++;
&&&&&&&&&&&&&&& M-&data[M-&tu].i=i+1;//=i+1 ,
&&&&&&&&&&&&&&& M-&data[M-&tu].j=j+1;//the same as zbove
&&&&&&&&&&&&&&& M-&data[M-&tu].e=*(array+i*n+j);
&&&&&&&&&&&&}
int initialarray(int *array,int m,int n)
&&& int i,j,flag=0;
&&& printf(&请输入一个%d行%d列的整数矩阵:\n&,m,n);
&&& for(i=0;i&m;i++)
&&&&&&&&for(j=0;j&n;j++)
&&&&&&&&&&&&scanf(&%d&,&a);
&&&&&&&&&&&&if(a==0)
&&&&&&&&&&&&&&& flag++;
&&&&&&&&&&&&*(array+i*n+j)=a;
&&&&&&&&}&&&
&&&&&&&&if(flag/(m*n*1.0)&=0.5)//0的个数过半,采用稀疏矩阵存储方式
&&&&&&&&&&&&return(0);
&&&&&&&&else
&&&&&&&&&&&&return(1);
void printarray(int *array,int m,int n)
&&& int i,j;
&&& for(i=0;i&m;i++)
&&&&&&&&for(j=0;j&n;j++)
&&&&&&&&&&&&printf(&%5d &,*(array+i*n+j));
&&&&&&&&printf(&\n&);
void transpose(int *array,int m,int n)
&&& int i,j;
&&& int *array1=(int *)malloc(n*m*sizeof(int));
&&& for(i=0;i&m;i++)
&&&&&&&&for(j=0;j&n;j++)
&&&&&&&&&&&&*(array1+j*m+i)=*(array+i*n+j);//array1+j*m+i not array1+j*n+i
&&&&&&&&printf(&转置后的矩阵为:\n&);
&&&&&&&&printarray(array1,n,m);//not array m,n
void printSMatrix(TSMatrix M)
&&& int i,j,k;
&&& int *array=(int *)malloc(M.mu*M.nu*sizeof(int));
&&&&&&&&for(i=0;i&M.i++)
&&&&&&&&for(j=0;j&M.j++)
&&&&&&&&&&&&*(array+i*M.nu+j)=0;
&&&&&&&&for(k=1;k&=M.k++)
&&&&&&&&&&&&*(array+(M.data[k].i-1)*M.nu+(M.data[k].j-1))=M.data[k].e;
&&&&&&&&for(i=0;i&M.i++)
&&&&&&&&&&&&for(j=0;j&M.j++)
&&&&&&&&&&&&printf(&%d &,*(array+M.nu*i+j));
&&&&&&&&&&&&printf(&\n&);
/*void transposeSMatrix1(TSMatrix M,TSMatrix *T)//稀疏矩阵转置算法
&&& int col,p,q;
&&& int *array=(int *)malloc(M.mu*M.nu*sizeof(int));
&&& T-&mu=M.//**
&&& T-&nu=M.//**
&&& T-&tu=M.
&&& if(T-&tu)
&&&&&&&&q=1;
&&&&&&&&for(col=1;col&=M.col++)
&&&&&&&&&&&&for(p=1;p&=M.p++)
&&&&&&&&&&&&&&& if(M.data[p].j==col)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&T-&data[q].i=M.data[p].j;
&&&&&&&&&&&&&&&&&&&&T-&data[q].j=M.data[p].i;
&&&&&&&&&&&&&&&&&&&&T-&data[q].e=M.data[p].e;
&&&&&&&&&&&&&&&&&&&&q++;
&&&&&&&&&&&&&&& }
&&& printf(&矩阵转置后的结果是:\n&);
&&& printSMatrix(*T,array,T-&mu,T-&nu);
void transposeSMatrix2(TSMatrix M,TSMatrix *T)//稀疏矩阵快速转置算法
&&& int col,p,q;
&&& int *array=(int *)malloc(M.mu*M.nu*sizeof(int));
&&& int *cpot=(int *)malloc(M.nu*sizeof(int));
&&& int *num=(int *)malloc(M.mu*sizeof(int));
&&& T-&mu=M.//**
&&& T-&nu=M.//**
&&& T-&tu=M.
&&& if(T-&tu)
&&&&&&&&for(col=1;col&=M.col++)
&&&&&&&&&&&&num[col]=0;
&&&&&&&&for(t=1;t&=M.t++)
&&&&&&&&&&&&++num[M.data[t].j];
&&&&&&&&cpot[1]=1;
&&&&&&&&for(col=2;col&=M.col++)
&&&&&&&&&&&&cpot[col]=cpot[col-1]+num[col-1];
&&&&&&&&for(p=1;p&=M.p++)
&&&&&&&&&&&&col=M.data[p].j;
&&&&&&&&&&&&q=cpot[col];
&&&&&&&&&&&&T-&data[q].i=M.data[p].j;
&&&&&&&&&&&&T-&data[q].j=M.data[p].i;
&&&&&&&&&&&&T-&data[q].e=M.data[p].e;
&&&&&&&&&&&&++cpot[col];
&&&&&&&&printf(&矩阵转置后的结果是:\n&);
&&&&&&&&printSMatrix(*T);
void main()
&&& int a,b;
&&& int *A;
&&& int t1;
&&& TSMatrix *M1,*M2,T;
&&& M1=(TSMatrix *)malloc(sizeof(TSMatrix));
&&& M2=(TSMatrix *)malloc(sizeof(TSMatrix));
&&& printf(&请输入你想创建的矩阵的行数和列数:\n&);
&&& scanf(&%d%d&,&a,&b);
&&& A=(int *)malloc(a*b*sizeof(int));
&&& t1=initialarray(A,a,b);
&&& printf(&请输出A矩阵:\n&);
&&& printarray(A,a,b);
&&& if(t1)
&&&&&&&&transpose(A,a,b);
&&&&&&&&initialSMatrix(M1,A,a,b);
&&&&&&&&transposeSMatrix2(*M1,&T);
来 自:中国
等 级:论坛游民
帖 子:18
专家分:46
回复 2楼 xichong
真是高手啊
等 级:新手上路
同问。。。现在我也遇到这个问题了。。。我的是的稀疏矩阵。。。楼主解决了么?给分享一下吧~~~同样是用C语言求逆。。。万分感谢啊
版权所有,并保留所有权利。
Powered by , Processed in 0.026954 second(s), 7 queries.
Copyright&, BCCN.NET, All Rights Reserved您现在的位置是: &
任意维矩阵求逆的FPGA设计与实现
□ 王锐 胡永华 马亮 杜福慧
摘 要:矩阵运算广泛应用于各类电路计算中,矩阵运算的硬件实现能够充分发挥硬件的速度和并行性。其中矩阵求逆是矩阵运算中重要的运算,针对目前多维矩阵难以设计的情况,本文提出了一种任意维矩阵求逆的硬件实现方法,实验达到了预期目标。任意维矩阵求逆的硬件实现在数字信号处理领域将具有广泛的应用前景。
  摘要:矩阵运算广泛应用于各类电路计算中,矩阵运算的硬件实现能够充分发挥硬件的速度和并行性。其中矩阵求逆是矩阵运算中重要的运算,针对目前多维矩阵难以设计的情况,本文提出了一种任意维矩阵求逆的硬件实现方法,实验达到了预期目标。任意维矩阵求逆的硬件实现在数字信号处理领域将具有广泛的应用前景。
  关键字:任意维 矩阵求逆 LU分解现场可编程门阵列
   矩阵运算是数字信号处理领域内的基本操作,广泛应用于各类电路计算中,在诸如DCT变换、LDPC编解码领域应用非常广泛。目前大部分矩阵运算都是利用软件来实现,但是随着矩阵维数的增长,软件处理的速度也会大幅度变慢。矩阵运算的硬件实现能够充分发挥硬件的速度和并行性,目前文献上只报道了固定维数的矩阵运算,尚无法完成任意维矩阵的硬件实现。
  矩阵求逆是非常重要的矩阵运算,而矩阵分解是矩阵求逆的重要环节。矩阵分解的方法很多,主要有LU分解法(Triangular Matrix Decomposition)、QR分解法(QR Decomposition)、奇异值分解法(Singular Value Decomposition)等,其中LU分解法和QR分解法最常用。LU分解法是将给定的矩阵分解为下三角矩阵和上三角矩阵的乘积。QR分解法利用正交相似变换将一个给定的矩阵逐步约化为上三角矩阵或拟上三角矩阵。其中LU分解法在矩阵求逆运算方面应用非常广泛,本文在研究基于LU分解的矩阵求逆的基础上,提出了一种任意维矩阵求逆的硬件实现方法。
   文章共分四部分,第一部分提出任意维矩阵求逆的算法,第二部分介绍了硬件设计,第三部分是实验,第四部分是结论与展望。
  1. 算法分析
  矩阵求逆的算法流程为:1)进行LU分解;2)对分解后的L阵(下三角矩阵)和U阵(上三角矩阵)进行求逆;3)L阵的逆矩阵和U阵的逆矩阵相乘,即可求得原来矩阵的逆。即:
  A-1=(L·U)-1=U-1·L-1
  对于超大型矩阵的求逆运算,可以考虑对矩阵进行棋盘式分块,分别对各个子矩阵进行运算,这样就降低了同时运算的数据量,可实现任意维矩阵的运算。因此任意维矩阵的求逆,即可称为块矩阵求逆,可以分为块矩阵的LU分解、块L矩阵和块U矩阵求逆、块矩阵乘法这三个步骤,下面分别讨论。块矩阵分解后的子矩阵选择4x4矩阵,这是因为其具有代表性,即既可作为矩阵分块后的子矩阵,也可作为分块前的矩阵。
   1.1块矩阵的LU分解算法
  K.Hwang在1982年提出了任意维矩阵的块LU分解算法[1],算法流程如下:
  假设输入为一个n×n矩阵A=(aij),分解为k2个m×m子矩阵Aij,其中i,j=1,2,…,k,n=km。
  输出:k(k+1)个子矩阵Lpq,其中,q≤p=1,2,…,k,子矩阵Urs,s≥r=1,2,…,k,每个子矩阵为m×m。
  算法过程:
   a) 把A11分解成L11和U11,使L11·U11=A11;
   b) 计算逆矩阵L-111和U-111,
   计算Lp1=Ap1·U-111;U1p=L-111·A1p , p=2,3,…,k;
   c) 循环嵌套计算
   1.2块L矩阵和块U矩阵求逆算法
   虽然K.Hwang提出了块LU分解算法,但是目前尚没有人研究块L矩阵和块U矩阵的求逆算法,本文对此进行了探讨,给出了任意维块L矩阵和任意维块U矩阵求逆算法。4x4矩阵的L阵和U阵的求逆情况如下:
   1.3 块矩阵乘法
  块U-1与块L-1相乘,可以得到所求矩阵的逆,因此块矩阵乘法分为两个部分:矩阵分割和矩阵乘法。
  这三个步骤结合起来就实现了任意维矩阵的求逆。下面讨论任意维矩阵求逆的硬件实现。
  2. 矩阵求逆的硬件设计
  任意维矩阵求逆的硬件电路包括块LU分解电路、块L矩阵与块U矩阵的求逆电路、块矩阵乘法电路,它们共同完成块矩阵的硬件求逆过程。硬件结构示意图如图1所示。
  主要子模块的功能如下:
   1) top_blu:实现矩阵的块LU分解功能。
   2) inv_Uij:实现块U矩阵求逆的功能。
   3) inv_Lij:实现块L矩阵求逆的功能。
   4) bmm:实现块矩阵乘功能。
   5) ctrl:整个块求逆电路的总控状态机模块。
   6) Ram_ctrl:RAM控制器模块,完成RAM寻址功能和RAM读写信号的控制。
   下面介绍其中的块LU分解电路、块L矩阵与块U矩阵的求逆电路、块矩阵乘法电路。
   2.1 块LU分解电路
  块LU分解电路硬件实现如图2所示。通过图中五状态的状态机控制整个模块的运行,具体运行步骤如下:
   1) 当模块使能信号有效时,状态机从“初始化状态”进入“步骤1”状态,启动块LU分解;
   2) 当状态机在“步骤1”状态时,完成算法过程的第1步,即对第一个4x4矩阵进行LU分解,状态机从“步骤1”进入“步骤2”状态;
   3) 当状态机在“步骤2”状态时,完成算法过程的第2步,即进行矩阵求逆,并完成块矩阵乘法,状态机从“步骤2”进入“步骤3”状态;
   4) 当状态机在“步骤3”状态时,完成算法过程的第3步,这里设计了三个计数器来实现循环的嵌套功能(分别负责变量q、p和s的计数),状态机从“步骤3”进入“步骤4”状态;
......(未完,请点击下方“在线阅读”)
特别说明:本文献摘要信息,由维普资讯网提供,本站只提供索引,不对该文献的全文内容负责,不提供免费的全文下载服务。
金月芽期刊网 2018&>&求下三角矩阵的逆矩阵的详细算法
求下三角矩阵的逆矩阵的详细算法
上传大小:56KB
矩阵计算中第一次实验题,计算下三角矩阵的逆矩阵的详细算法,可以正常运行,有所有的测试数据与运行结果
综合评分:4
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有7条
很好用,非常感谢
还不错 有参考价值
有一定参考价值。但还可以做优化,减少预算量. 如下:
B(k,k)=B(k,k)/A(k,k);
for i=k+1:n
B(i,k)=(B(i,k)-A(i,k:i-1)*B(k:i-1,k))/A(i,i);
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
求下三角矩阵的逆矩阵的详细算法
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
yjxd5201314
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*投诉人姓名:
*投诉人联系方式:
*版权证明:
*详细原因:
求下三角矩阵的逆矩阵的详细算法}

我要回帖

更多关于 3x3矩阵怎么求逆矩阵 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信