范文一:,关于矩阵秩的讨论76221731,矩阵的秩,伴随矩阵的秩,求
关于矩阵秩的讨论 学院:数学计算机学院 专业:数学与应用数学(师范) 年级:09级(1)班 学生: 冯丽 学号: FNS32010036 指导老师:纳艳萍 LOGO 研究的目的及意义 目的及意义 运用矩阵的秩可以解决很多的问题.线性代数 和解析几何中的一些问题都可以用它来刻画.为了 对它有更加深刻的理解,本论文对矩阵的秩进行了 讨论. 目录1 矩阵的秩2 矩阵的秩的性质3 矩阵的秩在不同问题中的应用 矩阵的秩定义1(向量组的秩) 一个向量组的极大线性无关组所含向量的个数称为这 个向量组的秩.所谓矩阵的行秩就是矩阵的行向量组的秩, 矩阵的列秩就是矩阵的列向量组的秩.矩阵的行秩等于矩阵 的列秩并统称为矩阵的秩.定义2( k 阶子式) 矩阵的秩等于它非零子式的最高阶数. 矩阵秩的性质1 矩阵的秩的基本性质 1 设 A 是 m × n 的矩阵,则 0 ? r A ? min m n. 2 r A r A . T 3 设 A 为 n n ? 2 阶方阵,则 n r A n r A 1 r A n 1 0 r A n 1. 矩阵秩的性质2 矩阵与矩阵的秩的运算性质 4 设矩阵 A 和 B 分别是 s × n 和 n × m 矩阵, 则 r AB ? min r A r B . ,特别的, 0 AB 则 r A r B ? n. 6 设矩阵 A 和 B 分别是 s × n s × m 矩阵,则 max r A r B ? r A r B 7 0 0 同解,则 r A r B . 若 Ax 与 Bx 8 设 A 是一个 s × n 矩阵,如果 P 是s × s可逆矩阵, 是 n × n Q r A PA 可逆矩阵,那么 r r AQ . 矩阵秩的应用矩阵的秩在线性代数中的应用 (1)线性方程组解的情况 (2)向量组的线性相关性 (3)方阵是否可逆矩阵的秩在解析几何中的应用 (1)空间平面与平面的位置关系 (2)空间直线与直线的位置关系 (3)空间平面与直线的位置关系 矩阵的秩在线性代数中的应用1 矩阵的秩在解线性方程组问题时的应用 齐次方程组解的判定 定理1 设有线性方程组 Ax B 4.1 m × n ,X x1 x2 ... xn T B其中 A a b1 b2 ... bn
T 则有: ij1 线性方程组4.1有解 r A B 即系数矩阵的秩 r A等于增广矩阵的秩 2 线性方程组4.1有唯一解 r A r A B n n 为未知数的个数 3 线性方程组4.1有无穷多组解 r A r A B n. 矩阵的秩在线性代数中的应用2 矩阵的秩在判定向量组线性相关性的应用 定义1 给定一向量组 A :ααα...α 1 2 3 s s ? 1 如果存在不全 为零的数 k1 k2 k3 ... ks 使 k1αααα0 2 k3 3 ... ks s ,则称组向 1 k2 量组 A是线性相关的. 否则称这组向量是线性无关的. 定理2 m维向量组 a1 a2 a3 ...
as n ? 1 线性相关的充要条件 是它所构成的的系数矩阵 A 的秩是小于向量个数 s ,即 r A s 线性无关的充要条件是 r A s. 矩阵的秩在线性代数中的应用3 矩阵的秩在讨论方阵问题中的应用 定义2 设 A 是 n 阶矩阵 如果存在 n 阶矩阵 B , 使得 AB BA E (单位矩阵)成立,则称 A 是可逆矩阵,B 是 A 的逆矩阵. 定理 3 n 阶矩阵 A可逆的充分必要条件是 A ? 0 或 r A n 矩阵的秩在解析几何中的应用4 空间平面与平面之间的位置关系 定理4 设 π 1 π 2平面的方程分别为 a1 x b1 y d1 a2 x b2 y d 2 c1 z c2 z 设 a1 x b1 y c1 z 的系数矩阵为 d1 A ,增广矩阵为 B , a2 x b2 y c2 z d2 . 则 1 当 r r 2 时,平面 π 1与 π 2相交于一条直线 A B 2 当 r B 1 时,平面 π 1与 π 2 重合 3 当 r A 1 , B 2 ,平面 π 1 与π 2 平行. r 矩阵的秩在解析几何中的应用5 空间两直线的位置关系 . 定理5 设两个空间直线: A1 x B1 y C1 z D1 0 A3 x
B3 y C3 z D3 0 L1 : 与 L2 : A2 x B2 y C2 z D2 0. A4 x B4 y C4 z D4
0. A1 B1 C1 设矩阵A A2 B2 C2 的秩为 r A A3 B3 C3 A 4 B4 C4 矩阵的秩在解析几何中的应用 A1 B1 C1 D1 A2 B2 C2 D2 矩阵 B 的秩为 r B , A3 B3 C3
D3 A 4 B4 C4 D4则 1 当 r B 4 r A 3 时,两直线异面 2 当 rB r 2 时,两直线重合 A 3 当 rB r 3 时,两直线相交 A 4 当 r B 3 r A 2 时,两直线平行. 矩阵的秩在解析几何中的应用6 空间平面与直线之间的位置关系 A1 x B1 y C1 z D1 0 定理6 设空间直线 L : 和平面的方程 A2 x B2 y C2 z D2 0. 分别是 π : A3 x B3 y C 3 z D3 0. A1 B1 C1 A1 B1 C1 D1 设 A A2 B2 C2 B A2 B2 C2 D2 . A A D3 3 B3 C3 3 B3 C3 矩阵的秩在解析几何中的应用则有如下结论 A ,直线 L 和平面 π 相交. 特别地, (1)当 r r 3 B 当 A1 A3 B1B3 C1C3 0 或 A2 A3 B2 B3 C 2 C3 0 时, 直线 L 与 π 平面垂直 (2)当 r B 3 r A 2 ,直线 L 和 π 平面平行 (3)当 r r 2 ,直线 L 在平面 π 上 B A 小结 由于矩阵的秩知识面涉及广泛,欲通过一篇论文对其全面研究是困难的. 本文只对矩阵的秩有关问题做部分研究,但相信通过本文加深对矩阵的秩及相关问题的理解,以及更好地利用矩阵的秩它来解决一些问题有一定的帮助.
范文二:矩阵求秩
1.
2. 这是一个算法的实现过程。首先需要了解什么是矩阵的秩,它的计算方法是啥。弄清楚算法之后,用C 语言实现即可。 在线性代数中,一个矩阵A 的列秩是A 的线性独立的纵列的极大数目。类似地,行
秩是A 的线性无关的横行的极大数目。通俗一点说,如果把矩阵看成一个个行向量或者列向量,秩就是这些行向量或者列向量的秩,也就是极大无关组中所含向量的个数。
3. 算法主要就是消元法,下面是例程:
/*开始输入的m 为矩阵行数,输入的n 为矩阵列数*/
#include #include #include #define MAX 10 //最大行(列) 数 typedef struct { int m,n; int a[MAX][MAX]; } matrix; void input_matrix(matrix *dat); void output_matrix(matrix dat); void exchang_row(int *a,int *b,int n); //交换两行 void mul_row(int *a,int k,int n); //将某一行乘以k void add_row(int *a1,int *a2,int k,int n); //将a2行的k 倍加到a1行上 int rank_matrix(matrix dat,matrix *res); void main() { matrix a,b; int r; input_matrix(&a); r=rank_matrix(a,&b); system("cls"); printf("The original matrix:\n"); output_matrix(a); printf("After transforming:\n"); output_matrix(b); printf("\nr(A)=%d\n",r); getch(); } void input_matrix(matrix *dat) //输入矩阵 { int i,j; do { printf("m(1-%d)=",MAX); scanf("%d",&(dat->m)); } while((dat->m)<1||(dat->m)>MAX); do { printf("n(1-%d)=",MAX); scanf("%d",&(dat->n)); } while((dat->n)<1||(dat->n)>MAX); for(i=0;i<(dat->m);i++) for(j=0;j<(dat->n);j++) { printf("a(%d,%d)=",i+1,j+1); scanf("%d",&(dat->a[i][j])); } } void output_matrix(matrix dat) //显示矩阵 { int m,n,i,j; m=dat.m;n=dat.n; for(i=0;i<> { for(j=0;j<> printf("%-4d",dat.a[i][j]); printf("\n"); } } void exchang_row(int *a,int *b,int n) { int i,t; for(i=0;i<> { t=a[i]; a[i]=b[i]; b[i]=t; } } void mul_row(int *a,int k,int n) { int i; for(i=0;i<> a[i]*=k; } void add_row(int *a1,int *a2,int k,int n) { int i; for(i=0;i<> a1[i]+=a2[i]*k; } int rank_matrix(matrix dat,matrix *res) //求秩(返回值为秩,第2个参数为变换得到的阶梯阵) { int m,n,i,t; int ri,ci; //行标记与列标记 int f_z; //某列是否全为0的标志,为1表示全为0 m=dat.m;n=dat.n; for(ri=ci=0;ci<> { f_z=1; for(i=ri;i<> if(dat.a[i][ci]!=0) { if(i!=ri) if(f_z) exchang_row(&(dat.a[ri][ci]),&(dat.a[i][ci]),n-ci); else { t=dat.a[i][ci]; mul_row(&(dat.a[i][ci]),dat.a[ri][ci],n-ci); add_row(&(dat.a[i][ci]),&(dat.a[ri][ci]),-t,n-ci); } f_z=0; } if(!f_z) ri++; } *res=dat; return ri; } #include #include #include #define MAX 10 //最大行(列) 数 typedef struct { int m,n; int a[MAX][MAX]; } matrix; void input_matrix(matrix *dat); void output_matrix(matrix dat); void exchang_row(int *a,int *b,int n); //交换两行 void mul_row(int *a,int k,int n); //将某一行乘以k void add_row(int *a1,int *a2,int k,int n); //将a2行的k 倍加到a1行上 int rank_matrix(matrix dat,matrix *res); void main() { matrix a,b; int r; input_matrix(&a); r=rank_matrix(a,&b); system("cls"); printf("The original matrix:\n"); output_matrix(a); printf("After transforming:\n"); output_matrix(b); printf("\nr(A)=%d\n",r); getch(); } void input_matrix(matrix *dat) //输入矩阵 { int i,j; do { printf("m(1-%d)=",MAX); scanf("%d",&(dat->m)); } while((dat->m)<1||(dat->m)>MAX); do { printf("n(1-%d)=",MAX); scanf("%d",&(dat->n)); } while((dat->n)<1||(dat->n)>MAX); for(i=0;i<(dat->m);i++) for(j=0;j<(dat->n);j++) { printf("a(%d,%d)=",i+1,j+1); scanf("%d",&(dat->a[i][j])); } } void output_matrix(matrix dat) //显示矩阵 { int m,n,i,j; m=dat.m;n=dat.n; for(i=0;i<> { for(j=0;j<> printf("%-4d",dat.a[i][j]); printf("\n"); } } void exchang_row(int *a,int *b,int n) { int i,t; for(i=0;i<> { t=a[i]; a[i]=b[i]; b[i]=t; } } void mul_row(int *a,int k,int n) { int i; for(i=0;i<> a[i]*=k; } void add_row(int *a1,int *a2,int k,int n) { int i; for(i=0;i<> a1[i]+=a2[i]*k; } int rank_matrix(matrix dat,matrix *res) //求秩(返回值为秩,第2个参数为变换得到的阶梯阵) { int m,n,i,t; int ri,ci; //行标记与列标记 int f_z; //某列是否全为0的标志,为1表示全为0 m=dat.m;n=dat.n; for(ri=ci=0;ci<> { f_z=1; for(i=ri;i<> if(dat.a[i][ci]!=0) { if(i!=ri) if(f_z) exchang_row(&(dat.a[ri][ci]),&(dat.a[i][ci]),n-ci); else { t=dat.a[i][ci]; mul_row(&(dat.a[i][ci]),dat.a[ri][ci],n-ci); add_row(&(dat.a[i][ci]),&(dat.a[ri][ci]),-t,n-ci); } f_z=0; } if(!f_z) ri++; } *res=dat; return ri; } 這裡補充說明一下,匿名用戶「把矩阵看成线性映射那么秩就是象空间的的维数」的答案。 線性代數中最重要的三個概念是線性空間、線性映射(函數)和對偶。 在很多課本中處於很重要位置的矩陣反而不是重要概念,是個較次要的概念。 所有線性代數中的概念幾乎都可以歸於以上三者。 例如矩陣可以視為線性映射自然引出的概念。 矩陣的秩可以看作線性映射象空間的維數。 矩陣的和可以看作線性映射的和。 矩陣的積可以看作線性映射的複合。 矩陣的轉置可以伴隨算子所對應的矩陣。 伴隨算子是指f L(V,W),W*,V*分別是V和W的對偶空間 若有f*滿足W* V*,f*(g)=g f=gf,其中g W* f*稱為f的伴隨算子。 二次型似乎不線性,實際上是雙線性函數。 行列式是n線性反對稱函數。 在有限維情況下,線性映射和矩陣同構。 但無限維情況下,沒有這種結論,這是為何矩陣無法取代映射, 但映射可以取代矩陣的原因。 那為何工科線性代數,不以線性空間、線性映射(函數)和對偶為核心, 反而要以矩陣為核心呢?原因有二,一工程問題大都屬於有限維問題。 二以線性空間、線性映射(函數)和對偶為核心的線性代數雖然更本質但難度太大,大部分工科生無法學懂。 實際上,國內確實有以線性空間、線性映射(函數)和對偶為核心而不以矩陣為核心的線性代數課本,如龔昇的線性代數五講(網上有盜版,建議買正版),但對大部分工科生而言一輩子也沒必要看懂這本書。 function r=R(x) r=0; while 1 if all(x(:,1)==0) x(:,1)=[]; else nx=size(x); for j=1:nx if x(j,1)~=0 t=x(1,:); x(1,:)=x(j,:); x(j,:)=t; break; end end for j=2:nx x(j,:)=x(j,:)-x(1,:)*x(j,1)/x(1,1); end [m,n]=size(x); x=x(2:m,2:n); r=r+1; end if min(size(x))==1&&sum(x)~=0; r=r+1; break; elseif isempty(x) break; end end 一、实验名称:项目二 按列选主元消元法 二、实验题目:用按列选主元消元法求矩阵 A 的秩 11230216413267111612A -????--??=??--??---?? 三、实验程序: #include #include void main() { int i,j,k,row,b,d=2,flag,rank=0; double a[4][5]={{1,1,-2,3,0},{2,1,-6,4,-1},{3,2,-6,7,-1},{1,-1,-6,-1,2}}; double l[5]={0}; double max,temp; printf( for(i=0;i<> { for(j=0;j<> { printf( } printf( } for(k=0;k<> { printf( max=a[k][k]; //选主元 for(i=k+1;i<> { if(fabs(a[i][k])>fabs(max)) { max=a[i][k]; row=i; } } if(row!=k) { //交换第 i 行和第 k 行元素 for(j=0;j<> { temp=a[row][j]; a[row][j]=a[k][j]; a[k][j]=temp; } for(i=0;i<> { for(j=0;j<> { printf( } printf( } } //消元 for(b=k;b<> { for(i=0;i<> { l[i]=a[b+1][k]*a[k][i]/a[k][k]; } for(j=0;j<> a[b+1][j]=a[b+1][j]-l[j]; for(i=0;i<> { for(j=0;j<> printf( } printf( } } //展示 printf( for(i=0;i<> { for(j=0;j<> { printf( } printf( } for(i=0;i<4;i++)>4;i++)> flag=0; for(j=0;j<5;j++)>5;j++)> if(a[i][j]!=0) flag=1; } if(flag==1) rank=rank+1; } printf( 四、实验结果: 所以,最终矩阵为:????? ???????-------=333333. 100008. 002. 100333333. 2333333. 34666667. 1017623A 矩阵 A 的秩为 4。 转载请注明出处范文大全网 » ,关于矩阵秩的讨论76221范文三:如何理解矩阵的「秩」?
范文四:一种用matlab求矩阵的秩的方法
范文五:用按列选主元消元法求矩阵A的秩