首页
学习
活动
专区
工具
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<j时,ai,j=0,则称此矩阵三角矩阵。 (2)若i>j时,ai,j=0,则称此矩阵三角矩阵。...(3)若矩阵所有元素满足ai,j=aj,i,则称此矩阵对称矩阵三角 三角 二、三对角矩阵 带状矩阵压缩方法:将非零元素按照行优先存入一维数组。

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

    由于只有主对角线上有非零元素,只需存储主对角线上元素即可。 三角矩阵:指三角三角元素都为零矩阵。同样地,只需存储其中一部分非零元素,可以节省存储空间。...对角矩阵压缩存储 【数据结构】数组和字符串(二):特殊矩阵压缩存储:对角矩阵——一维数组 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< j,不包含对角线上元素),因其元素值与三角部分M(j, i)相同,故应映射到下标为q元素d[q]中(其中

    11510

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

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

    8810

    数据结构——全篇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.8K60

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

    二位数组则是一个矩阵结构,本质是以数组作为数组元素数组,即“数组数组”。以二维数组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.3K41

    数值分析读书笔记(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.2K30

    【数据结构】串与数组

    & 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

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

    这道题拿到是懵逼 本题最为关键对称矩阵相乘算法 幸好有老哥之前探索出了 对称矩阵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

    31640

    数据结构与算法 -数组

    如下图便是一个5阶对称矩阵。 ? 对称矩阵元素在主对角线上是对称关系,故只要存储矩阵中上三角三角元素,让每两个对称元素共享一个存储空间,这样能节约近一半存储空间。...三角矩阵 以主对角线划分,三角矩阵三角三角两种。 三角矩阵如图所示,它三角(不包括主对角线) 中元素均为常数。三角矩阵正好相反,它主对角线上方均为常数。...在大多数情况三角矩阵常数为零。 ?...三角矩阵中,主对角线之上第p行(0≤p<n)恰有n-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为稀疏矩阵

    74620

    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(列),

    12310

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

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

    8410

    手把手:用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

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

    50940

    Python|图像绘制之十字图

    解决方案 这道题打印是一个对称图形,而且对称轴很多,那么就可以利用图形对称性进行思考。这里先上下对折,然后左右对折,最后45度角对折,得到一个直角三角形。如下图所示: ?...根据这四个规律就可以打印分成八份图形(直角三角形),再根据对称性就可以打印出题目要求图形。...但是,输出时候是一行一行输出,如果成全是(.)矩阵再遍历一个一个填入($)的话时间和空间复杂度就很大了。...所以可以先把除直角三角形外其他部分按照对称性先转换成直角三角形后按前面四个规律直接输出。...结语 基本绝大部分类似这种输出一个由几个字符组成对称图形题都可以先利用对称性把图形‘缩小’,这样可以很容易找到一定规律并且这种规律大多都不繁杂。

    96810

    【数据结构】数组和字符串(五):特殊矩阵压缩存储:稀疏矩阵——压缩稀疏行(CSR)

    但是对于特殊矩阵,如对称矩阵三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息零元素情况,这样会造成很大空间浪费。...由于只有主对角线上有非零元素,只需存储主对角线上元素即可。 三角矩阵:指三角三角元素都为零矩阵。同样地,只需存储其中一部分非零元素,可以节省存储空间。...对称矩阵:指矩阵元素关于主对角线对称矩阵。由于对称矩阵非零元素有一定规律,可以只存储其中一部分元素,从而减少存储空间。 稀疏矩阵:指大部分元素为零矩阵。...三角对称矩阵压缩存储 【数据结构】数组和字符串(三):特殊矩阵压缩存储:三角矩阵对称矩阵——一维数组 d....它包含以下几个关键组成部分: row_ptr(行指针数组):它是一个长度为rows + 1数组,用于存储每一行在col_indices和elements数组中起始索引位置。

    11010

    R 语言中矩阵计算

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

    4K20
    领券