2023年 5月 26日

python判断矩阵是否对称_python 线性代数:[11]判断正定矩阵

以下是今天用到的部分代码:

>>> import numpy

>>>

>>>

>>> A=range(16)

>>> A

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

>>> A=numpy.array(A).reshape(4,4)

>>> A

array([[ 0,  1,  2,  3],

[ 4,  5,  6,  7],

[ 8,  9, 10, 11],

[12, 13, 14, 15]])

>>> A=A+A.T

>>> A

array([[ 0,  5, 10, 15],

[ 5, 10, 15, 20],

[10, 15, 20, 25],

[15, 20, 25, 30]])

>>>

>>>

>>> B=numpy.linalg.eigvals(A)

>>> B

array([  6.74165739e+01 +0.00000000e+00j,

-7.41657387e+00 +0.00000000e+00j,

-8.88285420e-17 +1.82759332e-15j,  -8.88285420e-17 -1.82759332e-15j])

>>> if numpy.all(B>0):print ‘是正定矩阵’

>>> C=numpy.linalg.cholesky(A)

Traceback (most recent call last):

File “”, line 1, in

C=numpy.linalg.cholesky(A)

File “D:Python27libsite-packages

umpy-1.8.0-py2.7-win-amd64.egg

umpylinalglinalg.py”, line 603, in cholesky

return wrap(gufunc(a, signature=signature, extobj=extobj).astype(result_t))

File “D:Python27libsite-packages

umpy-1.8.0-py2.7-win-amd64.egg

umpylinalglinalg.py”, line 93, in _raise_linalgerror_nonposdef

raise LinAlgError(“Matrix is not positive definite”)

LinAlgError: Matrix is not positive definite

>>> A=numpy.eye(4)

>>> A

array([[ 1.,  0.,  0.,  0.],

[ 0.,  1.,  0.,  0.],

[ 0.,  0.,  1.,  0.],

[ 0.,  0.,  0.,  1.]])

>>>

>>> B=numpy.linalg.eigvals(A)

>>> B

array([ 1.,  1.,  1.,  1.])

>>> if numpy.all(B>0):print ‘是正定矩阵’

是正定矩阵

>>>

>>>

>>> C=numpy.linalg.cholesky(A)

>>> C

array([[ 1.,  0.,  0.,  0.],

[ 0.,  1.,  0.,  0.],

[ 0.,  0.,  1.,  0.],

[ 0.,  0.,  0.,  1.]])

>>>