首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

去掉对称矩阵的上三角部分或下三角部分

基础概念

对称矩阵是指一个方阵,其转置矩阵等于它本身。即对于一个 ( n \times n ) 的对称矩阵 ( A ),有 ( A = A^T )。对称矩阵的上三角部分和下三角部分是对称的,通常可以通过只存储上三角或下三角部分来节省存储空间。

类型

  1. 上三角矩阵:矩阵的对角线及其以上的元素为非零元素,对角线以下的元素为零。
  2. 下三角矩阵:矩阵的对角线及其以下的元素为非零元素,对角线以上的元素为零。

应用场景

  • 存储优化:对称矩阵只存储上三角或下三角部分,可以减少一半的存储空间。
  • 数值计算:在对称矩阵的运算中,如矩阵乘法、求逆等,可以利用对称性简化计算。
  • 工程应用:在结构分析、控制系统等领域,对称矩阵常用于描述系统的特性。

问题与解决方法

问题:如何去掉对称矩阵的上三角部分或下三角部分?

解决方法

假设我们有一个 ( n \times n ) 的对称矩阵 ( A ),我们可以将其转换为只包含上三角或下三角部分的矩阵。

示例代码(Python)
代码语言:txt
复制
import numpy as np

def remove_upper_triangular(matrix):
    n = matrix.shape[0]
    lower_triangular_matrix = np.zeros((n, n))
    for i in range(n):
        for j in range(i + 1):
            lower_triangular_matrix[i, j] = matrix[i, j]
    return lower_triangular_matrix

def remove_lower_triangular(matrix):
    n = matrix.shape[0]
    upper_triangular_matrix = np.zeros((n, n))
    for i in range(n):
        for j in range(i, n):
            upper_triangular_matrix[i, j] = matrix[i, j]
    return upper_triangular_matrix

# 示例对称矩阵
A = np.array([
    [1, 2, 3],
    [2, 4, 5],
    [3, 5, 6]
])

# 去掉上三角部分
lower_triangular_A = remove_upper_triangular(A)
print("去掉上三角部分后的矩阵:")
print(lower_triangular_A)

# 去掉下三角部分
upper_triangular_A = remove_lower_triangular(A)
print("去掉下三角部分后的矩阵:")
print(upper_triangular_A)
参考链接

优势

  • 存储效率:通过只存储上三角或下三角部分,可以显著减少存储空间的使用。
  • 计算效率:在对称矩阵的运算中,利用对称性可以减少不必要的计算,提高计算效率。

总结

对称矩阵的上三角部分和下三角部分可以通过简单的矩阵操作去除。这种操作在存储和计算效率方面具有显著优势,特别是在处理大规模对称矩阵时。通过上述示例代码,可以实现这一操作,并且可以通过参考NumPy官方文档进一步了解相关细节。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++经典算法题-上三角、下三角、对称矩阵

48.Algorithm Gossip: 上三角、下三角、对称矩阵 说明 上三角矩阵是矩阵在对角线以下的元素均为0,即Aij = 0,i > j,例如: 1 2 3 4 5 0 6 7 8 9 0 0...10 11 12 0 0 0 13 14 0 0 0 0 15 下三角矩阵是矩阵在对角线以上的元素均为0,即Aij = 0,i < j,例如: 1 0 0 0 0 2 6 0 0 0 3 7 10 0...15 上三角或下三角矩阵也有大部份的元素不储存值(为0),我们可以将它们使用一维阵列来储存以节省储存空间,而对称矩阵因为对称于对角线,所以可以视为上三角或下三角矩阵来储存。...解法 假设矩阵为nxn,为了计算方便,我们让阵列索引由1开始,上三角矩阵化为一维阵列,若以列为主,其公式为:loc = n*(i-1) - i*(i-1)/2 + j 化为以行为主,其公式为:loc...公式的导证其实是由等差级数公式得到,您可以自行绘图并看看就可以导证出来,对于C/C++ 或Java等索引由0开始的语言来说,只要将i与j各加1,求得loc之后减1即可套用以上的公式。

