《矩阵类实现实验任务.ppt》由会员分享,可在线阅读,更多相关《矩阵类实现实验任务.ppt(18页珍藏版)》请在三一办公上搜索。
1、1,创建三角矩阵类,C+语言程序设计 实验六,2,问题描述,行数与列数相等的方阵,开发类TriMat,它定义的是对角线以下的元素值全为0的上三角矩阵。,3,上三角矩阵的性质,1.假设矩阵中共有n2个元素,则其中为零的元素个数为(n*n-n)/22.矩阵加法就是相应元素值相加3.矩阵减法就是相应元素值相减4.矩阵乘法,假设乘积矩阵C是三角矩阵A和B相乘的结果,C(i,j)的值根据A的第i行和B的第j列计算出来的5.三角矩阵的行列式的值就是对角线上元素的乘积,4,三角矩阵的存储,如何选择三角矩阵的存储结构是至关重要的问题可以考虑为零的元素不占用存储空间用一维数组M只存放上三角元素,5,类的描述,c
2、lass TriMat private:/M中各行的起始下标 int rowTableROWLIMIT;/行列数 int n;/存放上三角中的元素 double MELEMENTLIMIT;,6,类的描述,public:/构造函数,无缺省值 TriMat(int matsize);/访问矩阵元素方法 void PutElement(double item,int i,int j);double GetElement(int i,int j)const;/矩阵的算术运算 TriMat AddMat(const TriMat,7,类的描述,/矩阵I/O操作 void ReadMat(void);v
3、oid WriteMat(void)const;/取矩阵维数 int GetDimension(void)const;,8,类使用的举例,#include“TriMat.h”TriMat A(10),B(10),C(10);A.ReadMat();B.ReadMat();C=A.AddMat(B);C.WriteMat();,9,三角矩阵的存储,标准数组定义需要n2个内存位置,但为了节省存储空间,我们将三角矩阵中的各项存储到一维数组M中,主对角线以下的各项不再被存储,10,三角矩阵的存储,11,三角矩阵的存储,存储算法需要一个存取函数,它必须可以确定存储了元素项Ai,j,存取函数利用一直到i行
4、的各行所存储的元素个数的信息,对每一行i都可以计算这一数据,将其存放到一个数组(rowTable)中,以供存取函数使用。,12,三角矩阵的存储,13,三角矩阵的存储,存取Ai,j的算法如下:1.若j=i,则取rowTablei的值,即数组M中存储的一直到第i行的所有元素个数,在第i行,前i项是0,不在M中存放,元素项Ai,j的位置是MrowTalbei+(j-i)。,14,类的声明,#include#include#include/上三角矩阵存储元素个数及行数的最大值const int ELEMENTLIMIT=325;const int ROWLIMIT=25;,15,类的声明,class
5、TriMat private:/私有数据成员 int rowTableROWLIMIT;/M中各行的起始下标int n;/行/列数double MELEMENTLIMIT;/存放上三角中的元素,16,类的声明,public:/constructor.no default parameters/构造函数,无缺省参数 TriMat(int matsize);/matrix element access methods/访问矩阵元素的方法 void PutElement(double item,int i,int j);double GetElement(int i,int j)const;/matrix arithmetic operations/矩阵的算数运算 TriMat AddMat(const TriMat,17,类的声明,/matrix I/O operations/矩阵的I/O操作 void ReadMat(void);void WriteMat(void)const;/get matrix dimension/取矩阵维数 int GetDimension(void)const;,18,实验任务,实现这个矩阵类并测试。,