作为计算数学专业,在对微分方程算法求解时,经常会用到矩阵的运算,特别是稀疏矩阵、对称矩阵和对角矩阵的运算,本篇文章旨在介绍用spdiags函数构建稀疏的三对角、五对角矩阵.
编程计算的目标
编程计算的目标有两点:
- 一是提高运算时间;
- 二是减少内存消耗
本文构建的稀疏的对角矩阵,把非零元素标记储存,去除零元素的储存,是为了保证第二点.
函数的用法
语法
1 | Bout = spdiags(A) |
说明
-
Bout = spdiags(A)
从m
×n
矩阵A
中提取非零对角线,并将其作为min(m,n)
×p
矩阵Bout
中的列返回,其中p
是非零对角线的数目。 -
[Bout,id] = spdiags(A)
还返回A
中非零对角线的对角线编号id
。Bout
的大小为min(m,n)
×length(id)
。 -
Bout = spdiags(A,d)
提取由d
指定的A
的对角线,并将其作为min(m,n)
×length(d)
矩阵Bout
的列返回。 -
S = spdiags(Bin,d,m,n)
通过获取Bin
的列并沿d
指定的对角线放置它们,来创建一个m
×n
稀疏矩阵S
。 -
S = spdiags(Bin,d,A)
将d
指定的A
中的对角线替换为Bin
的列。
实例
构造一个稀疏的8×8三对角矩阵(对角元素依次是2,5,6)
1 | e1=2*ones(8,1); %生成一个8×1向量,元素全为2 |
运行结果如下:
构造一个稀疏的8×8五对角矩阵(对角元素依次是3,2,1,2,3)
1 | e1=3*ones(8,1); %生成一个8×1向量,元素全为3 |
运行结果如下: