特殊矩阵指:矩阵中有许多值相同的元素(包括0),且这些元素的分布有一定规律。当矩阵的维数比较大时,矩阵占据的内存单元相当多,这时,利用特殊矩阵数据元素的分布规律压缩矩阵的存储空间,对许多应用问题来说有重要是意义。

特殊矩阵压缩存储的方法有两种:(1)只存储相同矩阵元素的一个副本;(2)采用不等长的二维数组。

方法(1),比如对于n阶对称矩阵,行数和列数都为n,元素以主对角线为中线对称,aij=aji。那么我们可以只用一个一位数组来存储所有对称的两个值相同矩阵元素中的一个,这样n^2个元素的存储变成了n(n+1)/2个元素的存储。一维数组中元素下标k可由二维中的i和j映射为:k=i(i-1)/2+j-1(i>=j)和k=j(j-1)/2+i-1(i<j)(1<=i,j<=n)。

方法(2),就是用二维数组但每一行元素的长度不相等,对于n阶对称矩阵就是对称重复的元素只存储一次,二维数组存完后看起来就像是下三角(上三角)形状。

用代码实现n阶对称矩阵的存储,采用方法一,先建立矩阵类:

package ArrayVectorSetMatrix;
/**
* @author sun
* 创建时间:2017年4月15日上午11:16:34
*/
//设计出n阶对称矩阵,采用只存储相同矩阵元素的一个副本的压缩存储方法。
public class SynmeMatrix {double[] a;//矩阵元素int n;//阶数int m;//一维数组个数SynmeMatrix(int n){m = n*(n+1)/2;a = new double[m];this.n = n;}public void evaluateMatrix(double[][] b){//矩阵赋值int k = 0;for(int i=0;i<n;i++)for(int j=0;j<n;j++)if(i>=j)a[k++] = b[i][j];//只保存下三角,按行}public void evaluateMatrix(double[] b){//矩阵赋值for(int k=0;k<m;k++){a[k] = b[k];}}public SynmeMatrix add(SynmeMatrix myB){SynmeMatrix t = new SynmeMatrix(n);int k;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i>=j)k = i*(i-1)/2+j-1;elsek = j*(j-1)/2+i-1;t.a[k] = a[k]+myB.a[k];}}return t;}public void print(){int k;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i>=j)k = i*(i-1)/2+j-1;elsek = j*(j-1)/2+i-1;System.out.print(" "+a[k]);}System.out.println();}}
}

接着进行测试:

package ArrayVectorSetMatrix;
/**
* @author sun
* 创建时间:2017年4月15日下午3:12:35
*/
public class TestSynmeMatrix {public static void main(String[] args) {SynmeMatrix matrixA = new SynmeMatrix(3);SynmeMatrix matrixB = new SynmeMatrix(3);SynmeMatrix matrixC;double[][] a = {{1,0,0},{2,3,0},{4,5,6}};double[] b = {1,2,3,4,5,6};matrixA.evaluateMatrix(a);matrixB.evaluateMatrix(b);System.out.println("matrixA矩阵为:");matrixA.print();System.out.println("matrixB矩阵为:");matrixB.print();matrixC = matrixA.add(matrixB);//矩阵加System.out.println("matrixC矩阵为:");matrixC.print();}
}
/*
matrixA矩阵为:1.0 2.0 4.02.0 3.0 5.04.0 5.0 6.0
matrixB矩阵为:1.0 2.0 4.02.0 3.0 5.04.0 5.0 6.0
matrixC矩阵为:2.0 4.0 8.04.0 6.0 10.08.0 10.0 12.0
*/

特殊矩阵——n阶对称矩阵相关推荐

  1. 【线性代数】深入理解矩阵乘法、对称矩阵、正定矩阵

    问题提出   今天做到一道线性代数的证明题,如下: 设A,BA, BA,B都是nnn阶正定矩阵,且AB=BAAB=BAAB=BA,证明:ABABAB也是正定矩阵. 想了好半天没想出来,结果一翻答案,竟 ...

