12、,j),a(i+1,j)>
13、1<=i<=n-1,1<=j<=n}基本操作:Swap(&a,&b);初始条件:记录a,b已存在。操作结果:交换记录a,b的值。CreateMatrix(n);操作结果:创建n维矩阵,返回该矩阵。Input(&M);初始条件:矩阵M已存在。操作结果:从终端读入矩阵M的各个元素值。Print(&M)初始条件:矩阵M已存在。操作结果:在终端显示矩阵M的各个元素值。ReadFromFile();操作结果:从文件读入矩阵的相关数据。Menu_Select();操作结果:返回菜单选项。MultMatrix(&
14、M1,&M2,&R);初始条件:矩阵M1,M2,R已存在。操作结果:矩阵M1,M2作乘法运算,结果放在R中。DinV(&M,&V);初始条件:矩阵M,V已存在。操作结果:求矩阵M的逆矩阵,结果放入矩阵V中。MatrixDeterm(&M,n);初始条件:矩阵M已存在。操作结果:求矩阵M的行列式的值。}ADTMatrixMulti2.矩阵求逆算法设计思想算法采用高斯-约旦法(全选主元)求逆,主要思想如下:首先,对于k从0到n-1作如下几步:①从第k行、第k列开始的右下角子阵中选取绝对值最大的元素,并记住此元素所在的行号与列号,再
15、通过行交换和列交换将它交换到主元素位置上。这一步称为全选主元。②主元求倒:M(k,k)=1/M(k,k)19①M(k,j)=M(k,j)*M(k,k);j=0,1,…,n-1;j!=k②M(i,j)=M(i,j)–M(i,k)*M(k,j);i,j=0,1,…,n-1;i,j!=k③M(i,k)=-M(i,k)*M(k,k),i=0,1…,n-1;i!=k最后,根据在全选主元过程中所记录的行、列交换的信息进行恢复,恢复原则如下:在全选主元过程中,先交换的行(列)后进行恢复;原来的行(列)交换用列(行)交换来恢复。3.矩阵行列式
16、求值运算算法设计思想利用行列式的性质:行列式等于它的任一行(列)各元素与其对应的代数余子式乘积,即D=∑a(i,k)*A(i,k);k=1,2,…,n;D=∑a(k,j)*A(k,j);k=1,2,…,n;再利用函数的递归调用法实现求其值。4.各函数间的调用关系Main()ReadFromFile()DinV()Swap()Print()Menu_Select()MatrixDeterm()CreateMatrix()MultMatrix()Input()5.流程图19否否是否是是否是否否是开始switch(Menu_Sele
17、ct())case1:case3:case2:n>0?是输入矩阵维数n输入矩阵A,B输出矩阵维数nsystem(“pause”);通过键盘输入需对哪个矩阵求逆,求出相应该的逆阵,并显示求得的逆阵system(“pause”);若矩阵不可逆则返回主菜单case4:R=A*B并显