线性方程组解的判定
- 格式:doc
- 大小:116.00 KB
- 文档页数:3
第二节 线性方程组解的情况判定教学目的:掌握线性方程组解的存在性的判别方法。
教学重点:线性方程组有解判别定理及其推论。
教学过程:下面我们来说明如何利用初等变换来解一般的线性方程组。
第一步 对于方程组(9.1),如果1x 的系数不全为零,那么利用初等变换1,可以设110a ≠;第二步 利用初等变换2,分别把第一个方程的111i a a -倍加到第i 个方程(2,,)i s = ,于是方程组(9.1)变成111122112222222n n n n s sn n s a x a x a x b a x a x b a x a x b +++=⎧⎪'''++=⎪⎨⎪⎪'''++=⎩(9.2) 其中1111(2,,;2,,)i ij ij j a a a a i s j n a '=-⋅== 。
这样,解方程组(9.1)就归结为解方程组2222222n n s sn n s a x a x b a x a x b ⎧'''++=⎪⎪⎨⎪'''++=⎪⎩ (9.3)方程组(9.1)有解的充分必要条件为方程组(9.3)有解;第三步 对(9.2)上面的类似变换,最后得到一个阶梯形方程组111122*********100000r r n n r r n n rr r rn n r r c x c x c x c x d c x c x c x d c x c x d d ++++++=⎧⎪+++=⎪⎪⎪++=⎪⎨=⎪⎪=⎪⎪⎪=⎩(9.4) 其中0(1,2,,)ii c i r ≠= 。
方程组(9.4)中的“00=”这样一些恒等式可能不出现,也可能出现,去掉它们不影响(9.4)的解。
方程组(9.1)与方程组(9.4)是同解的。
下面讨论方程组(9.4)解的情况,即方程组(9.1)解的情况。
1.如(9.4)中有方程10r d +=,而10r d +≠,这是不管1,,n x x 取什么值都不能使它成为等式,所以(9.4)无解,从而(9.1)无解。
线性方程组的解的判定
线性方程组的解的判定,是指对线性方程组的解进行判定,以确定其是否有解、是唯一解或者无解。
下面就来详细介绍线性方程组解的判定。
首先,我们来看一下线性方程组的定义:线性方程组是由一组线性方程组成的集合,并且每一个方程中变量的指数为1。
例如:2x + 3y = 5, 4x - 6y = 12.
对于线性方程组的解的判定,有三种常用的方法:
1. 通解法:通解法是求解线性方程组的一种常用方法,即令原方程组的所有方程式左端相加,右端相减,得到一个新的等式。
然后再将此等式化为标准形式,即将所有变量的系数变为正数,最后将方程组解为一个共同的标准型,从而得出线性方程组的解。
2. 秩的判定法:秩的判定法是根据矩阵的秩来判断线性方程组的解。
可以将线性方程组转换为矩阵形式,计算出矩阵的秩,然后根据矩阵的秩来判断线性方程组是否有解。
3. 间接判定法:间接判定法是一种在解线性方程组时,对方程组的解进行判定的一种方法。
这种方法既不求解方程组,也不求矩阵的秩,而是计算出方程组的系数矩阵的行列式,根据行列式的值来判定方程组是否有解,这
种方法的优点是求解简单易懂,但是缺点是计算量大,无法直接判断方程组是否有唯一解。
以上就是线性方程组解的判定的详细介绍,它是一种重要的数学解决问题的方法,可以有效地判定线性方程组的解是否有解,是唯一解或者无解,从而给出解决问题的有效方案。
线性方程组解的判定
线性方程组解的判定是一个重要的数学问题,它涉及到对一组未知量的求解。
解的判定问题的主要内容如下:
1. 系数矩阵存在不等式:在求解线性方程组时,首先要判断系数矩阵是否存在不等式,即是否存在元素值为负的情况:若存在,则解不存在;如果全部元素值都不为负,则判定解存在。
2. 是否存在无穷解:通常情况下,一个线性方程组只有唯一解,即只有一组解。
但也有可能存在无穷多解,即系数矩阵存在元素值全为0,此时解可以是任意一组数,因此可以判定存在无穷解。
3. 闭解的确定:当系数矩阵存在不等式或存在元素值全为0时,可以判定存在无穷解;当系数矩阵存在唯一解时,需要通过计算、符号识别和几何意义的结合,来确定具体的闭解。
4. 压缩可行性:压缩可行性判定法是指将求解所求出来的解,压缩在基本解所构成的空间上,以便表达出更复杂的结果。
5. 方程式系数:也可以通过方程式系数的分析,来判定方程组的解的存在与否,这是一种常用的判定方法。
从上述内容可以看到,线性方程组解的判定是一个复杂的数学问题,要想判断线性方程组的解的存在性,需要结合不等式判定、无穷解判定、压缩可行性判定以及方程式系数等步骤,一步步进行判断,才能正确地确定某个线性方程组的解的存在性。
线性方程组的解的判定线性方程组是数学中常见的一类方程组,它的解的判定对于求解方程组和解释方程组所代表的实际问题具有重要意义。
本文将介绍线性方程组的解的判定方法,帮助读者更好地理解和应用线性方程组的解。
一、线性方程组的定义和形式线性方程组由多个线性方程组成,每个线性方程的形式为:a₁x₁ + a₂x₂ + ... + aₙxₙ = b,其中a₁、a₂、...、aₙ和b都是已知的常数,x₁、x₂、...、xₙ分别表示未知数。
二、线性方程组的解的分类1. 无解的情况当线性方程组中存在矛盾的方程时,即使尝试任何的解法,也无法找到满足所有方程的解。
这种情况下,线性方程组被称为无解。
2. 唯一解的情况当线性方程组中的所有方程可以通过某种方法相互线性无关地表示出来时,存在唯一的解。
这种情况下,线性方程组被称为有唯一解。
3. 无穷多解的情况当线性方程组中的某些方程可以通过某种方法表示为其他方程的线性组合时,存在无穷多的解。
这种情况下,线性方程组被称为有无穷多解。
三、线性方程组解的判定方法1. 利用高斯消元法判定解的情况高斯消元法是一种常用的求解线性方程组的方法,通过将线性方程组化简为阶梯形矩阵,可以判定解的情况。
具体判定如下:- 如果阶梯形矩阵中存在行中全为0但右侧常数项不为0的情况,则线性方程组无解。
- 如果阶梯形矩阵中行的个数(非全0行)等于未知数的个数,则线性方程组有唯一解。
- 如果阶梯形矩阵中行的个数(非全0行)小于未知数的个数,则线性方程组有无穷多解。
2. 利用矩阵行列式判定解的情况根据线性代数的知识,矩阵行列式的值可以用来判定线性方程组的解的情况。
具体判定如下:- 如果线性方程组的系数矩阵的行列式不等于0,则线性方程组有唯一解。
- 如果线性方程组的系数矩阵的行列式等于0,且增广矩阵的行最简形式中,最后一列除了主元所在的行外,其他行均为全零行,则线性方程组有无穷多解。
- 如果线性方程组的系数矩阵的行列式等于0,但增广矩阵的行最简形式中,最后一列除了主元所在的行外,存在非全零行,则线性方程组无解。
线性⽅程组解的判别与解的结构⼀.线性⽅程组求解定理1.线性⽅程组有解判别定理线性⽅程组a11 x1 + a12 x2 + … + a1n x n = b1 ,a21 x1 + a22 x2 + … + a2n x n = b2 , ......................................................as1 x1 + as2 x2 + … + asn x n = bs有解的充分必要条件是 : 它的系数矩阵与增⼴矩阵有相同的秩 .2. 齐次线性⽅程组a11 x1 + a12 x2 + … + a1n x n = 0,a21 x1 + a22 x2 + … + a2n x n = 0, ......................................................as1 x1 + as2 x2 + … + asn x n = 0有⾮零解的充分必要条件是: 它的系数矩阵的秩r ⼩于未知量个数n .齐次线性⽅程组求解⼀般步骤: 1.把系数矩阵通过初等变换,变换成阶梯形矩阵. 2.判断阶梯形矩阵中⾮零⾏的个数秩(r),以及计算⾃由元个数m=n-r. 3.确定⾃由元位置,然后以次为它们赋值1,0... 4.求解出⽅程组的基础解系. 5.⽤基础解系表⽰出⽅程全解.⾮齐次线性⽅程组求解,与齐次线性⽅程组求解过程基本⼀致,只需要再求出⼀个特解。
⼆.如何⽤C语⾔计算线性⽅程组的解 那么如何⽤算法求出线性⽅程组的解呢? 就是根据上⾯⽅程组求解⼀般步骤来的, 1.矩阵的初等变换(在上次⾏列式计算的基础上,这个很好实现). 2.求出矩阵的秩/⾃由元个数,然后确定⾃由元的位置(我认为这是⼀个难点) 3.初始化⾃由元(1,0,..),计算变量,最终求出基础解系 4.⾮齐次线性⽅程 4.1.先求出齐次线性⽅程组的基础解系 4.2.再利⽤上⾯步骤求⼀个特解即可1.矩阵的初等变换//初等⾏变换void primaryRowChange(int s, int n, double **array){int i,j,k,ii,kk,flag;double temp;for(i=0,j=0;i<s-1;i++,j++)//s⾏,最外围只需要变换s-1{ii=i;//如果⾏的⾸元为0,向下查找⼀个不为0的,然后换⾏if(*(*(array+i)+j) == 0){{if(*(*(array+k)+j)!=0)//第k⾏与第i⾏交换{for(kk=j;kk<n;kk++){temp=*(*(array+k)+kk);*(*(array+k)+kk) = *(*(array+i)+kk);*(*(array+i)+kk) = temp;}flag =1;break;}}//判断是交换成功,如果没有成功,则i--if(!flag){i--;continue;}i--;j--;continue;}for(;ii<s-1;ii++){if(*(*(array+ii+1)+j)==0)continue;temp =-*(*(array+ii+1)+j) / *(*(array+i)+j);for(k=j;k<n;k++)*(*(array+ii+1)+k) += *(*(array+i)+k) * temp;}}}2.计算矩阵的秩//计算矩阵的秩int getRank(int s, int n, double **array){int flag;int i,j,r=s;//判断⾮零⾏个数for(i=0;i<s;i++){flag=0;for(j=0;j<n;j++){if(*(*(array+i)+j)!=0 && (*(*(array+i)+j)>0.01 || *(*(array+i)+j) <-0.01))//排除很⼩数, {flag=1;break;}}if(!flag)//当前⾏全为零,则r为i;{r=i;break;}}return r;}3.确定⾃由元位置 ⾃由元确定需要考虑两种情况: 1).系数梯形矩阵最后⼀⾏只有⼀个⾮零元素. 2) 系数梯形矩阵中某⾏的个数等于⾃由元的个数.//获取⾃由元信息int* getFreeElement(int r, int n, double **array, int **matrixPrimary, double **matrixCalc) {int i,j,k,o,p,q;int m=n-1-r;//n-1:int *freeElement =(int*)malloc(m*sizeof(int));j=-1;//判断是否有为0的变量q=0;//如果当前⾏⾮零个数与⾃由元个数相等,则标记为1,⾃由元选择起始位置左移⼀位if(*(*(matrixPrimary+i)+1)==1)//说明第i⾏只有⼀个变量,如果是齐次⽅程它的解⼀定为0 {j=*(*(matrixPrimary+i)+0);for(k=0;k<r;k++)*(*(matrixCalc+k)+j)=*(*(array+k)+n-1) / *(*(array+k)+j);}else if(n-1-matrixPrimary[i][0]==m){q=1;}else if(n-1-matrixPrimary[i][0]>m){o=matrixPrimary[i][0];//当前⾏的⾸元位置p=0;//次数for(k=n-2-q;k>=o;k--)//从后向前查找⾃由元位置{if(k==j)continue;freeElement[p++]=k;if(p==m)//说明已经找到 m个⾃由元return freeElement;}}}return freeElement;}求解⽰例图:1> p148-例42> 2.7(1)-13> 2.7(2)-1.14> 2.7(2)-1.25> 2.7(2)-1.36> 2.7(3)-1.17> 2.7(3)-1.28> 2.7(3)-1.39> 2.7(3)-1.410> p155-例6以下是C语⾔求解的全部源代码#include <stdio.h>#include <stdlib.h>double undefined=-999;//标志位void main(){int i,j,s,n;int res;double **array,*temp,**result;//tempdouble t1[6]={1,1,1,1,1,0};double t2[6]={3,2,1,0,-3,0};double t3[6]={0,1,2,3,6,0};double t4[6]={5,4,3,2,6,0};int homogeneous=1;//标识⽅程是否是齐次⽅程void primaryRowChange(int s, int n, double **array);void printfDouble1Dimension(int n, double *array);void printfDouble2Dimension(int s, int n, double **array);int homogeneousResolve(int s, int n, int homogeneous, double **array, double **result); int nonHomegeneousResolve(int s, int n, double **array, double **result,double *special); //void printfInt2Dimension(int s, int n, int ** array);//int* getPrimary(int n,double *temp);//输⼊说明printf("输⼊说明:⾏数代表S个线性⽅程,N代表未知数及常数项.\n");printf("例如⽅程如下:\n");printf("1x-2y+3z=4\n");printf("-2x-4y+5z=10\n");printf("如下输⼊2⾏,4列:\n");printf("1 -2 3 4\n");printf("-2 -4 5 10\n\n");//开始printf("输⼊⾏数:");scanf("%d",&s);printf("输⼊列数:");scanf("%d",&n);//s=4;//n=6;//动态分配内存空间array =(double**)malloc(s*sizeof(double*));result =(double**)malloc(s*sizeof(double*));special =(double*)malloc(n*sizeof(double));for(i=0;i<s;i++){temp=(double*)malloc(n*sizeof(double));printf("请输⼊第%d⾏数组:",i+1);for(j=0;j<n;j++)scanf("%lf",temp+j);/*switch(i){case 0:temp=t1;//{1,1,1,1,1,0};break;case 1:temp=t2;//{3,2,1,0,-3,0};break;case 2:temp=t3;//{0,1,2,3,6,0};break;case 3:temp=t4;//{5,4,3,2,6,0};break;}*/array[i]=temp;}//打印数组printf("初等⾏列变换之前:\n");printfDouble2Dimension(s,n,array);//判断⽅程是否是齐次⽅程for(i=0;i<s;i++){if(*(*(array+i)+n-1)!=0)//如果最后⼀列,有不为0的说明⽅程为⾮齐次⽅程{homogeneous=0;break;}}primaryRowChange(s,n,array);printf("初等⾏列变换之后:\n");printfDouble2Dimension(s,n,array);if(homogeneous)//齐次{switch (res){case -1:printf("⽅程⽆解.\n");break;case0:printf("⽅程只有零解.\n");break;default:printf("⽅程的基础解系如下:\n");printfDouble2Dimension(res,n-1,result);break;}}else//⾮齐次{res=nonHomegeneousResolve(s,n,array,result,special);if(res==-1)printf("⽅程⽆解.\n");else{printf("⽅程的基础解系如下:\n");printfDouble2Dimension(res,n-1,result);printf("⽅程的特解如下:\n");printfDouble1Dimension(n-1,special);}}system("pause");}//初等⾏变换void primaryRowChange(int s, int n, double **array){int i,j,k,ii,kk,flag;double temp;for(i=0,j=0;i<s-1;i++,j++)//s⾏,最外围只需要变换s-1{ii=i;//如果⾏的⾸元为0,向下查找⼀个不为0的,然后换⾏if(*(*(array+i)+j) == 0){flag=0;for(k=i+1;k<s;k++){if(*(*(array+k)+j)!=0)//第k⾏与第i⾏交换{for(kk=j;kk<n;kk++){temp=*(*(array+k)+kk);*(*(array+k)+kk) = *(*(array+i)+kk);*(*(array+i)+kk) = temp;}flag =1;break;}}//判断是交换成功,如果没有成功,则i--if(!flag){i--;continue;}i--;j--;continue;}for(;ii<s-1;ii++){if(*(*(array+ii+1)+j)==0)continue;temp =-*(*(array+ii+1)+j) / *(*(array+i)+j);for(k=j;k<n;k++)*(*(array+ii+1)+k) += *(*(array+i)+k) * temp;}}}//⾮齐次⽅程解的情况int nonHomegeneousResolve(int s, int n, double **array, double **result, double *special) {int i,j,k,l;int r1,r2;//系数矩阵/增⼴矩阵的秩int getRank(int s, int n, double **array);int homogeneousResolve(int s, int n, int homogeneous, double **array, double **result);r1=getRank(s,n-1,array);r2=getRank(s,n,array);if(r1!=r2)return -1;//⽆解//特解temp =(double**)malloc(r1*sizeof(double*));homogeneousResolve(r1,n,0,array,temp);for(i=0;i<n;i++)*(special+i)=*(*(temp)+i);return homogeneousResolve(r1,n,1,array,result);}//齐次⽅程解的情况int homogeneousResolve(int s, int n, int homogeneous, double **array, double **result){int i,j,k,l,o,p,flag;int r;//秩rankint m;//⾃由元个数int f;//最后⼀个⾮零⾏⾸元的位置double sum1=0,sum2=0;double *temp = (double*)malloc(n*sizeof(double));//临时⾏指针int **matrixPrimary;//存储矩阵⾸元位置及⾮零元个数double **matrixCalc;//计算基础解系int *freeElement;//⾃由元位置double **matrixTemp;//声明函数void printfDouble2Dimension(int s, int n, double **array);void printfInt2Dimension(int s, int n, int **array);int** getPrimary(int s, int n, double **array);int getRank(int s, int n, double **array);double** initMatrixCalc(int s, int n);int* getFreeElement(int r, int n,double **array, int **matrixPrimary, double **matrixCalc);void printfInt1Dimension(int n, int *array);void getPrimarySolution(int r, int n, int homogeneous, double **array, int **matrixPrimary, double **matrixCalc ,int *freeElement, double **result); //秩rankr = getRank(s,n,array);//判断解的情况m=n-1-r;if(m<0)return -1;//⽆解else if(m==0)return0;//只有零解else{//初始化计算矩阵matrixCalc = initMatrixCalc(r,n);//获取矩阵⾸元信息matrixPrimary = getPrimary(r,n,array);/*printf("打印计算矩阵:\n");printfDouble2Dimension(r,n,matrixCalc);printf("打印矩阵⾸元信息:\n");printfInt2Dimension(r,2,matrixPrimary);*/freeElement = getFreeElement(r, n, array, matrixPrimary,matrixCalc);//打印⾃由元位置//printf("打印⾃由元位置:\n");//printfInt1Dimension(m, freeElement);//计算基础解系getPrimarySolution(r, n, homogeneous, array, matrixPrimary, matrixCalc, freeElement ,result);//printfDouble2Dimension(m,n,result);return m;}}//init Matrix calcdouble** initMatrixCalc(int s, int n){int i,j;double **array=(double**)malloc(s*sizeof(double*));for(i=0;i<s;i++){array[i] =(double*)malloc(n*sizeof(double));*(*(array+i)+n-1)=1;{*(*(array+i)+j)=undefined;}}return array;}//计算矩阵的秩int getRank(int s, int n, double **array){int flag;int i,j,r=s;//判断⾮零⾏个数for(i=0;i<s;i++){flag=0;for(j=0;j<n;j++){if(*(*(array+i)+j)!=0 && (*(*(array+i)+j)>0.01 || *(*(array+i)+j) <-0.01))//排除很⼩数, {flag=1;break;}}if(!flag)//当前⾏全为零,则r为i;{r=i;break;}}return r;}//查找某⾏⾮零个数及⾸元位置int** getPrimary(int s, int n, double **array){int i,j;int num=0,index=0;int **result=(int**)malloc(s*sizeof(int*));int *temp;for(i=0;i<s;i++){temp =(int*)malloc(2*sizeof(int));num=0;index=0;for(j=0;j<n;j++){if(*(*(array+i)+j)!=0){if(num==0)index=j;num+=1;}}temp[0]=index;temp[1]=num;result[i]=temp;}return result;}//获取⾃由元信息int* getFreeElement(int r, int n, double **array, int **matrixPrimary, double **matrixCalc){int i,j,k,o,p,q;int m=n-1-r;//n-1:int *freeElement =(int*)malloc(m*sizeof(int));j=-1;//判断是否有为0的变量q=0;//如果当前⾏⾮零个数与⾃由元个数相等,则标记为1,⾃由元选择起始位置左移⼀位for(i=r-1;i>=0;i--)//查找⾃由元,及位置为0的{if(*(*(matrixPrimary+i)+1)==1)//说明第i⾏只有⼀个变量,如果是齐次⽅程它的解⼀定为0 {j=*(*(matrixPrimary+i)+0);for(k=0;k<r;k++)*(*(matrixCalc+k)+j)=*(*(array+k)+n-1) / *(*(array+k)+j);}else if(n-1-matrixPrimary[i][0]==m){q=1;}else if(n-1-matrixPrimary[i][0]>m)o=matrixPrimary[i][0];//当前⾏的⾸元位置p=0;//次数for(k=n-2-q;k>=o;k--)//从后向前查找⾃由元位置{if(k==j)continue;freeElement[p++]=k;if(p==m)//说明已经找到 m个⾃由元return freeElement;}}}return freeElement;}//计算基础解系void getPrimarySolution(int r, int n, int homogeneous, double **array, int **matrixPrimary, double **matrixCalc ,int *freeElement, double **result) {int i,j,k,l,p;int m=n-1-r;//⾃由元double sum1,sum2;double *temp,**matrixTemp;//计算基础解系for(i=0;i<m;i++){matrixTemp=(double**)malloc(r*sizeof(double*));//复制数组for(j=0;j<r;j++){temp =(double*)malloc(n*sizeof(double));for(k=0;k<n;k++)*(temp+k)=*(*(matrixCalc+j)+k);matrixTemp[j]=temp;}//设置⾃由元为0或1for(j=0;j<r;j++){*(*(matrixTemp+j)+freeElement[i])=1;//⾃由元为1for(k=0;k<m;k++){if(k!=i)*(*(matrixTemp+j)+freeElement[k])=0;//⾃由元为0}}//printfDouble2Dimension(r,n,matrixTemp);//计算for(j=r-1;j>=0;j--){p=*(*(matrixPrimary+j));//当前⾏起始位置for(k=p;k<n;k++){if(*(*(matrixTemp+j)+k)==undefined)//如果等于标志位,它可能是未知变量{sum1=sum2=0;for(l=p;l<n;l++){if(l==n-1){sum1=*(*(array+j)+l) * *(*(matrixTemp+j)+l);}else if(l!=k){sum2+=*(*(array+j)+l) * *(*(matrixTemp+j)+l);}}for(l=0;l<r;l++)*(*(matrixTemp+l)+k)=((homogeneous?0:sum1)-sum2)/ *(*(array+j)+k);//如果齐次sum1=0;//break;}}}result[i]=matrixTemp[0];//printfDouble2Dimension(r,n,matrixTemp);}}void printfDouble2Dimension(int s, int n, double **array) {//printf("%d,%d",s,n);int i,j;for(i=0;i<s;i++){for(j=0;j<n;j++){printf("%6.2lf",*(*(array+i)+j));}printf("\n");}}void printfDouble1Dimension(int n, double *array){int i;for(i=0;i<n;i++){printf("%6.2lf",*(array+i));}printf("\n");}//打印⼆维数组void printfInt2Dimension(int s, int n, int **array){int i,j;for(i=0;i<s;i++){for(j=0;j<n;j++){printf("%4d",*(*(array+i)+j));}printf("\n");}}//打印⼀维数组void printfInt1Dimension(int n, int *array){int i;for(i=0;i<n;i++){printf("%4d",*(array+i));}printf("\n");}View Code。
11.7 线性方程组解的判定本节我们将通过使用矩阵这一有力工具,并结合消元法,介绍一般线性方程组的求解方法。
11.7.1 消元法现在来讨论一般线性方程组,所谓一般线性方程组是指如下形式的方程组。
⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++mn mn m m n n n n b x a x a x a b x a x a x a b x a x a x a 22112222212********* ( 11.38) 当右端常数项),2,1(m i b i =不全为0时,称方程组(11.38)为非齐次方程组;当),2,1(m i b i = 全为0时,即⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++000221122221211212111n mn m m nn n n x a x a x a x a x a x a x a x a x a (11.39) 称为齐次线性方程组。
显然由0,0,021===n x x x 组成的有序数组)0,,0,0( 是齐次线性方程组的一个解,称之为齐次线性方程组的零解,而当齐次线性方程组的未知量取值不全为零时,称之为非零解。
一般地,用矩阵来讨论线性方程组的解和求线性方程组的解是很方便的。
下面我们给出线性方程组的矩阵表示形式,非齐次线性方程组(11.38)的矩阵表示形式为B AX =,将系数矩阵A 和常数项矩阵B 放在一起构成的矩阵⎪⎪⎪⎪⎪⎭⎫⎝⎛=m mnm m nn b a a a b a a a b a a a AB21222221111211)( 称为方程组(11.38)的增广矩阵,因为线性方程组是由它的系数和常数项确定的,所以用增广矩阵)(AB 可以清楚而唯一地确定一个线性方程组。
齐次线性方程组的矩阵表示形式为0=AX 。
下面我们通过例题给出求解一般的线性方程组的方法。
例1解线性方程组⎪⎪⎩⎪⎪⎨⎧=-++-=++-=--+-=--+1222430235124321432143214321x x x x x x x x x x x x x x x x解:分析该方程组消元法解的情况这种解法就称为消元法,其求解过程可以用原方程组的增广矩阵的初等行变换表示为→⎪⎪⎪⎪⎪⎭⎫ ⎝⎛--------=11122241130235111211)(AB →⎪⎪⎪⎪⎪⎭⎫⎝⎛--------→⎪⎪⎪⎪⎪⎭⎫ ⎝⎛---------2220066600111401121113340577401114011211 →⎪⎪⎪⎪⎪⎭⎫⎝⎛→⎪⎪⎪⎪⎪⎭⎫ ⎝⎛-----0000011100200401101100000666001114011211⎪⎪⎪⎪⎪⎭⎫⎝⎛00000111005.000105.01001 最后一个矩阵对应的方程组为⎪⎩⎪⎨⎧=+==+15.05.043241x x x x x 。
1 / 3
第四节 线性方程组解的判定
从本节开始,讨论含有n 个未知量、m 个方程的线性方程组的解.
11112211211222221122n n n n m m mn n m
a x a x a x
b a x a x a x b a x a x a x b +++=⎧⎪+++=⎪⎨⎪⎪+++=
⎩ (13—2) 主要问题是要判断出方程组(13-2)何时有解?何时无解?有解时解有多少?如何求出方程组的解。
线性方程组有没有解,以及有怎样的解,完全决定于方程组的系数和常数项。
因此,将线性方程组写成矩阵形式或向量形式,以矩阵或向量作为讨论线性方程组的工具,将带来极大的方便。
方程组(13-2)中各未知量的系数组成的矩阵111212122212n n m m mn a a a a a a A a a a ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦
称为方程组(13-2)的系数矩阵.由各系数与常数项组成的矩阵,称为增广矩阵,记作A ,即
11121121
222212n n m m mn m a a a b a a a b A a a a b ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦
方程组(13-2)中的未知量组成一个n 行、1列的矩阵(或列向量),记作X ;常数项组成一个m 行、1列
的矩阵(或列向量),记作b ,即12n x x X x ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦,12m b b b b ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦
由矩阵运算,方程组(13—2)实际上是如下关系111212122212
n n m m mn a a a a a a a a a ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦12n x x x ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦=12m b b b ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦
即 AX=b
2 /
3 如果令112111m a a a a ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦,122222m a a a a ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦,…,12n n n mn a a a a ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦
则方程组(13-2)的向量形式为1122n n a x a x a x b +++=
定理1 (有解判定定理)方程级(13-2)有解的充分必要条件是:秩(A)=秩(A )
推论1 线性方程组(13—2)有惟一的充分必要条件是r (A )=r(A )=n 。
推论2 线性方程组(13-2)有无穷多解的充分必要条件是r(A )=r(A )<n.
例1 判断下列方程组是否有解?若有解,是有惟一解还是有无穷多解?
(1) 1231231
2331334591x x x x x x x x x +-=⎧⎪--=⎨⎪+-=⎩ (2)123123123
31334590x x x x x x x x x +-=⎧⎪--=⎨⎪+-=⎩ (3)123
123
12
331334580x x x x x x x x x +-=⎧⎪--=⎨⎪+-=⎩ 解 (1)113111311131313404610461159104600001A ---⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=--→-→-⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦
所以秩(A )=3,秩(A )=2;秩(A)≠秩(A ),故方程组无解。
(2)113111313134046115900000A --⎡⎤⎡⎤⎢⎥⎢⎥=--→→-⎢⎥⎢⎥-⎢⎥⎢⎥⎣⎦
⎣⎦
秩(A )=秩(A )=2〈n (=3),故方程组有无穷多解。
(3)113111313134046115800010A --⎡⎤⎡⎤
⎢⎥⎢⎥=--→→-⎢⎥⎢⎥-⎢⎥⎢⎥⎣⎦⎣⎦
秩(A )=秩(A)=3=n ,故方程组有惟一解。
3 / 3 方程组(13-2)12,,,m b b b 全为零时,称为齐次线性方程组。
即
111122121122221122000n n n n m m mn n a x a x a x a x a x a x a x a x a x +++=⎧⎪+++=⎪⎨⎪⎪+++=⎩ (13-3) 其矩阵形式为AX=0
对齐次线性方程组(13—3)而言,显然,其增广矩阵A 的秩与系数矩阵A 的秩相等,即秩(A )=秩(A),由定理1可知它总是有解的。
比如120n x x x ====就是方程组(13—3)的一个解,常称之为零解。
但所关心的是方程组(13—3)在何条件下有非零解.
将推论1及推论2应用到齐次线性方程组(13—3)上,得到以下结论。
推论3 齐次线性方程组(13—3)只有零解的充分必要条件是r(A)=n 。
推论4 齐次线性方程组(13—3)有非零解的充分必要条件是r(A)<n.
例2 试问线性方程组123123123
0200x x x x x x x x x λ++=⎧⎪++=⎨⎪++=⎩ 当λ取何值时有非零解.
解 方程组为齐次线性方程组,对其系数矩阵进行初等变换,化成阶梯形矩阵
12111
112101011001A λλ⎡⎤⎡⎤⎢⎥⎢⎥=→⎢⎥⎢⎥-⎢⎥⎢⎥⎣⎦⎣⎦
当λ-1=0,即λ=1时, r (A )=2<n(=3),由推论4,该方程组有非零解.
学生板演巩固练习:1。
2.3.4。
总结归纳:通过本节的学习,能对线性方程组解的的情况作出准确判定.
课外作业:习题1。
2。
3。