精华内容
下载资源
问答
  • 正确的求解代数余子式方法

    千次阅读 2020-06-29 11:24:50
    需要计算出每个位置的代数余子式 常见的做法均是套用A×A∗=∣A∣×IA\times A^*=|A|\times IA×A∗=∣A∣×I的等式求解,这种做法在模意义下矩阵rank(A)=n−1rank(A)=n-1rank(A)=n−1时不能正确得出伴随矩阵 以下给...

    前言

    在联合省选day2t3中,存在一种使用行列式求导来计算生成树边权和的方法。需要计算出每个位置的代数余子式
    常见的做法均是套用A×A=A×IA\times A^*=|A|\times I的等式求解,这种做法在模意义下矩阵rank(A)=n1rank(A)=n-1时不能正确得出伴随矩阵
    以下给出正确的求解伴随矩阵的方法

    代数余子式

    nn阶方阵A=(ai,j)A=(a_{i,j}),定义ai,ja_{i,j}的余子式Mi,jM_{i,j}为将iijj列划去后的行列式,ai,ja_{i,j}的代数余子式Ai,jA_{i,j}(1)i+jMi,j(-1)^{i+j}M_{i,j}

    伴随矩阵

    Ai,jA_{i,j}为代数余子式矩阵,我们定义
    A=(Aij)T A^*=(A_{ij})^{\mathrm T}
    AA^*为矩阵AA的伴随矩阵

    我们存在一个结论,即
    A×A=A×A=A×In A\times A^*=A^*\times A=|A|\times I_n
    其中InI_nnn阶单位矩阵,A|A|为矩阵AA的行列式

    计算

    rank(A)=nrank(A)=n,则A1A^{-1}是良定义的,可以直接用A=A×A1A^*=|A|\times A^{-1}来进行计算。

    rank(A)n2rank(A)\leq n-2,不难发现任意n1n-1阶子式行列式均为00,故A=OA^*=O,其中OO为空矩阵

    我们只需要特殊考虑rank(A)=n1rank(A)=n-1的情况

    不妨设AA的列向量组为c1,c2cnc_1,c_2\cdots c_n,由其线性相关,可以得到存在一组不全为00的系数q1,q2qnq_1,q_2\cdots q_n,满足qici=0\sum q_ic_i=0。不妨假设qc0q_c\not =0

    考虑同行两余子式Mr,iM_{r,i}Mr,cM_{r,c}的关系(在此后的表述中,Mr,iM_{r,i}可能为矩阵,也可能为该矩阵的行列式。视语境而定)。不失一般性地令i<ci<c,对于i>ci>c的情况是同理推导的

    若我们将Mr,iM_{r,i}的第c1c-1列向前置换至第ii列,同时原本第[i,c2][i,c-2]列向后循环移位。我们能够得到与Mr,cM_{r,c}十分相似的一个矩阵。唯一的不同在于Mr,iM_{r,i}的第ii列为原本的第cc列去掉行rr,而Mr,cM_{r,c}的第ii列为原本的第ii列去掉行rr

    我们构造新矩阵MM',将Mr,iM_{r,i}(循环移位后)的第ii列乘上qcq_c,将Mr,cM_{r,c}的第ii列乘上qiq_i,令MM'为这两个矩阵的和。这里两个矩阵的和的计算方式是这样的:将唯一不同的两列求和,其他所有的列照写。
    由行列式的性质,不难发现有
    M=(1)ci1qcMr,i+qiMr,c |M'|=(-1)^{c-i-1}q_c|M_{r,i}|+q_i|M_{r,c}|
    若我们将MM'的其他列乘上原本对应的列ccqcq_c,再加到MM'的第ii列上,行列式不变。而第ii列全为00,此时可以证明M=0|M'|=0,因而有
    (1)ciqcMr,i=qiMr,cMr,i=qiqc(1)ciMr,c(1)r+iMr,i=qiqc(1)ci+r+iMr,cAr,i=qiqcAr,c (-1)^{c-i}q_c|M_{r,i}|=q_i|M_{r,c}|\\ |M_{r,i}|=\frac{q_i}{q_c}(-1)^{c-i}|M_{r,c}|\\ (-1)^{r+i}|M_{r,i}|=\frac{q_i}{q_c}(-1)^{c-i+r+i}|M_{r,c}|\\ A_{r,i}=\frac{q_i}{q_c}A_{r,c}
    通过对i>ci>c的情况加以分析,不难发现,上述结论仍然成立。故有
    Ar,i=qiqcAr,c A_{r,i}=\frac{q_i}{q_c}A_{r,c}
    对于行向量组的分析,也是相似的。

    对于一组行向量p=(p1p2pn)p=(p_1p_2\cdots p_n),列向量q=(q1q2qn)q=(q_1q_2\cdots q_n),我们求出这样的两个向量使得pA=0,Aq=0pA=0,Aq=0。不妨设pr,qc0p_r,q_c\not =0,就有
    Ai,j=piqjprqcAr,c A_{i,j}=\frac{p_iq_j}{p_rq_c}A_{r,c}
    求解向量p,qp,q,代数余子式Ar,cA_{r,c}均可以在Θ(n3)\Theta(n^3)的时间内用高斯消元法求解。综上所述,求解一个矩阵的伴随矩阵的时间复杂度为Θ(n3)\Theta(n^3)

    代码

    调用Mat::get_adjoint_matrix(a,n)即可求解nn阶矩阵aa的伴随矩阵
    可以在这里验证你的代码
    https://vjudge.net/problem/OpenJ_POJ-C19J

    const int MAXN=35;
    const int MAXM=152505;
    const int mod=998244353;
    inline void ad(int &x,int y){x+=y;if(x>=mod)x-=mod;}
    inline void dl(int &x,int y){x-=y;if(x<0)x+=mod;}
    inline int pow_mod(int a,int b)
    {
    	int ret=1;
    	for(;b;b>>=1,a=1LL*a*a%mod)if(b&1)ret=1LL*ret*a%mod;
    	return ret;
    }
    struct matrix{int m[MAXN][MAXN];matrix(){memset(m,0,sizeof(m));}};
    namespace Mat
    {
    	int A[MAXN][MAXN],B[MAXN][2*MAXN];matrix mat_ret,mat_lin;
    	int dat(const matrix &a,int n)
    	{
    		for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)A[i][j]=a.m[i][j];
    		int ret=1;
    		for(int i=1;i<=n;i++)
    		{
    			int u=i;for(int j=i+1;j<=n;j++)if(A[j][i]){u=j;break;}
    			if(u!=i){for(int j=i;j<=n;j++)swap(A[u][j],A[i][j]);ret=1LL*ret*(mod-1)%mod;}
    			if(!A[i][i])return 0;int Iv=pow_mod(A[i][i],mod-2);
    			for(int j=i+1;j<=n;j++)
    			{
    				int temp=1LL*A[j][i]*Iv%mod;
    				for(int k=i;k<=n;k++)dl(A[j][k],1LL*A[i][k]*temp%mod);
    			}ret=1LL*ret*A[i][i]%mod;
    		}return ret;
    	}
    	matrix mat_inv(const matrix &a,int n)
    	{
    		memset(B,0,sizeof(B));
    		for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)B[i][j]=a.m[i][j];
    		for(int i=1;i<=n;i++)B[i][i+n]=1;
    		for(int i=1;i<=n;i++)
    		{
    			int u=i;for(int j=i+1;j<=n;j++)if(B[j][i]){u=j;break;}
    			for(int j=1;j<=2*n;j++)swap(B[i][j],B[u][j]);
    			if(!B[i][i])continue;int Iv=pow_mod(B[i][i],mod-2);
    			for(int j=i+1;j<=n;j++)
    			{
    				int temp=1LL*B[j][i]*Iv%mod;
    				for(int k=i;k<=2*n;k++)dl(B[j][k],1LL*B[i][k]*temp%mod);
    			}
    		}
    		for(int i=n;i>=1;i--)
    		{
    			int Iv=pow_mod(B[i][i],mod-2);
    			for(int j=i;j<=2*n;j++)if(B[i][j])B[i][j]=1LL*B[i][j]*Iv%mod;
    			for(int j=i-1;j>=1;j--)if(B[j][i])
    			{
    				int Z=B[j][i];
    				for(int k=i;k<=2*n;k++)if(B[i][k])dl(B[j][k],1LL*B[i][k]*Z%mod);
    			}
    		}
    		memset(mat_ret.m,0,sizeof(mat_ret.m));
    		for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)
    			mat_ret.m[i][j]=B[i][j+n];
    		return mat_ret;
    	}
    	int calculate_r(const matrix &a,int n)
    	{
    		for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)A[i][j]=a.m[i][j];int ret=0;
    		for(int i=1;i<=n;i++)
    		{
    			if(!A[i][i])
    			{
    				int u=-1;
    				for(int j=i+1;j<=n;j++)if(A[j][i]){u=j;break;}
    				if(u==-1)continue;
    				for(int j=i;j<=n;j++)swap(A[i][j],A[u][j]);
    			}++ret;int Iv=pow_mod(A[i][i],mod-2);
    			for(int j=i+1;j<=n;j++)
    			{
    				int temp=1LL*A[j][i]*Iv%mod;
    				for(int k=i;k<=n;k++)dl(A[j][k],1LL*A[i][k]*temp%mod);
    			}
    		}return ret;
    	}
    	matrix get_adjoint_matrix_full(const matrix &a,int n)
    	{
    		matrix Iv=mat_inv(a,n);int Z=dat(a,n);
    		for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)
    			mat_ret.m[j][i]=1LL*Iv.m[i][j]*Z%mod;
    		return mat_ret;
    	}
    	
    	
    	int us[MAXN][MAXN],Inv[MAXN];
    	VI insert(VI Z,int n,int id)
    	{
    		VI bel(n+1,0);bel[id]=1;bel[0]=-1;
    		for(int i=n;i>=1;i--)if(Z[i])
    		{
    			if(!A[i][i])
    			{
    				for(int j=i;j>=1;j--)A[i][j]=Z[j];Inv[i]=pow_mod(A[i][i],mod-2);
    				for(int j=1;j<=n;j++)us[i][j]=bel[j];
    				return bel;
    			}
    			int temp=1LL*Inv[i]*Z[i]%mod;
    			for(int j=i;j>=1;j--)dl(Z[j],1LL*A[i][j]*temp%mod);
    			for(int j=1;j<=n;j++)dl(bel[j],1LL*us[i][j]*temp%mod);
    		}bel[0]=0;return bel;
    	}
    	VI get_G(const matrix &a,int n,int opt)
    	{
    		VI ret;
    		for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)A[i][j]=a.m[i][j];
    		if(opt)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)B[j][i]=A[i][j];
    		else for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)B[i][j]=A[i][j];
    		
    		memset(A,0,sizeof(A));memset(us,0,sizeof(us));
    		for(int i=1;i<=n;i++)
    		{
    			VI Z(n+1,0);
    			for(int j=1;j<=n;j++)Z[j]=B[j][i];
    			ret=insert(Z,n,i);
    			if(ret[0]!=-1)return ret;
    		}assert(false);
    	}
    	matrix get_adjoint_matrix_one(const matrix &a,int n)
    	{
    		VI Q=get_G(a,n,0);
    		VI P=get_G(a,n,1);
    		int c=-1,r=-1;
    		for(int i=1;i<=n;i++)if(Q[i]){c=i;break;}assert(c!=-1);
    		for(int i=1;i<=n;i++)if(P[i]){r=i;break;}assert(r!=-1);
    		
    		for(int i=1;i<=n;i++)if(i!=r)for(int j=1;j<=n;j++)if(j!=c)
    			mat_lin.m[i-(i>r)][j-(j>c)]=a.m[i][j];
    		int Ivq=pow_mod(Q[c],mod-2),Ivp=pow_mod(P[r],mod-2);
    		int Iv=1LL*Ivq*Ivp%mod;
    		mat_ret.m[r][c]=dat(mat_lin,n-1);
    		if((r+c)&1)mat_ret.m[r][c]=mod-mat_ret.m[r][c];
    		for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)
    		{
    			int val=1LL*P[i]*Q[j]%mod*Iv%mod*mat_ret.m[r][c]%mod;
    			mat_ret.m[i][j]=val;
    		}return mat_ret;
    	}
    	
    	matrix get_adjoint_matrix(const matrix &a,int n)
    	{
    		int Z=calculate_r(a,n);
    		if(Z==n)return get_adjoint_matrix_full(a,n);
    		else if(Z==n-1)return get_adjoint_matrix_one(a,n);
    		else
    		{
    			memset(mat_ret.m,0,sizeof(mat_ret.m));
    			return mat_ret;
    		}
    	}
    }
    
    展开全文
  • 代数余子式之和计算技巧

    万次阅读 2020-05-13 11:23:16
    1.因为代数余子式Aij与对应元素aij毫无关系,所以可以改变代数余子式对应行或列的元素的值,使其刚好为代数余子式的系数,此时,代数余子式之和等于新的行列式的值 例: 求A31+2*A32+3*A33 解:因为代数余子式...

    1.因为代数余子式Aij与对应元素aij毫无关系,所以可以改变代数余子式对应行或列的元素的值,使其刚好为代数余子式的系数,此时,代数余子式之和等于新的行列式的值

    例:

    求A31+2*A32+3*A33

    解:因为代数余子式对应的是第三行所有元素,系数依次为1,2,3,所以把A的第三行直接改为1,2,3,得到新的行列式B

    可见,新的行列式值为-14,所以原式等于-14

    2.第i行(或列)的元素,分别乘以第j行(或列)的元素所对应的代数余子式,之和为0(i!=j),即对于n阶行列式

    其实,这个可以看作是1的变体。因为采用方法一,将第j行(或列)改为第i行(或列)的元素后,新的矩阵中有两行一摸一样,必定不满秩,值必定为0

    展开全文
  • 张宇1000题线性代数 第一、二章 行列式、余子式和代数余子式计算 易错题和难题记录

    目录

    第一章 行列式

    AA

    3.139271111248161248=\begin{vmatrix}1&3&9&27\\1&-1&1&-1\\2&4&8&16\\1&-2&4&-8\end{vmatrix}=(  )。
    (A)240;(A)240;
    (B)480;(B)480;
    (C)240;(C)-240;
    (D)480.(D)-480.

      这是44阶行列式,将第三行提出公因子,该行列式实际上是由数字3,1,2,23,-1,2,-2升幂排列构造的范德蒙行列式,可利用公式直接定值,即
    139271111248161248=213323311(1)2(1)312222312(2)2(2)3=2×(23)×(2+1)×(22)×(23)×(2+1)×(13)=480. \begin{aligned} &\begin{vmatrix}1&3&9&27\\1&-1&1&-1\\2&4&8&16\\1&-2&4&-8\end{vmatrix}=2\begin{vmatrix}1&3&3^2&3^3\\1&-1&(-1)^2&(-1)^3\\1&2&2^2&2^3\\1&-2&(-2)^2&(-2)^3\end{vmatrix}\\ =&2\times(-2-3)\times(-2+1)\times(-2-2)\times(2-3)\times(2+1)\times(-1-3)=-480. \end{aligned}
      故选(D)(D)。(这道题主要利用了范德蒙行列式求解

    BB

    5.设A\bm{A}n(n2)n(n\geqslant2)阶方阵,A=3|\bm{A}|=3,则(A)=|(\bm{A}^*)^*|=(  )。
    (A)3(n1)2;(A)3^{(n-1)^2};
    (B)3n21;(B)3^{n^2-1};
    (C)3n2n;(C)3^{n^2-n};
    (D)3n1;(D)3^{n-1};

      因为A=3|\bm{A}|=3,故A\bm{A}可逆,则(A)(A)=AE,(A)=A(A)1=AAA=An2A,(A)=An2A=A(n2)nA=An22n+1=3(n1)2(\bm{A}^*)(\bm{A}^*)^*=|\bm{A}^*|\bm{E},(\bm{A}^*)^*=|\bm{A}^*|(\bm{A}^*)^{-1}=|\bm{A}^*|\cfrac{\bm{A}}{|\bm{A}|}=|\bm{A}|^{n-2}\bm{A},|(\bm{A}^*)^*|=||\bm{A}|^{n-2}\bm{A}|=|\bm{A}|^{(n-2)n}|\bm{A}|=|\bm{A}|^{n^2-2n+1}=3^{(n-1)^2}。(这道题主要利用了矩阵的性质求解

    14.计算行列式x+1xxxxx+12xxxxx+13xxxxx+1n\begin{vmatrix}x+1&x&x&\cdots&x\\x&x+\cfrac{1}{2}&x&\cdots&x\\x&x&x+\cfrac{1}{3}&\cdots&x\\\vdots&\vdots&\vdots&&\vdots\\x&x&x&\cdots&x+\cfrac{1}{n}\end{vmatrix}


    Dn=x+1xxxxx+12xxxxx+13xxxxx+1n=x+1xxx11200101301001n=1+(i=1ni)xxxx01200001300001n=1n![1+n(n+1)2x]. \begin{aligned} D_n&=\begin{vmatrix}x+1&x&x&\cdots&x\\x&x+\cfrac{1}{2}&x&\cdots&x\\x&x&x+\cfrac{1}{3}&\cdots&x\\\vdots&\vdots&\vdots&&\vdots\\x&x&x&\cdots&x+\cfrac{1}{n}\end{vmatrix}=\begin{vmatrix}x+1&x&x&\cdots&x\\-1&\cfrac{1}{2}&0&\cdots&0\\-1&0&\cfrac{1}{3}&\cdots&0\\\vdots&\vdots&\vdots&&\vdots\\-1&0&0&\cdots&\cfrac{1}{n}\end{vmatrix}\\ &=\begin{vmatrix}1+\left(\displaystyle\sum\limits_{i=1}^ni\right)x&x&x&\cdots&x\\0&\cfrac{1}{2}&0&\cdots&0\\0&0&\cfrac{1}{3}&\cdots&0\\\vdots&\vdots&\vdots&&\vdots\\0&0&0&\cdots&\cfrac{1}{n}\end{vmatrix}=\cfrac{1}{n!}\left[1+\cfrac{n(n+1)}{2}x\right]. \end{aligned}
    这道题主要利用了行列式变换求解

    CC

    1.设D=a11a1k00ak1akk0000b11b1m00bm1bmm,D1=00a11a1k00ak1akkb11b1m00bm1bmm00D=\begin{vmatrix}a_{11}&\cdots&a_{1k}&0&\cdots&0\\\vdots&&\vdots&\vdots&&\vdots\\a_{k1}&\cdots&a_{kk}&0&\cdots&0\\0&\cdots&0&b_{11}&\cdots&b_{1m}\\\vdots&&\vdots&\vdots&&\vdots\\0&\cdots&0&b_{m1}&\cdots&b_{mm}\end{vmatrix},D_1=\begin{vmatrix}0&\cdots&0&a_{11}&\cdots&a_{1k}\\\vdots&&\vdots&\vdots&&\vdots\\0&\cdots&0&a_{k1}&\cdots&a_{kk}\\b_{11}&\cdots&b_{1m}&0&\cdots&0\\\vdots&&\vdots&\vdots&&\vdots\\b_{m1}&\cdots&b_{mm}&0&\cdots&0\end{vmatrix},若DD1D\ne D_1,则(  )。
    (A)k,m(A)k,m均为奇数;
    (B)k,m(B)k,m均为偶数;
    (C)k(C)k为奇数,mm为偶数;
    (D)k(D)k为偶数,mm为奇数。

      由类似AOOB\begin{vmatrix}\bm{A}&\bm{O}\\\bm{O}&\bm{B}\end{vmatrix}OABO\begin{vmatrix}\bm{O}&\bm{A}\\\bm{B}&\bm{O}\end{vmatrix}的行列式定值法,可推得计算公式AOOB=AB,OABO=(1)kmAB\begin{vmatrix}\bm{A}&\bm{O}\\\bm{O}&\bm{B}\end{vmatrix}=|\bm{A}||\bm{B}|,\begin{vmatrix}\bm{O}&\bm{A}\\\bm{B}&\bm{O}\end{vmatrix}=(-1)^{km}|\bm{A}||\bm{B}|,故选(A)(A)。(这道题主要利用了分块矩阵求解

    4.行列式Dn+1=an(a+1)n(a+n)nan1(a+1)n1(a+n)n1aa+1a+n111=D_{n+1}=\begin{vmatrix}a^n&(a+1)^n&\cdots&(a+n)^n\\a^{n-1}&(a+1)^{n-1}&\cdots&(a+n)^{n-1}\\\vdots&\vdots&&\vdots\\a&a+1&\cdots&a+n\\1&1&\cdots&1\end{vmatrix}=______。

      将行列式Dn+1D_{n+1}n+1n+1行依次与相邻的上一行进行交换,经过nn次交换后,换到第11行。完全类似,Dn+1D_{n+1}的第nn行经过n1n-1次相邻两行交换,换到第22行,如此共进行了n+(n1)++2+1=n(n+1)2n+(n-1)+\cdots+2+1=\cfrac{n(n+1)}{2}次行交换后,Dn+1D_{n+1}化为范德蒙行列式。
    Dn+1=(1)n(n+1)2111aa+1a+nan1(a+1)n1(a+n)n1an(a+1)n(a+n)n=(1)n(n+1)20j<in[(a+i)(a+j)]=(1)n(n+1)20j<in(ij)=(1)n(n+1)2n!(n1)!2!. \begin{aligned} D_{n+1}&=(-1)^{\frac{n(n+1)}{2}}\begin{vmatrix}1&1&\cdots&1\\a&a+1&\cdots&a+n\\\vdots&\vdots&&\vdots\\a^{n-1}&(a+1)^{n-1}&\cdots&(a+n)^{n-1}\\a^n&(a+1)^n&\cdots&(a+n)^n\end{vmatrix}\\ &=(-1)^{\frac{n(n+1)}{2}}\prod\limits_{0\leqslant j<i\leqslant n}[(a+i)-(a+j)]\\ &=(-1)^{\frac{n(n+1)}{2}}\prod\limits_{0\leqslant j<i\leqslant n}(i-j)\\ &=(-1)^{\frac{n(n+1)}{2}}n!(n-1)!\cdots2!. \end{aligned}
    这道题主要利用了范德蒙行列式求解

    7.设A\bm{A}为奇数阶矩阵,且AAT=ATA=E,A>0\bm{AA}^\mathrm{T}=\bm{A}^\mathrm{T}\bm{A}=\bm{E},|\bm{A}|>0,则AE=|\bm{A}-\bm{E}|=______。

      AE=AAAT=A(EAT)=A(EA)T=AEA|\bm{A}-\bm{E}|=|\bm{A}-\bm{AA}^\mathrm{T}|=|\bm{A}(\bm{E}-\bm{A}^\mathrm{T})|=|\bm{A}||(\bm{E}-\bm{A})^\mathrm{T}|=|\bm{A}||\bm{E}-\bm{A}|。由AAT=ATA=E\bm{AA}^\mathrm{T}=\bm{A}^\mathrm{T}\bm{A}=\bm{E},可知A2=1|\bm{A}|^2=1。又由A>0|\bm{A}|>0,可知A=1|\bm{A}|=1。又A\bm{A}为奇数阶矩阵,故EA=(AE)=AE|\bm{E}-\bm{A}|=|-(\bm{A}-\bm{E})|=-|\bm{A}-\bm{E}|,故有AE=AE|\bm{A}-\bm{E}|=-|\bm{A}-\bm{E}|,于是AE=0|\bm{A}-\bm{E}|=0。(这道题主要利用了矩阵变换求解

    11.计算行列式abcdbadccdabdcba\begin{vmatrix}a&b&c&d\\-b&a&-d&c\\-c&d&a&-b\\-d&-c&b&a\end{vmatrix}


    abcdbadccdabdcba2=[abcdbadccdabdcba][abcdbadccdabdcba]=a2+b2+c2+d20000a2+b2+c2+d20000a2+b2+c2+d20000a2+b2+c2+d2=(a2+b2+c2+d2)4 \begin{aligned} &\begin{vmatrix}a&b&c&d\\-b&a&-d&c\\-c&d&a&-b\\-d&-c&b&a\end{vmatrix}^2=\left|\begin{bmatrix}a&b&c&d\\-b&a&-d&c\\-c&d&a&-b\\-d&-c&b&a\end{bmatrix}\begin{bmatrix}a&b&c&d\\-b&a&-d&c\\-c&d&a&-b\\-d&-c&b&a\end{bmatrix}\right|\\ =&\begin{vmatrix}a^2+b^2+c^2+d^2&0&0&0\\0&a^2+b^2+c^2+d^2&0&0\\0&0&a^2+b^2+c^2+d^2&0\\0&0&0&a^2+b^2+c^2+d^2\end{vmatrix}\\ =&(a^2+b^2+c^2+d^2)^4 \end{aligned}
      观察可知原行列式中a4a^4的系数为11,故原式=(a2+b2+c2+d2)2=(a^2+b^2+c^2+d^2)^2。(这道题主要利用了矩阵乘法求解

    第二章 余子式和代数余子式的计算

    CC

    4.A\bm{A}n(n3)n(n\geqslant3)阶非零实矩阵,AijA_{ij}A|\bm{A}|中元素aija_{ij}的代数余子式,证明:

    (1)aij=AijATA=Ea_{ij}=A_{ij}\Leftrightarrow\bm{A}^\mathrm{T}\bm{A}=\bm{E},且A=1|\bm{A}|=1

      当aij=Aija_{ij}=A_{ij}时,有AT=A\bm{A}^\mathrm{T}=\bm{A}^*,则ATA=AA=AE\bm{A}^\mathrm{T}\bm{A}=\bm{A}^*\bm{A}=|\bm{A}|\bm{E}。由于A\bm{A}nn阶非零实矩阵,即aija_{ij}不全为零,所以tr(AAT)=i=1nj=1naij2>0\mathrm{tr}(\bm{AA}^\mathrm{T})=\displaystyle\sum\limits_{i=1}^n\displaystyle\sum\limits_{j=1}^na_{ij}^2>0。而tr(AAT)=tr(AE)=nA\mathrm{tr}(\bm{AA}^\mathrm{T})=\mathrm{tr}(|\bm{A}|\bm{E})=n|\bm{A}|,这说明A>0|\bm{A}|>0,在ATA=AE\bm{A}^\mathrm{T}\bm{A}=|\bm{A}|\bm{E}两边取行列式,得An2=1|\bm{A}|^{n-2}=1,于是A=1|\bm{A}|=1,故ATA=E\bm{A}^\mathrm{T}\bm{A}=\bm{E}
      反之,若ATA=E\bm{A}^\mathrm{T}\bm{A}=\bm{E}A=1|\bm{A}|=1,则ATA=AE=E\bm{A}^\mathrm{T}\bm{A}=|\bm{A}|\bm{E}=\bm{E}A\bm{A}可逆,于是,ATA=AA,AT=A\bm{A}^\mathrm{T}\bm{A}=\bm{A}^*\bm{A},\bm{A}^\mathrm{T}=\bm{A}^*,即aij=Aija_{ij}=A_{ij}。(这道题主要利用了矩阵变换求解

    写在最后

      如果觉得文章不错就点个赞吧。另外,如果有不同的观点,欢迎留言或私信。
       欢迎非商业转载,转载请注明出处。

    展开全文
  • 用余子式、代数余子式和伴随 来求逆矩阵 (注意:也去看看 用行运算来求逆矩阵 和 矩阵计算器。)   我们可以这样去求逆矩阵: 一、求余子式矩阵, 二、转成代数余子式矩阵, 三、转...

    用余子式、代数余子式和伴随
    来求逆矩阵

    (注意:也去看看 用行运算来求逆矩阵矩阵计算器。)

     

    我们可以这样去求逆矩阵:

    • 一、求余子式矩阵,
    • 二、转成代数余子式矩阵,
    • 三、转成伴随矩阵,
    • 四、乘以 1/行列式。

    最好是用实例来解释!

    例子:求 A 的逆:

    逆矩阵

    -要做四步。全都是简单的算术,但有很多计算,所以要小心,不要犯错!

    一、余子式矩阵


    第一步是造一个 “余子式矩阵”。这步有最多计算。

    为矩阵的每个元素:

    • 不使用在本行与本列的元素
    • 计算剩下来的值的行列式

    把行列式的结果放进一个矩阵("余子式矩阵")

    行列式

    2×2 矩阵(2行和2列)的行列式很容易:ad-bc (3×3 矩阵会比较复杂,。。。。。。)

    想:十字乘法

    • 蓝色 代表 正 (+ad),
    • 红色 代表 负 (-bc)

    images/matrix-2x2-det-c.gif

    计算


    这是"余子式矩阵"的头两个和最后两个计算(留意我不使用在元素本行和本列的值,只用剩下来的值来算行列式):

    在这里插入图片描述

    这是整个矩阵的计算程序:

    在这里插入图片描述

    二、代数余子式矩阵


    这个容易!把"纵横交错"排列的正负号放在"余子式矩阵"上。换句话说,我们需要每隔一个格改变正负号,像这样:

    在这里插入图片描述

    三、伴随

    "转置" 以上的矩阵。。。。。。就是沿对角线对调元素的位置(在对角线上的元素不变):

    在这里插入图片描述

    四、乘以 1/行列式


    求原本的矩阵的行列式。这不困难,因为在求"余子式矩阵"时我们已经计算了局部的行列式。


    在这里插入图片描述

    所以:把顶行的每个元素乘以其"余子式"的行列式:


    行列式 = 3×2 - 0×2 + 2×2 = 10


    现在把伴随矩阵乘以 1/行列式:


    在这里插入图片描述

    大功告成!


    把这答案与在 用初等行运算来求逆矩阵 里求的逆矩阵比较一下。是不是一样?你喜欢哪个方法?


    较大的矩阵


    求更大的矩阵的逆矩阵都是用同样的方法(例如 4×4 和 5×5等),可是,真的要做很多很多的计算!


    4×4 矩阵要做 16个 3×3 行列式。所以通常是用电脑来做(例如 矩阵计算器。)


    结论

    • 为每个元素,计算不在其本行或本列 的值 的行列式 来构成余子式矩阵
    • 纵横交错排列的正负号放在"余子式矩阵"上以形成代数余子式矩阵
    • 转置矩阵以成为伴随矩阵
    • 乘以 1/行列式 以成为逆矩阵
    展开全文
  • 另一种是代数余子式公式。 主元的乘积为 2∗32∗43∗54=52 * \frac{3}{2}* \frac{4}{3}* \frac{5}{4} = 52∗23​∗34​∗45​=5。 大公式有 4!=244!=244!=24 项,但只有 5 个非零项。 detA=16−4−4−4+1=...
  • 对于行列式这一个知识点,是考研中的重点,无论是985还是211,一般都放在第一题或者第二题进行考察,是需要大家熟练...关于余子式和代数余子式★ 余子式:设是一个 阶行列式,划去的第行及第列,剩下的个元素按照...
  •  看起来只是表示一个简单的计算,仅仅计算了一个数值,但是别忘了,行列式是由向量组成的,它一定会表示向量间的某种关系。  在《线性代数笔记4——向量3(叉积)》中我们看到,二阶行列式表示了二维平面中以两个...
  • 课程简介18.06是Gilbert Strang教授在MIT开的线性代数公开课,课程视频以及相关资料请见https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/index.htm。...然后介绍了利用代数余子式
  • 行列式公式和代数余子式

    千次阅读 2019-05-21 06:55:43
    整个求解思想就是尽量将矩阵化为对角矩阵,每次取一行,逐渐化简矩阵,在化简过程中,有很多矩阵出现零行或零列,行列式变为0,我们用上述方法对3*3矩阵计算行列式,去掉那些行列式为0的项,得到 从上面...
  • 文章目录逆矩阵-inverse matrix行列式-determinant伴随矩阵-adjugate、adjoint matrix余子式-Cofactor、Minor余子项余子式代数余子式-Algebraic cofactor、Minor伴随矩阵-二维的例子References LearnGL - 学习笔记...
  • ———————————————完更撒花~ (6/6)————————————————[参考文献] Michael Artin:代数(第二版)这章复习一些必要的矩阵知识:1 基本运算[矩阵] 矩阵是按 m 行 n 列矩形排列的 个数。...
  • 代数余子式的概念以及计算方法 三对角线矩阵行列式规律 行列式公式 利用上一讲里拆分的性质,可以归纳出这个公式,就比如这样: 最终公式为: detA=∑±a1αa1βa1γ...a1ω,α,β,γ....ω,perm(1...n)det ...
  • 首先以2*2行列式为例:这种方法求解的思想是:把行列式的每一行都化成若干个行列式相加, 一次化解一行, 行列式的结果保持不变(为什么?)。 将所有的行全部化完进行求值运算。再看看3*3行列式 思路:首先固定一行...
  • 向量演算的常规形式中使用外积,不能推广到更高维度,而另一种代数几何的方法,它利用可以推广的外积。 向量基础: 向量分析中的基本代数(非微分)运算被称为矢量代数。 如果学过线性代数的话,你会认为我在下文中...
  • 众所周知,同济《线性代数》教材是给二流学校的非数学系学生使用的。他们水平本就不高,如果教材再烂的话,那就可以直接退学去搬砖了。1.第一章就讲行列式:实际上行列式是线性代数中最没用,最鸡肋的一个概念了。...
  • 先给大家道个歉,有一周时间没有发...堂主看了下5月的规划,按照规划线性代数你们应该还没有开始第三章向量的复习。还好还好,堂主终于赶上末班车了。废话不多说,直接上干货。堂主之前的文章提到过,线性代数市面...
  • 矩阵,代数余子式为: \[ \text{det }A=a_{11}C_{11}+a_{12}C_{12}+\cdots+a_{1n}C_{1n} \] 应用到 \(2\times 2\) 矩阵,得到: \[ \left|\begin{array}{rr} a & b\\ c & d \end{array}\right|=ad+b(-c) \] 三...
  • 对的~如果确定视同缴费年限后,97年底前的年限就要以过渡性养老金方法来核算这部分养老金。过渡性养老金是什么意思? 在实施企业养老保险改革后,新参保人员的养老金由基础养老金和个人账户养老金组...
  • 分组配方法再平方差。大家先在草稿本上认真地做一遍,然后再看后面的视频。期待您在评论区留言。欢迎大家,分别添加,同时关注,方老师的这三个微信公众号。(方老师数学课堂矩阵公众号,注重基础常考题,全部免费...
  • 如果你只是上述方法技巧的使用者,「食谱」类方法或许就足够了。但是,这种方法并不适用于那些真正想要从事研究并希望做出重大贡献的人。所以,作者认为,你还必须具有扎实的线性代数、最优化理论等方面的背景知识。...
  • 第四大题计算,涉及到的题型有口算、用竖式计算、估算、列式计算,老师的要求是拿到满分,拿不到满分的同学家长要注意了,小学计算学不好到了初中学好代数就比较困难了。 第五题操作题,第1题画出下列图形的高,请...
  • 最近高数课在上线性代数,二阶的还能口算,三阶的有点麻烦,想陆陆续续地把公式都用C来实现。因为二阶的行列式如果用C来写就是一句话:val=det[0][0]*det[1][1]-det[0][1]*det[1][0];太简单了这...
  • 线性代数行列式计算之降阶法一般针对于行列是0元素较多的情况,它的核心思想是对某行(列)能方便的进行行列式展开,即某行(列)元素与其代数余子式的乘积,而该行(列)元素为0的较多,对应的代数余子式又比较简单...
  • 外框打印只有在极个别情况下才会实现完美对齐,目前还没有找到普适方法。 代码实现 #include #include #include #include using namespace std; #define ull unsigned long long class Matrix { double* pData; ...
  • 实用的行列式计算方法 —— 线性代数

    万次阅读 多人点赞 2020-06-02 21:16:14
    1.2 排列、逆序、逆序数 1.3 n阶行列式的概念 二、行列式的性质(行列同理) 经典例题 三、行列式按行(列)展开公式 3.1 代数余子式 定理 3.2 展开公式 3.2.1 范德蒙德行列式 相关例题 3.2.2 拉普拉斯行列式 相关例题 ...
  • 满意答案w5165688189推荐于 2018.04.08采纳率:41%等级:12已帮助:7379人format long e计算都是以最高精度计算的,还好你只是要改变显示精度:)-------------------------以下引用--------------------------------...
  • 线性代数数值计算注解 Chp1 线性代数中的方程组 浮点数,因为储存原因存在“四舍五入”误差 对于方阵,一般使用消元法 部分主元法:通常选择一列中绝对值最大的元素作为主元,减少舍入误差 矩阵先前化简需要O(n3)O...
  • 行列式的计算方法(含四种,看完就会!)

    万次阅读 多人点赞 2021-02-03 23:19:35
    行列式的计算 ...二、代数余子式法 三、等价转化法 四、逆序数法 总结 本文主要讲述行列式的求解方法,所以本文侧重于方法的讲解,而并非推导。主要思路为从三阶行列式举例,再过渡到高阶行列式的通用方法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 751
精华内容 300
关键字:

代数余子式的计算方法