  2. SWPU-DS)若有 n 阶对称矩阵 A,以行序为主序方式,将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在 B 中确定 a[i, j](i<j)

    SWPU-DS)若有 n 阶对称矩阵 A,以行序为主序方式,将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1-(n(n+1))/2]中,则在 B 中确定 a[i, j](i< ...

  3. [数据结构-严蔚敏版]P95矩阵压缩-特殊矩阵的存储(对称矩阵,三角矩阵)

    对称矩阵的存储: 代码如下: #include <iostream> using namespace std;int main() {int n;cin >> n;int *a ...

  4. python创建矩阵_Python创建对称矩阵的方法示例【基于numpy模块】

    本文实例讲述了Python创建对称矩阵的方法.分享给大家供大家参考,具体如下: 对称(实对称)矩阵也即: step 1:创建一个方阵 >>> import numpy as np & ...

  5. 矩阵(n阶方阵)的初等变换 初等矩阵 几何意义

    任何一个可逆矩阵A都可以经初等行变换,变换到单位矩阵E. A也可经初等列变换,变换到E. A每经过一次初等行变换,就相当于在A的左边乘一个初等矩阵. A每经过一次初等列变换,就相当于右乘一个初等矩阵. ...

  6. matlab-线性代数 创建 N阶数量矩阵 N阶单位矩阵 对角矩阵 范德蒙矩阵 等差数列...

    2019独角兽企业重金招聘Python工程师标准>>>      matlab : R2018a 64bit       OS : Windows 10 x64 typesettin ...

  7. [HNUOJ10029] 幻方矩阵(奇数阶幻方的两种解法)

    幻方矩阵 Time Limit: 4000ms, Special Time Limit:8000ms, Memory Limit:2048KB Total submit users: 857, Acc ...

  8. 对称矩阵、Hermite矩阵、正交矩阵、酉矩阵、奇异矩阵、正规矩阵、幂等矩阵、合同矩阵、正定矩阵...

    http://blog.csdn.net/jbb0523/article/details/50596604 看文献的时候,经常见到各种各样矩阵,本篇总结了常见的对称矩阵.Hermite矩阵.正交矩阵. ...

  9. 特殊矩阵(对称矩阵)的压缩存储和解压缩

    特殊矩阵(对称矩阵)的压缩存储和解压缩 参考书目:严蔚敏<数据结构>P95-96 一.背景 ​ 矩阵在工程计算中经常使用,对于一些特殊矩阵,比如对称矩阵,稀疏矩阵--有时为了节省空间,可以 ...

最新文章

  1. FTP与TFTP的区别
  2. 将中文日期转换成自己想要的格式如:2018年09月29日转换成2018-09-29
  3. click事件延迟300ms,处理方法-----FastClick
  4. 【网址收藏】Spark History Server配置及使用
  5. 如何理解苹果iOS版PhoneGap原理分析
  6. 跨库多维分析后台的实现
  7. vue学习问题总结(一)
  8. python 示例_Python TextCalendar类别| pryear()方法与示例
  9. ubuntu16.04安装pycharm
  10. 知乎披露会员业务未来布局,融合社区内容深耕垂直领域
  11. 系统集成项目管理工程师必考公式
  12. luogu P1375 小猫
  13. geth 搭建 私有链节点
  14. 红米4鸿蒙系统刷机包,小米 红米4 高配版获取Root权限服务含精简系统方案
  15. 【2021年第三届全国高校计算机能力挑战赛】大数据应用赛
  16. -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME e
  17. 给媳妇做一个记录心情的小程序
  18. C语言:从键盘上输入10个整数,求他们的平均值以及正数的个数,并加以输出
  19. 腾讯地图—WebService API定位的使用
  20. 数据库基础知识(二)数据库分表技术

热门文章

  1. python计算化学浓度_计算化学操作流程-孙磊.pdf
  2. P-Link ARM Cortex-M脱机编程器开源前的一些准备工作----第四章 几个重要的结构体介绍
  3. mysql数据库备份方式
  4. 用1:3电流镜恒定GM的输入输出轨到轨运放设计(自用一)
  5. 快手,字节跳动,百度,美团Offer之旅(Android面经分享)
  6. Jabra E85t蓝牙耳机同时连接2部手机
  7. CPU核数和线程数有什么作用?CPU核数和线程的关系与区别,服务器CPU与电脑主机CPU的区别
  8. SQL not exists双重否定
  9. 平衡二叉树(Java实现)
  10. nginx正向代理https