2.5K10

一维数组&二维数组&对称矩阵&三角矩阵&三对角矩阵地址的计算

一维数组的地址计算 设每个元素的大小是size,首元素的地址是a[1],则 a[i] = a[1] + (i-1)*size 若首元素的地址是a[0] 则a[i] = a[0] + i*size...二维数组的地址计算 (m*n的矩阵) 行优先 设每个元素的大小是size,首元素的地址是a[1][1],则a[i][j]?...二维数组通常用来存储矩阵,特殊矩阵分为两类: (1)元素分布没有规律的矩阵,按照规律对用的公式实现压缩。 (2)无规律,但非零元素很少的稀疏矩阵,只存储非零元素实现压缩。...一、三角矩阵 包括上三角矩阵,下三角矩阵和对称矩阵 (1)若i矩阵为下三角矩阵。 (2)若i>j时,ai,j=0,则称此矩阵为上三角矩阵。...(3)若矩阵中的所有元素满足ai,j=aj,i,则称此矩阵为对称矩阵。 下三角 上三角 二、三对角矩阵 带状矩阵的压缩方法:将非零元素按照行优先存入一维数组。

1.7K30
  • 【数据结构】数组和字符串(三):特殊矩阵的压缩存储:三角矩阵、对称矩阵——一维数组

    由于只有主对角线上有非零元素,只需存储主对角线上的元素即可。 三角矩阵:指上三角或下三角的元素都为零的矩阵。同样地,只需存储其中一部分非零元素,可以节省存储空间。...对角矩阵的压缩存储 【数据结构】数组和字符串(二):特殊矩阵的压缩存储:对角矩阵——一维数组 b. 三角矩阵的压缩存储   三角矩阵分为上三角矩阵和下三角矩阵。...因为对称矩阵中M(i, j)与M(j, i)的信息相同,所以只需存储其上三角部分或下三角部分的元素信息。...这里参照下三角矩阵的压缩存储方法,即用大小为n(n+1)/2的一维数组来存储,关于对称矩阵中的下三角部分的元素M(i, j) (i ≥ j) ,与下三角矩阵压缩存储的映射公式一样,映射到d[k](其中k...= i(i-1)/2+( j-1) );关于对称矩阵之上三角部分的元素M(i, j)(i的元素),因其元素值与下三角部分的M(j, i)相同,故应映射到下标为q的元素d[q]中(其中

    18310

    数据结构基础(一)数组,矩阵

    二位数组则是一个矩阵结构,本质上是以数组作为数组元素的数组,即“数组的数组”。以二维数组A[m,n]为例,其结构如图2-1所示: ?...3.矩阵 在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合 [1] ,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。...(1) 对称矩阵 对称矩阵关于主对角线对称,因此只需存储下三角部分(包括主对角线)即可。这样,原来需要存储n×n个存储单元,现在只需要n×(n+1)/2个存储单元,节约了大约一半的存储单元。...当n较大时,这是比较可观的一部分存储单元。 如何只存储下三角部分的元素呢?由于下三角中共有n×(n+1)/2个元素,可将这些元素按行存储到一个数组SA[n(n+1)/2]中。...这样,下三角中的元素aij(i≥j)存储到SA[k]中,在数组SA中的下标k和i、j的关系为:k=i×(i-1)/2+j-1,寻址的计算方法如图所示。 ?

    1.4K41

    【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表

    4.2.1 矩阵的数组表示 【数据结构】数组和字符串(一):矩阵的数组表示 4.2.2 特殊矩阵的压缩存储   矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。...但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造成很大的空间浪费。...由于只有主对角线上有非零元素,只需存储主对角线上的元素即可。 三角矩阵:指上三角或下三角的元素都为零的矩阵。同样地,只需存储其中一部分非零元素,可以节省存储空间。...对称矩阵:指矩阵中的元素关于主对角线对称的矩阵。由于对称矩阵的非零元素有一定的规律,可以只存储其中一部分元素,从而减少存储空间。 稀疏矩阵:指大部分元素为零的矩阵。...三角、对称矩阵的压缩存储 【数据结构】数组和字符串(三):特殊矩阵的压缩存储:三角矩阵、对称矩阵——一维数组 d.

    12410

    数据结构——全篇1.1万字保姆级吃透串与数组(超详细)

    5.5对称矩阵压缩存储                 5.5.1定义及其压缩方式 什么是对称矩阵:a(i,j) = a(j,i) 对称矩阵的压缩方式:共4种 下三角部分以行序为主序存储的压缩【学习,...掌握】 下三角部分以列序为主序存储的压缩  上三角部分以行序为主序存储的压缩  上三角部分以列序为主序存储的压缩  n×n对称矩阵压缩 n (n+1) / 2 个元素,求 1+2+3+......10 = j 下标0,0时,a(4,2) 下标1,1时,a(5,3)         5.6三角矩阵                 5.6.1概述&存储方式 三角矩阵分为:上三角矩阵、下三角矩阵...只在上三角的位置进行数据存储  下三角矩阵:主对角线(不含主对角线)上方的元素值均为0。...5.6.2上三角矩阵 上三角矩阵实例 上三角矩阵对应一维数组存放下标,计算公式                   5.6.3下三角矩阵 下三角矩阵实例  下三角矩阵对应一维数组存放下标,计算公式

    1.9K60

    数值分析读书笔记(2)求解线性代数方程组的直接方法

    ),有效的生成一个P是我们主要研究的问题 2.初等下三角矩阵--Guass变换矩阵 回顾一下线性代数中的三个初等线性变换 数乘 倍加 互换 我们引入一个一般意义上的初等变换矩阵,它把许多常用的线性变换统一在一个框架里面...注意左乘的顺序 3.Gauss消元法 先介绍一下顺序Gauss消元法,大概分两步 消元过程 回代过程 在消元过程中,我们不断去左乘Gauss变换矩阵,不断将原矩阵的下三角部分一列列变成0,从而最终变换成一个上三角矩阵...这里再介绍一下Crout分解,即A=LU中的L是一个下三角矩阵,U是单位上三角矩阵 注意到某些特殊矩阵的三角分解也是比较特殊的,这里引入一类带状对角形矩阵 ?...上半带宽为s,下半带宽为r,存在LU分解,其中L是下半带宽为r的单位下三角矩阵,U是上半带宽为s的上三角矩阵 对于r=s=1的这一类更加特殊的矩阵,称为三对角矩阵,对于此类矩阵的三角分解,介绍一种“追赶法...注意到正定对称矩阵的三角分解也是特殊的,这里引入Cholesky分解 首先利用Doolittle分解,得 ? ,对U进一步提取对角矩阵 ? ,从而有 ? 故, ? ,由于A对称正定, ?

    1.3K30

    西电数据结构上机题——对称矩阵相乘

    这道题拿到是懵逼的 本题最为关键的是对称矩阵相乘的算法 幸好有老哥之前探索出了 对称矩阵M的第i行和第j列的元素的数据存储在一维数组a中的位置k的计算公式: 1、当i大于或等于j时,k = (i...* (i + 1)) / 2 + j (下三角) 2、当i小于j时,k = (j * (j + 1)) / 2 + i (上三角) (注意这里是整除,真的是非常Amazing,有时间可以去研究一下是怎么推出来的...) 链接: https://blog.csdn.net/xiezhi123456/article/details/86607261 在他的基础上顺利解决 //对称矩阵相乘的程序代码 #include...A的下三角:\n"); input(pa->A);//以行为主序输入矩阵A的下三角 printf("以行为主序输入矩阵B的下三角:\n"); input(pa->B);//以行为主序输入矩阵...B的下三角 mult(pa); output(pa->C);//输出矩阵C } //对称矩阵的输入 void input(datatype x[]) { for(int i=0;i<size;i

    32540

    【数据结构】串与数组

    & 1 & 1 \\ 0 & 1 & 0 & 0 \\ 0 & 1 & 0 & 0 \end{matrix} \right] \tag{对称矩阵} 对称矩阵的压缩方式:共4种 下三角部分以行序为主序存储的压缩...【学习,掌握】 下三角部分以列序为主序存储的压缩 上三角部分以行序为主序存储的压缩 上三角部分以列序为主序存储的压缩 n×n对称矩阵压缩 n (n+1) / 2 个元素,...j 下标0,0时,a(4,2) 下标1,1时,a(5,3) 4.5.6 三角矩阵 1)概述&存储方式 三角矩阵分为:上三角矩阵、下三角矩阵 上三角矩阵:主对角线(不含主对角线)下方的元素值均为0...只在上三角的位置进行数据存储 下三角矩阵:主对角线(不含主对角线)上方的元素值均为0。只在下三角的位置进行数据存储 存储方式:三角矩阵的存放方式,与对称矩阵的存放方式相同。...\text{j)} \end{cases} \tag{上三角矩阵公式} 3)下三角矩阵 下三角矩阵实例 \left[ \begin{matrix} a_{0,0} & 0 & \cdots

    3.9K10

    数据结构与算法 -数组

    如下图便是一个5阶对称矩阵。 ? 对称矩阵中的元素在主对角线上是对称关系,故只要存储矩阵中上三角或下三角中的元素,让每两个对称的元素共享一个存储空间,这样能节约近一半的存储空间。...三角矩阵 以主对角线划分,三角矩阵有上三角和下三角两种。 上三角矩阵如图所示,它的下三角(不包括主对角线) 中的元素均为常数。下三角矩阵正好相反,它的主对角线上方均为常数。...在大多数情况下,三角矩阵常数为零。 ?...上三角矩阵中,主对角线之上的第p行(0≤p三角矩阵中的元素a[i][j]时,a[i][j]之前的i 行一共有 (n-p)=i(2n-i+1)/2个元素,在第i行上...下三角矩阵对应的压缩存储 s[k] 和 a[i][j] 对应关系是: ? 3. 稀疏矩阵 什么是稀疏矩阵?简单说,设矩阵a中有s个非零元素, 若s远远小于矩阵元素的总数,则称a为稀疏矩阵。

    74920

    2024重生之回溯数据结构与算法系列学习(7)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】

    ;而描述数组时通常下标从0开始 某些特殊矩阵可以压缩存储空间(比如对称矩阵) 对称矩阵的压缩存储: 若n阶方阵中任意一个元素ai,j都有ai,j = aj,i则该矩阵为对称矩阵 普通存储:n*...n二维数组 压缩存储策略:只存储主对角线+下三角区(或主对角线+上三角区),按行优先原则将各元素存入一维数组中 数组大小应为多少:(1+n)*n/2 站在程序员的角度,对称矩阵压缩存储后怎样才能方便使用...:可以实现一个“映射”函数矩阵下标->一维数组下标 按行优先的原则,ai,j是第几个元素: 三角矩阵的压缩存储: 下三角矩阵:除了主对角线和下三角区,其余的元素都相同 上三角矩阵:除了主对角线和上三角区...,其余的元素都相同 压缩存储策略:按行优先原则将橙色区元素存入一维数组中,并在最后一个位置存储常量c 下三角矩阵,按行优先的原则,ai,j是第几个元素: 上三角矩阵,按行优先的原则,ai...只存储带状部分 按行优先的原则,ai,j是第几个元素: 稀疏矩阵的压缩存储: 稀疏矩阵:非零元素远远少于矩阵元素的个数 压缩存储策略1:顺序存储——三元组<i(行),j(列),

    12610

    【数据结构】数组和字符串(二):特殊矩阵的压缩存储:对角矩阵——一维数组

    4.2.1 矩阵的数组表示 【数据结构】数组和字符串(一):矩阵的数组表示 4.2.2 特殊矩阵的压缩存储   矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。...但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造成很大的空间浪费。...由于只有主对角线上有非零元素,只需存储主对角线上的元素即可。 三角矩阵:指上三角或下三角的元素都为零的矩阵。同样地,只需存储其中一部分非零元素,可以节省存储空间。...对称矩阵:指矩阵中的元素关于主对角线对称的矩阵。由于对称矩阵的非零元素有一定的规律,可以只存储其中一部分元素,从而减少存储空间。 稀疏矩阵:指大部分元素为零的矩阵。...对角矩阵的压缩存储   对于一个n×n维的对角矩阵M,由于非主对角线上的元素都为零,只需存储其n个对角元素的值即可。

    11810

    手把手:用OpenCV亲手给小扎、Musk等科技大佬们做一张“平均脸”(附Python代码)

    *3矩阵,用于转换点坐标或整个图像。...平均基准点的Delaunay三角剖分 首先,我们需要计算这68个基准点的坐标平均值,我们利用这68个点(图6蓝色点)以及输出图像边界上的8个点(上图绿色点)来计算Delaunay三角剖分(上图红色边框)...下面的矩阵展示了部分三角形列表,我们看到,关键点62、68和60形成一个三角形,32、50和49形成另一个三角形,等等。...如上图所示,左图是变换后输入图像的Delaunay三角剖分,中图是平均关键点的三角剖分。注意,左图的三角形1对应中图的三角形1。用左图三角形1的三个顶点及其对应的中图三个顶点计算变换矩阵。...比如: 对奥巴马的图像(左)及其镜像(右)进行平均得到对称脸(中) 彩蛋部分!文摘菌也制作了编辑大大们的平均脸。噔噔噔噔!

    1.5K70

    【笔记】《Deep Geometric Texture Synthesis》的思路

    然后将三角形的三条边都用上述的特征来描述,也就是存为一个3*4的矩阵,在这种描述中三角形的三条边由于是描述了边与边的关系,所以可以保持旋转和移动的不变性而且可以在任意的全局位置和方向中恢复出来 PartC...对称面的卷积需要两部分卷积合作完成: 1*1的卷积来实现有顺序不变性特性的面特征嵌入 考虑了对应三角形面的单环领域信息的对称面卷积 面特征嵌入卷积是为了将各个面的特征转换为输入特征并学习,这里使用式子...这一部分的卷积将原始的矩阵转为了3*d的结果值,其中d是我们想要从中提取的隐特征维数,3是顶点的数量。...经过这块就得到了一个三角形面片的特征向量 对称面卷积部分则要在上一部分作用到当前三角面片和邻域三个三角面片得到四个特征向量后,使用式子g(S, ^f|Ws,Wf,b) = S*Ws + ˆf*Wf +...具体GAN的运用方法在后面说到 PartD 细分和多尺度网格图形 由于这篇文章的目标是在目标物体上进行几何纹理的生成,所以自然需要定义一个上采样操作或层级处理操作,因为生成器就是作用在当前表面中来改变表面顶点让纹理得到迁移

    1.4K11

    什么是数组存储结构

    这里所说的特殊矩阵,主要分为以下两类: 含有大量相同数据元素的矩阵,比如对称矩阵; 含有大量 0 元素的矩阵,比如稀疏矩阵、上(下)三角矩阵; 针对以上两类矩阵,数据结构的压缩存储思想是:矩阵中的相同数据元素...例如,在数组 skr[6] 中存储图 1 中的对称矩阵,则矩阵的压缩存储状态如图 3 所示(存储上三角和下三角的结果相同): 图 3 对称矩阵的压缩存储示意图 注意,以上两个公式既是用来存储矩阵中元素的...上(下)三角矩阵 图 4 上(下)三角矩阵 如图 4 所示,主对角线下的数据元素全部相同的矩阵为上三角矩阵(图 4a)),主对角线上元素全部相同的矩阵为下三角矩阵(图 4b))。...对于这类特殊的矩阵,压缩存储的方式是:上(下)三角矩阵采用对称矩阵的方式存储上(下)三角的数据(元素 0 不用存储)。 例如,压缩存储图 4a) 中的上三角矩阵,矩阵最终的存储状态同图 3 相同。...因此可以得出这样一个结论,上(下)三角矩阵存储元素和提取元素的过程和对称矩阵相同。

    10711

    R 语言中的矩阵计算

    ,原因是上三角取值按列取值,所以先取 10 后取 13,导致上三角和下三角取值顺序不完全一致。...4.1 三角分解 LU 三角分解法是将原方阵分解成一个上三角形矩阵和一个下三角形矩阵,这样的分解法又称为 LU 分解法。它的用途主要在简化一个大矩阵的行列式值的计算过程,求逆矩阵,和求解联立方程组。...这种分解法所得到的上下三角形矩阵不唯一,一对上三角形矩阵和下三角形矩阵,矩阵相乘会得到原矩阵。...它要求矩阵的所有特征值必须大于零,故分解的下三角的对角元也是大于零的。Cholesky 分解法又称平方根法,是当A为实对称正定矩阵时,LU 三角分解法的变形。...通过对相同顺序的对称 Pascal 矩阵执行 LU 分解并返回下三角矩阵,可以容易地获得它。 帕斯卡的三角形是由数字行组成的三角形。

    4.1K20

    调用MKL函数库

    下面结合矩阵LU分解来说明具体操作 使用sgetrf函数对矩阵进行LU分解,函数的命名规则是这样的,s代表single也就是单精度,ge代表一般矩阵,f代表factorization。...输入参数为以下: m :代表输入矩阵a的行数 n :代表输入矩阵a的列数 a :代表输入矩阵 lda :就是矩阵a的第一个维度,一般是m 输出参数为: a :上三角部分为经过LU分解后的矩阵U,下三角部分...注意这里不是纯上三角矩阵!!! ipiv :INTEGER类型。...matrix,一般带状矩阵 sy:symmetric matrix,对称矩阵 sp:symmetric matrix (packed storage) sb:symmetric band matrix...tr:triangular matrix,三角阵 tp:triangular matrix (packed storage) tb:triangular band matrix.

    5K40

    线性代数--MIT18.06(五)

    转置、置换和向量空间、子空间 5.1 A的LU分解中存在换行 ■ 置换矩阵 继续上一讲的内容,由上一讲可知我们可以将系数矩阵 A 分解为下三角矩阵和上三角矩阵的乘积,但是我们给定了一个前提假设—— A...实际上单位阵就是一个置换矩阵,只不过它不对行进行更换,对于原分解过程我们可以这样理解 ? 由此我们得到置换矩阵集合: 对单位矩阵 I 各行进行(或列)重排之后的矩阵集合。...■ 对称矩阵 特别的我们发现一些矩阵转置之后还是原矩阵,这样的矩阵称为对称矩阵(Symmetric matrix , S), 即 ?...同时我们发现可以通过任意矩阵,其自身与其转置的乘积得到对称阵,即 ? ? 5.2 向量空间、子空间 ■ 向量空间的定义: 所有 n 维向量构成的空间即为向量空间 ?...■ 子空间的定义: 子空间是向量空间 ? 中满足如下条件的部分空间: 对于 ? 的子空间 ? ,任意 ? , 它们的所有线性组合也在 ? 中。

    51240
    领券