ndarray的一个标引问题

2024-09-29 21:40:45 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,有一个矩阵:

import numpy as np
A = np.array([[ 8. , -6. , 2. ], 
              [-0.5, 8. , -6. ], 
              [ 0.5, -0.5, 2. ]])

这是一个LU分解(doolitt分解)的结果。(a=[L\U])
我想把你和L从A 你应该是:

^{pr2}$

我应该是:

L = np.array([[ 1. , 0. , 0. ], 
              [-0.5, 1. , 0. ], 
              [ 0.5, -0.5, 1.]])

那么,我想知道的是如何从A得到L和U?在


Tags: importnumpyasnp矩阵arraylupr2
2条回答

你不需要任何索引操作。只需使用triltriuidentity函数:

import numpy as np
A = np.array([[ 8. , -6. , 2. ], 
              [-0.5, 8. , -6. ], 
              [ 0.5, -0.5, 2. ]])

U = np.triu(A)

#[[ 8. -6.  2.]
# [-0.  8. -6.]
# [ 0. -0.  2.]]

L = np.tril(A, k=-1) + np.identity(3)

#[[ 1.   0.   0. ]
# [-0.5  1.   0. ]
# [ 0.5 -0.5  1. ]]

你想要的东西在我看来不像卢的分解, http://en.wikipedia.org/wiki/LU_decomposition

>>> U_ = np.array([[ 8., -6., 2.],
              [ 0., 8., -6.],
              [ 0., 0.,  2.]])
>>> L_ = np.array([[ 1. , 0. , 0. ],
              [-0.5, 1. , 0. ],
              [ 0.5, -0.5, 1.]])
>>> np.dot(L_, U_)
array([[  8.,  -6.,   2.],
       [ -4.,  11.,  -7.],
       [  4.,  -7.,   6.]])

LU分解在中可用西皮·利纳格在

^{pr2}$

相关问题 更多 >

    热门问题