我想求解系统A.b=x,其中A是,几乎是,是python中的三对角矩阵:
A是这样的矩阵
a b 0 0 .... 0 0 b
b a b 0 .... 0 0 0
0 b a b .... 0 0 0
.
.
0 0 0 0 .... b a b
b 0 0 0 .... 0 b a
即具有非零对角的三对角线。
我可以使用numpy解决程序来解决和集成我的系统:
numpy.linalg.solve
这是可行的,但非常慢,因为我的矩阵是巨大的,我不认为它利用了稀疏和接近三对角的A阵列。
如果它是一个纯三对角系统,我知道如何使用经典的正反向替换算法快速高效地求解,但我遇到的是那些非零的相对角点
我试图执行一个矩阵乘法,它有以下方案:
C = np.dot(np.dot(sparse.csr_matrix(np.double(A).transpose()),sparse.spdiags(B,0,Ngrid,Ngrid)), sparse.csr_matrix(np.double(A)))
因此,我想转置矩阵A,它导致M>>N的N矩阵,并与对角矩阵M矩阵相乘。B是“主要对角线”。得到的矩阵( N )应与矩阵A ( M )相乘,从而得到N矩阵C。
出现的错误如下:
<2000x921600 sparse matrix of type '<class '
我想在python中编写一个脚本,它生成具有偶数2到10 (所以步骤为2)的矩阵,并计算它的特征值。我成功地做到了。我能够在主对角线上生成元素a和对角上元素b的矩阵,从主对角线生成一个矩阵,并计算特征值:
import numpy as np
import matplotlib.pyplot as plt
def Huckel(a,b):
for n in range(2,10,2):
huckel_matrix = np.zeros(shape(n,n))
np.fill_diagonal(huckel_matrix,a)
hu
我有一个6乘6的矩阵,我想显示没有对角线元素的上三角矩阵:
我所做的:
Rand_num = np.random.rand(6,6)
for i in range(0,6):
for j in range(1,6):
print Rand_num[i][j]
在我看来,算法应该是:
for row = 1 to 6
for col = (row+1) to 6
print Rand_num[row][col]
我如何使用Python来完成它呢?
问题归结为我的任务是用来自另一个列表的元素填充一个矩阵:例如,有一个包含
我想用Python对矩阵进行对角化,下面是我的脚本:
import scipy.linalg as lg
vp = lg.eig(A) # eigen values and vectors
D = N.diag(vp[0]) # diagonalisation of A from its eigen values
P=vp[1] # such as A = P.D.P(-1)
Pm1=lg.inv(P)
但是我怀疑A不能对角化,但这并不能阻止Python计算D、P和P(-1),而不会有任何麻烦.更重要的是,D中的系数是复数,当A中的系数是实的时候,它
关联矩阵是一个对称矩阵,这意味着它的上对角元素和下对角元素是彼此的镜像,统称为非对角线元素(与对角线元素相反,在任何相关矩阵中它们都等于1,因为任何变量与自身的相关性仅为1)。
对于变量2和1 (第2行,第1列),在上对角线上交换第I行数和下对角线j‘列数时,相关矩阵的非对角线元素是相同的。因此,我们只需要重新计算下对角元素,然后将它们复制到矩阵的上对角线中相应的位置。
import numpy as np
from numpy.random import randn
X = randn(20,3)
Rho = np.corrcoef(X.T) #correlation matrix
prin
我想要一个快速的方法(在python或matlab中的一行)来生成一个特定的对称矩阵,知道它的维数和参数a。
此矩阵应该在对角线和a处有1-a:
1-a a a a ....... a a 1-a a ........... a a a 1-a a a a . . . . . . 1-a a a ....................