삼중 대 매트릭스를 나타내는 클래스를 생성 중입니다. 이것들은 대각선에 0이 아닌 값의 집합을 가지고있는 사각형 행렬이며, 위쪽과 아래쪽 대각선에 0이 아닌 값이 있고 그 다음에는 0이됩니다.삼중 대 매트릭스 (Java)에 대한 LU 분해
나는 이것을 저장하기 위해 각각의 대각선에 하나씩 세 개의 1D 배열을 사용하고 있습니다.
d_0 u_0 0 0
l_0 d_1 u_1 0
0 l_1 d_2 u_2
0 0 l_2 d_3
는 그래서 A_I 하나 개의 어레이는 u_i 용과 l_i 하나있다 :
여기 일례이다. 0은 저장되지 않습니다.
LU 분해를 수행하는 알고리즘이 필요합니다. LU 분해는 일반적으로 다음과 같은 두 행렬을 얻을 것이다 :
1 0 0 0
a_0 1 0 0
0 a_1 1 0
0 0 a_2 1
b_0 c_0 0 0
0 b_1 c_1 0
0 0 b_2 c_2
0 0 0 b_3
그러나, 1 년대는 제로와 같은 쓸모없는, 그들은 단지 폐기물 공간이 그래서 필요로하는 알고리즘은 LU 분해의 역할을 다음과 삼중 대각 행렬을 반환 :
를b_0 c_0 0 0
a_0 b_1 c_1 0
0 a_1 b_2 c_2
0 0 a_2 b_3
나는 다음과 같은 방정식을 얻기 위해 관리했습니다 :
c_i = u_i for all i
b_0=d_0
l_i = a_i * b_i for all i
d_(i+1) = a_i * c_i + b(i+1) for i>=1
을하지만 난 A_I, b_i와 C의 모든 일반 식을 찾는 방법을 잘 모르겠어요 _i 그것은 내가 필요한 것입니다.
누가 나를 위해 이렇게 좋은 프로그램 알고리즘을 알고 좋은가? 나는 효율적으로 프로그램을 찾는 것이 아니라 가장 쉬운 프로그램을 찾고 있습니다.
대단히 감사드립니다.
로 번역해야 3 개의 1D 어레이로 만약 내가 그것을 사용했다면 나는 현재 행하고있는 것처럼 물건을 보관하는 지점을 무너 뜨리는 매트릭스의 구조를 바꾸는 것을 어지럽히 야합니다. 나는 평범한 행렬 (non-tridiagonal)을위한 클래스를 가지고 있는데, 실제로 여기에 2D 배열을 사용하기 때문에이 메소드와 상당히 유사한 메소드를 사용한다. –
그래서 문제는 LU 분해와 관련이 없지만 스토리지와 관련이 있습니다. 'lu [i] [j]'요소를 저장 체계로 변환 할 방법이 없습니까? – ja72