当前位置:首页 科普知识 带状矩阵

带状矩阵

发布时间:2023-09-04 20:13:11

带状矩阵即在矩阵A中,所有的非零元素都集中在以主对角线为中心的带状区域中。

带状矩阵详细介绍

带状矩阵即在矩阵A中,所有的非零元素都集中在以主对角线为中心的带状区域中。

带状矩阵

带状矩阵详解

对于n*n的方阵,若它的全部非零元素落在一个以主对角线为中心的带状区域中,这个带状区域包含主对角线, 以及主对角线下面及上面各b条对角线上的元素,那么称该方阵为半带宽为b的带状矩阵。

带状矩阵的特点是:对于矩阵元素a(i,j)!=0,|i-j|<=b。

带状矩阵

带状矩阵的存储空间为(2*b+1)*n-2*b。2*b+1为每一行所需空间,所以乘以n行,又因为第一行和最后一行之分配b+1个空间,所以公式中要减去2倍的2*b+1-(b+1)=b。

带状矩阵

address(a(i,j))=1+(i*(2*b+1)-b)+(j-i+b)=1+(i*(2*b+1)+j-i)。我把书中的公式做了修改,address(a(i,j))=1。红色字体表示元素所在行之前的元素个数。每一行有2*b+1个元素,之前有i行,由于第一行并没有2*b+1个元素,所以要减去b个。

带状矩阵带状矩阵的带宽

n阶矩阵A称为带状矩阵,如果存在最小正数m ,满足当∣i-j∣ ≥ m 时,aij =0,这时称 w=2m-1 为矩阵A的带宽;

亦可表述为:对于n阶对称矩阵A,若存在最小正数m,使j > i+m时,aij =0,这时称 w=2m+1 为矩阵A的带宽。

带状矩阵带状矩阵的代码描述

带状矩阵指矩阵中所有的非零元素都集中在以对角线为中心的带状区域中,这里以最常见的三对角带状矩阵为例,示例代码:

#include <stdio.h>#include <stdlib.h>#define N 100int a, sa;int main(void){    int i, j, k;        int n, m;         printf("请输入矩阵的行数和列数: ");    scanf("%d%d", &n, &m);         printf("请输入一个带状矩阵(所有非零元素都集中在以对角线为中心的带状区域):n");         for(i = 1; i <= n; i++)                  for(j = 1; j <= m; j++)            scanf("%d", &a);           for(i = 1; i <= n; i++)                   for(j = i-1; j <= i+1; j++)                sa = a;        printf("Loc=Loc+前i-1行非零元素个数+第i行中a前非零元素个数n");       printf("前i-1行非零元素个数=3*(i-1)-1 (-1因为第一行只有两个非零元素)n");        printf("第i行中a前非零元素个数=j-i+1n");        printf("由此可得:nLoc=Loc+3*(i-1)-1+j-i+1=Loc+2(i-1)+j-1n");        printf("即 sa] = ann");    printf("sa中的数据为: n");        for(i = 1; i <= 1+2*(n-1)+m-1; i++)                printf("sa = %dn", i, sa);    printf("n其对应关系为:n");        for(i = 1; i <= n; i++)                for(j = i-1; j <= i+1; j++)                        if(sa != 0)                             printf("a = sa = %dn", i, j, 1+2*(i-1)+j-1, sa);                 return 0;}

温馨提示:
本文【带状矩阵】由作者 爱百科 转载提供。 该文观点仅代表作者本人, 自学教育网 信息发布平台,仅提供信息存储空间服务, 若存在侵权问题,请及时联系管理员或作者进行删除。
(c)2008-2025 自学教育网 All Rights Reserved 汕头市灵创科技有限公司
粤ICP备2024240640号-6