生成n*n矩阵 对角线为1 python,python n阶矩阵
本文主要介绍python如何生成任意阶N次三对角矩阵,具有很好的参考价值。希望对你有帮助。如有错误或不足之处,请不吝赐教。
00-1010如何生成任意n阶三对角矩阵python矩阵分为上三角、下三角和对角矩阵。
目录
数学需要共轭梯度法的算法。
题目中的矩阵A是n=400/500/600的三对角矩阵。
在网上查阅资料失败后,自己解决了。
将numpy作为np导入
定义生成_矩阵(n):
#添加对角矩阵得到三对角矩阵a。
数组a=np.diag([-2] * n)
array=np.diag([1] * (n-1))
a=np.zeros((n-1))
b=np.zeros(n)
Array _ b=np.insert (array,0,values=a,axis=0) #添加一行
Array _ b=np.insert (array _ b,(n-1),values=b,axis=1) #添加一列
array_c=np.insert(array,(n-1),values=a,axis=0)
array_c=np.insert(array_c,0,值=b,轴=1)
矩阵A=数组A数组b数组c
打印(数组_a)
打印(数组_b)
打印(array_c)
打印(matrix_A)
#按下槽中的绿色按钮运行脚本。
if __name__==__main__:
n=5
生成矩阵(n)
输出:
c : \ Users \ 87167 \ anaconda 3 \ envs \ TF \ python . exe c :/Users/87167/PycharmProjects/GongETiDuFa/main . py
[[-2 0 0 0 0]
[ 0 -2 0 0 0]
[ 0 0 -2 0 0]
[ 0 0 0 -2 0]
[ 0 0 0 0 -2]]
[[0 0 0 0 0]
[1 0 0 0 0]
[0 1 0 0 0]
[0 0 1 0 0]
[0 0 0 1 0]]
[[0 1 0 0 0]
[0 0 1 0 0]
[0 0 0 1 0]
[0 0 0 0 1]
[0 0 0 0 0]]
[[-2 1 0 0 0]
[ 1 -2 1 0 0]
[ 0 1 -2 1 0]
[ 0 0 1 -2 1]
[ 0 0 0 1 -2]]
如何生成任意n阶的三对角矩阵
斜的
返回指定的对角线。
诊断平台
以展平的输入作为对角线创建一个二维数组。
微量
沿着对角线求和。
抽取上三角阵
数组的上三角形。
tril
数组的下三角形。
先说提取一个方阵对角线下的下三角矩阵和对角线上的上三角矩阵(如果只需要上三角矩阵和下三角矩阵,去掉tril/triu中的第二个参数)
上代码(这里使用tril和triu都是返回array形式,还需使用mat转换回矩阵):
m=np.mat(1,2,3;4,5,6;7,8,9)
m
矩阵([[1,2,3],
[4, 5, 6],
[7, 8, 9]])
L=np.tril(m,-1)
L
数组([[0,0,0],
[4, 0, 0],
[7, 8, 0]])
U=np.triu(m,1)
U
数组([[0,2,3],
[0, 0, 6],
[0, 0, 0]])
有两种方法提取对角元素作为矩阵:
1、运用np.diag两次,再使用mat转换回矩阵:
D=np.diag(np.diag(m))
D
数组([[1,0,0],
[0, 5, 0],
[0, 0, 9]])
D=np.mat(D)
D
矩阵([[1,0,0],
[0, 5, 0],
[0, 0, 9]])
2、运用下三角矩阵减去次下三角矩阵(即对角线下的下三角阵):
D=np.tril(m) - L
D
数组([[1,0,0],
[0, 5, 0],
[0, 0, 9]])
D=np.mat(D)
D
矩阵([[1,0,0],
[0, 5, 0],
[0, 0, 9]])
以上个人经验,希望给你一个参考,也希望你能支持盛行的IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。