Używam rozkładu Cholesky'ego dla Ax=b
, aby znaleźć x
, wykonując L*LT=A
, a następnie y=L*b
i na końcu x=LT*b
. Kiedy sprawdzam, czy nie. Wydaje się, że daje takie same wyniki, jak wykonanie klasycznej Ax=b
. Oto mój kod:
import numpy as np
import scipy.linalg as sla
myL=np.linalg.cholesky(A)
#check_x = np.dot(A, b)
#check_x = np.dot(A,b)
check_x = sla.solve(A, b)
#check if the composition was done right
myLT=myL.T.conj() #transpose matrix
Ac=np.dot(myL,myLT) #should give the original matrix A
#y=np.dot(myL,b)
y = sla.solve_triangular(myL, b)
#x=np.dot(myL.T.conj(),y)
x = sla.solve_triangular(myLT, b)
1 odpowiedź
Byłem bezsenny i zmęczony, pomyliłem ostatnią linijkę, tak naprawdę jest
x=np.linalg.solve(myLT, y)
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.