如何快速求出一个矩阵的逆矩阵
跪求~快速求出逆矩阵的方法普通矩阵,特殊矩阵(像什么对角矩阵)都要,越多越好,最好能总结一下。。不过,最主要的还是想要一般的,那种没特殊性的矩阵的逆矩阵求法,A^-1=1...
跪求~快速求出逆矩阵的方法
普通矩阵,特殊矩阵(像什么对角矩阵)都要,越多越好,最好能总结一下。。
不过,最主要的还是想要一般的,那种没特殊性的矩阵的逆矩阵求法,A^-1=1/|A| *(A*)这个方法算的慢,一不小心还算错了
不是用软件算啦= = 就是平时考试做作业算算 展开
普通矩阵,特殊矩阵(像什么对角矩阵)都要,越多越好,最好能总结一下。。
不过,最主要的还是想要一般的,那种没特殊性的矩阵的逆矩阵求法,A^-1=1/|A| *(A*)这个方法算的慢,一不小心还算错了
不是用软件算啦= = 就是平时考试做作业算算 展开
展开全部
1.A的伴随矩阵除以A的行列式
2.给A的右边拼一个同阶单位阵
【A|E】然后通过行变换把左边变位单位阵,这时右边的就是A的逆矩阵【E|A逆】
3.如果A是二阶的,那么就主对角线元素交换位置,副对角线元素变号,然后除以行列式
4.如果A是抽象的,用定义,凑成AB=E,B就是你要求的
5.0比较多的时候可以分块矩阵求逆
6.如果A很特殊:
对角阵直接取各元素倒数,正交阵直接转置
1 A的伴随矩阵除以A的行列式
2 给A的右边拼一个同阶单位阵
【A|E】然后通过行变换把左边变位单位阵,这时右边的就是A的逆矩阵【E|A逆】
3 如果A是二阶的,那么就主对角线元素交换位置,副对角线元素变号,然后除以行列式
4如果A是抽象的,用定义,凑成AB=E,B就是你要求的
5 0比较多的时候可以分块矩阵求逆
6 如果A很特殊:
对角阵直接取各元素倒数,正交阵直接转置
可能还有别的吧,我也记不得了,正常情况方法2还是比较好
2.给A的右边拼一个同阶单位阵
【A|E】然后通过行变换把左边变位单位阵,这时右边的就是A的逆矩阵【E|A逆】
3.如果A是二阶的,那么就主对角线元素交换位置,副对角线元素变号,然后除以行列式
4.如果A是抽象的,用定义,凑成AB=E,B就是你要求的
5.0比较多的时候可以分块矩阵求逆
6.如果A很特殊:
对角阵直接取各元素倒数,正交阵直接转置
1 A的伴随矩阵除以A的行列式
2 给A的右边拼一个同阶单位阵
【A|E】然后通过行变换把左边变位单位阵,这时右边的就是A的逆矩阵【E|A逆】
3 如果A是二阶的,那么就主对角线元素交换位置,副对角线元素变号,然后除以行列式
4如果A是抽象的,用定义,凑成AB=E,B就是你要求的
5 0比较多的时候可以分块矩阵求逆
6 如果A很特殊:
对角阵直接取各元素倒数,正交阵直接转置
可能还有别的吧,我也记不得了,正常情况方法2还是比较好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有人用伴随矩阵算的~无比麻烦
把要求的矩阵A和单位矩阵E并排写一起
AE然后同时进行初等行变换~把A变成单位矩阵E
此时E就变成了A的逆
这是因为对A初等行变换 相当于左乘一个矩阵P 所以PA=E 而此时 P就是A的逆
P同时作用于了E 就被E记录了 PE=P 就是A的逆
把要求的矩阵A和单位矩阵E并排写一起
AE然后同时进行初等行变换~把A变成单位矩阵E
此时E就变成了A的逆
这是因为对A初等行变换 相当于左乘一个矩阵P 所以PA=E 而此时 P就是A的逆
P同时作用于了E 就被E记录了 PE=P 就是A的逆
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
矩阵求逆:
int inverse(double C[][MAX],double B[][MAX],int n)
{//1.set B[][] I;
double A[MAX][MAX],e;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
A[i][j]=C[i][j];
if(i==j) B[i][j]=1;
else B[i][j]=0;
}
//2. inverse and judge the Matrix inversable
for(i=0;i<n;i++)
{
//对主元为零的处理
if(A[i][i]==0)
for(int j=i+1;j<n;j++)
{
if(A[j][i]!=0)
{
for(int k=0;k<n;k++)
{
A[i][k]+=A[j][k];
B[i][k]+=B[j][k];
}
break;
}
}
if(fabs(A[i][i])<0.000000000000001)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
B[i][j]=0;
return 0;
}//MAT can't be inversed
// line processing
e=A[i][i];
for(int j=0;j<n;j++)
{
A[i][j]=A[i][j]/e;
B[i][j]=B[i][j]/e;
}
// row processing
for(j=0;j<n;j++)
{
e=A[j][i];
for(int k=0;k<n;k++)
if(i!=j)
{
A[j][k]+=-1*e*A[i][k];
B[j][k]+=-1*e*B[i][k];
}
}
}
return 1;
}
这是方阵求逆,如果要广义逆算法, 联系我.
int inverse(double C[][MAX],double B[][MAX],int n)
{//1.set B[][] I;
double A[MAX][MAX],e;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
A[i][j]=C[i][j];
if(i==j) B[i][j]=1;
else B[i][j]=0;
}
//2. inverse and judge the Matrix inversable
for(i=0;i<n;i++)
{
//对主元为零的处理
if(A[i][i]==0)
for(int j=i+1;j<n;j++)
{
if(A[j][i]!=0)
{
for(int k=0;k<n;k++)
{
A[i][k]+=A[j][k];
B[i][k]+=B[j][k];
}
break;
}
}
if(fabs(A[i][i])<0.000000000000001)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
B[i][j]=0;
return 0;
}//MAT can't be inversed
// line processing
e=A[i][i];
for(int j=0;j<n;j++)
{
A[i][j]=A[i][j]/e;
B[i][j]=B[i][j]/e;
}
// row processing
for(j=0;j<n;j++)
{
e=A[j][i];
for(int k=0;k<n;k++)
if(i!=j)
{
A[j][k]+=-1*e*A[i][k];
B[j][k]+=-1*e*B[i][k];
}
}
}
return 1;
}
这是方阵求逆,如果要广义逆算法, 联系我.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |