선형 방정식을 푸는 데 사용되는 반복적 방법
수치 선형 대수학 에서 야코비 방법 은 엄밀하게 대각선 지배적인 선형 방정식의 해법을 결정하기 위한 반복 알고리즘이다.각 대각선 요소를 풀고 근사치를 꽂는다. 그런 다음 수렴될 때까지 프로세스가 반복됩니다. 이 알고리즘은 행렬 대각화의 Jacobi 변환 방법 의 제거 버전입니다. 이 방법은 칼 구스타프 야코비의 이름 을 따왔다.
묘사 허락하다
A x = b {\displaystyle A\mathbf {x} =\mathbf {b} n개의 선형 방정식의 제곱계이다.
A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n n ] , x = [ x 1 x 2 ⋮ x n ] , b = [ b 1 b 2 ⋮ b n ] . {\displaystyle A={\begin{bmatrix}a_{11}&, a_{12}&, \cdots &, a_{1n}\\a_{21}&, a_{22}&, \cdots, a_{2n}\\\vdots &, \vdots &, \ddots &, \vdots \\a_{n1}&, a_{n2}&, \cdots &, a_{nn}\end{bmatrix}},\qquad\mathbf{)}={\begin{bmatrix}x_{1}\\x_{2}\\\vdots \\x_{n}\end{bmatrix}},\qquad\mathbf{b}={\begin{bmatrix}b_{1}\\b_{2}\\\vdo &.이익 \\b_{n}\end{bmatrix}}. }
그런 다음 A를 대각선 성분 D, 아래쪽 삼각형 부분 L 및 위쪽 삼각형 부분 U로 분해할 수 있습니다.
A = D + L + U 어디에 D = [ a 11 0 ⋯ 0 0 a 22 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ a n n ] 그리고. L + U = [ 0 a 12 ⋯ a 1 n a 21 0 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ 0 ] . {\displaystyle A=D+L+U\qquad{\text{어디}}\qquad D={\begin{bmatrix}a_{11}&, 0&, \cdots &, 0\\0&, a_{22}&, \cdots, 0\\\vdots &, \vdots &, \ddots &, \vdots \\0& &, 0&, \cdots &, a_{nn}\end{bmatrix}}{\text{과}}L+U={\begin{bmatrix}0&, a_{12}&, \cdots &, a_{1n}\\a_{21}&, 0&, \cdots, a_{2n}\\\vdots &, \vdots &a &.Mp, \ddots, \vdots \\a_{n1}&, a_{n2}&, \cdots & &, 0\end{bmatrix}}. } 그런 다음 솔루션을 통해 반복적으로 얻을 수 있습니다.
x ( k + 1 ) = D − 1 ( b − ( L + U ) x ( k ) ) , \displaystyle \mathbf {x}^{(k+1)}=D^{-1}(\mathbf {b} -(L+U)\mathbf {x}^{(k)}),} 여기 서 x ( k ) { displaystyle \mathbf {x } ^{ (k)} }는 x {\displaystyle \mathbf {x}} 의 k번째 근사치 또는 반복치이며, x (k + 1) 는 x {\displaystyle \mathbf {x } 요소의 다음 또는 k + 1번째 반복치입니다.
x i ( k + 1 ) = 1 a i i ( b i − ∑ j ≠ i a i j x j ( k ) ) , i = 1 , 2 , … , n . {\displaystyle x_{i}^{(k+1)}=paramfrac {1}{a_{i}-\sum _{j\neq i}a_{ij}x_{j}^{(k)}\right},\param i=1,2,\ldots,n}. x i ( k + 1 ){ displaystyle x_{i}^{(k+1)}} 의 계산에는 자신을 제외한 x 내 의(k ) 각 요소가 필요합니다.Gauss-Seidel 방법과는 달리 x i ( k ) { displaystyle x _ { i } { 1 } { displaystyle x _ { i }^ ( k + 1 ) } 에는 덮어쓸 수 없습니다.다른 계산에서는 이 값이 필요하기 때문입니다.최소 저장 용량은 크기 n의 벡터 2개입니다.
알고리즘. 입력: 솔루션 에 대한 초기 추측 x (0) {{style x^{(0)}}, (주요) 행렬 A ({displaystyle A}), 우측 벡터 b ({display b}), 수렴 기준 출력: 수렴 에 도달 했을 때 해결 방법 : k = 0 {style k= 0} 이상 의 원소 기반 공식 에 기초한 의사 코드 수렴 에 도달 하지 않는 동안 i : = n do = 0 \displaystyle \displaystyle = 0 \displaystyle = 0 \displaystyle = a x j ( k ) \displaystyle \displaystyle = \displaystyle x_{j}^{k(k)} = 종료 x 1 k = 1 end x + i = 1 = i = 1 = 1 stepend x 1 = 1 step = 1{a_{ii}}\left scapb_{i }-\caps }\ right}} 끝 k = k + 1 \ displaystyle k = k+ 1 } 끝
컨버전스 표준 수렴 조건(반복 방법)은 반복 행렬의 스펙트럼 반지름이 1 미만일 경우이다.
ρ ( D − 1 ( L + U ) ) < > 1. (\displaystyle \rho (D^{-1}(L+U)) <1). } 이 방법이 수렴하기에 충분한(필요하지는 않지만) 조건은 행렬 A가 엄격히 또는 축소할 수 없을 정도로 대각선 으로 우세하다는 것이다. 엄격한 행 대각 우위는 각 행에 대해 대각 항의 절대값이 다른 항의 절대값의 합보다 크다는 것을 의미합니다.
a i i > ∑ j ≠ i a i j . (\displaystyle \left a_{ii}\right >\sum _{j\neq i}{\left a_{ij}\right }) Jacobi 메서드는 이러한 조건이 충족되지 않더라도 수렴될 수 있습니다.
Jacobi 방법은 모든 대칭 정의 행렬 에 대해 수렴되지 않습니다. 예를들면
A = ( 29 2 1 2 6 1 1 1 1 5 ) ⇒ D − 1 ( L + U ) = ( 0 2 29 1 29 1 3 0 1 6 5 5 0 ) ⇒ ρ ( D − 1 ( L + U ) ) ≈ 1.0661 . {\displaystyle A=begin{pmatrix}29&1&1&{\frac {1}{5}\end{pmatrix}\display\rightraw \pmatrix D^{-1}(L+U)=begin{pmatrix}0&{29}\frac{1}{frac} } 예 예 1 A x = b {\ displaystyle Ax=b } 형식 의 초기 추정치 x (0 )} {\displaystyle x^{(0)}} 의 선형 시스템은 다음과 같다.
A = [ 2 1 5 7 ] , b = [ 11 13 ] 그리고. x ( 0 ) = [ 1 1 ] . ({displaystyle A=bgin{bmatrix}2&1\5&7\\end{bmatrix},\b=matrix{bmatrix}11\\13\end{bmatrix})\matrix{text{and}}=matrix{batrix}1\end{batrix}). } 앞에서 설명한 x (k + 1 ) = D - 1 ( b - ( L + U ) x ( k ) } = D ^ { - 1 } ( b - ( L + U )x ^ { ( k ) } = D = D ^ { - 1 } ( b - ( b - ( L + U )x ^ { ( k ) } } } , x x x x x x x x x x x 。 k)) = 기존 값에서 T = D - 1 ( L + U ) ({ displaystyle T=-D^{-1}(L+U)} 및 C = D - 1 b ({ displaystyle C=D^{-1}b }) 를 선택합니다.
D − 1 = [ 1 / 2 0 0 1 / 7 ] , L = [ 0 0 5 0 ] 그리고. U = [ 0 1 0 0 ] . (\displaystyle D^{-1}=bgin{bmatrix} 1/0\0&1/7\end{bmatrix},\L=bgin{bmatrix}0&0\end{bmatrix}\quad {text{and}\display U=begin{matrix}\0&1) } T = - D - 1 ( L + U ) { displaystyle T=-D^{-1}(L+U)} 을 (를) 다음과 같이 결정 한다.
T = [ 1 / 2 0 0 1 / 7 ] { [ 0 0 − 5 0 ] + [ 0 − 1 0 0 ] } = [ 0 − 1 / 2 − 5 / 7 0 ] . \displaystyle T=begin{bmatrix}1/2&0\0&1/7\end{bmatrix}\left\{\begin{bmatrix}0&0\end{bmatrix}+{\begin{bmatrix}0&1&1&0\end{bmatrix}}}\right } 또한 C(\displaystyle C) 는 다음과 같습니다.
C = [ 1 / 2 0 0 1 / 7 ] [ 11 13 ] = [ 11 / 2 13 / 7 ] . {\displaystyle C=begin{bmatrix}1/2&0&1/7\\end{bmatrix}{\begin{bmatrix}}=begin{bmatrix}11/2\13/7\end{bmatrix}}. } T(\displaystyle T) 와 C(\displaystyle C) 를 계산 하면 x(1 ) = T x (0) + C (\displaystyle x(1) = C(\ displaystyle x(0)}+C ) 로 추정 됩니다.
x ( 1 ) = [ 0 − 1 / 2 − 5 / 7 0 ] [ 1 1 ] + [ 11 / 2 13 / 7 ] = [ 5.0 8 / 7 ] ≈ [ 5 1.143 ] . {\displaystyle x^{(1)}=param {bmatrix}0&-1/2\\-5/7&0\\end {bmatrix}{\param {bmatrix}1\\end {bmatrix}+{\param {bmatrix}{param}{batrix}}{param}{param}{parammatrix}{5}} 0/8/7\end {bmatrix}}\약 {bmatrix}5.matrix}\end {bmatrix}. } 다음 반복이 산출됩니다.
x ( 2 ) = [ 0 − 1 / 2 − 5 / 7 0 ] [ 5.0 8 / 7 ] + [ 11 / 2 13 / 7 ] = [ 69 / 14 − 12 / 7 ] ≈ [ 4.929 − 1.714 ] . {\displaystyle x^{(2)}=bmatrix 0&-1/2\-5/7&0\end {bmatrix}{\display {bmatrix}5. 0\\8/7\end{bmatrix}+{\param{bmatrix}11/2\13/7\\end{bmatrix}=param{bmatrix}69/14\-12/7\end{bmatrix}\약 {param{bmatrix}4.929\-1.7\matrix}. } 이 프로세스는 컨버전스(즉 , A x (n ) - b b \ display \ Ax^{ (n)}-b \ } 가 작아질 때까지 반복됩니다. 25회 반복 후 해결 방법은 다음과 같습니다.
x = [ 7.111 − 3.222 ] . (\displaystyle x=bmatrix\-3.222\end{bmatrix}) } 예 2 다음과 같은 선형 시스템이 주어졌다고 가정합니다.
10 x 1 − x 2 + 2 x 3 = 6 , − x 1 + 11 x 2 − x 3 + 3 x 4 = 25 , 2 x 1 − x 2 + 10 x 3 − x 4 = − 11 , 3 x 2 − x 3 + 8 x 4 = 15. \ displaystyle \ {xalignedalignedaligned10x_{1}-x_{2}+2x_{3 }&=6,\\-x_{1}+11x_{2}-x_{3}+3x_{4 }&=25,\2x_{1}-x_{2}+10x_{3}-x_{4}&=-11,\3x_{2}-x_{3}+8x_{4} }&=15.\end {aligned}} 초기 근사치로 (0, 0, 0, 0) 을 선택하면 첫 번째 근사해는 다음과 같습니다.
x 1 = ( 6 + 0 − ( 2 ∗ 0 ) ) / 10 = 0.6 , x 2 = ( 25 + 0 + 0 − ( 3 ∗ 0 ) ) / 11 = 25 / 11 = 2.2727 , x 3 = ( − 11 − ( 2 ∗ 0 ) + 0 + 0 ) / 10 = − 1.1 , x 4 = ( 15 − ( 3 ∗ 0 ) + 0 ) / 8 = 1.875. {\displaystyle {displaystyle}x_{1}&=(6+0-(2*0))/10=0.6,\x_{2}&=(25+0-(3*0)/11=2.2727,\x_{3}&=125-(2*0)+0+0-(10*0)/{1,\x_1. \end { aligned}} 구한 근사치를 사용하여 원하는 정확도에 도달할 때까지 반복 절차를 반복합니다. 다음은 5회 반복한 후의 대략적인 해결 방법입니다.
x 1 {\displaystyle x_{1}} x 2 {\displaystyle x_{2}} x 3 {\displaystyle x_{3}} x 4 {\displaystyle x_{4}} 0.6 2.27272 -1.1 1.875 1.04727 1.7159 -0.80522 0.88522 0.93263 2.05330 -1.0493 1.13088 1.01519 1.95369 -0.9681 0.97384 0.98899 2.0114 -1.0102 1.02135
시스템의 정확한 솔루션은 (1, 2, -1, 1) 입니다.
Python 예시 수입품 수치 ~하듯이 np 반복_제한 = 1000 # 매트릭스 초기화 A = np . 배열 ([[ 10. , - 1. , 2. , 0. ], [ - 1. , 11. , - 1. , 3. ], [ 2. , - 1. , 10. , - 1. ], [ 0.0 , 3. , - 1. , 8. ]]) # RHS 벡터 초기화 b = np . 배열 ([ 6. , 25. , - 11. , 15. ]) # 시스템 인쇄 인쇄물 ( "시스템:" ) 위해서 i 에 범위 ( A . 모양. [ 0 ]): 배를 젓다 = [ " {} *x {} " . 포맷 ( A [ i , j ], j + 1 ) 위해서 j 에 범위 ( A . 모양. [ 1 ])] 인쇄물 ( f ' { " + " . 합류하다 ( 배를 젓다 ) } = { b [ i ] } ' ) 인쇄물 () x = np . 0과 같은 ( b ) 위해서 카운트 에 범위 ( 반복_제한 ): 한다면 카운트 != 0 : 인쇄물 ( 「반복합니다. {0} : {1} " . 포맷 ( 카운트 , x )) x_new = np . 0과 같은 ( x ) 위해서 i 에 범위 ( A . 모양. [ 0 ]): s1 = np . 점 ( A [ i , : i ], x [: i ]) s2 = np . 점 ( A [ i , i + 1 :], x [ i + 1 :]) x_new [ i ] = ( b [ i ] - s1 - s2 ) / A [ i , i ] 한다면 x_new [ i ] == x_new [ i - 1 ]: 브레이크. 한다면 np . 모두 닫다 ( x , x_new , 아톨 = 1e-10 , 반응하다 = 0. ): 브레이크. x = x_new 인쇄물 ( "솔루션: " ) 인쇄물 ( x ) 에러 = np . 점 ( A , x ) - b 인쇄물 ( "에러:" ) 인쇄물 ( 에러 )
가중 자코비법 가중치 Jacobi 반복은 파라미터 "\displaystyle \obega" 를 사용하여 다음과 같이 반복을 계산합니다.
x ( k + 1 ) = ω D − 1 ( b − ( L + U ) x ( k ) ) + ( 1 − ω ) x ( k ) \displaystyle \mathbf {x}^{(k+1)}=\mathbf D^{-1}(\mathbf {b} -(L+U)\mathbf {x}(k)}+\left(1-\mathbf \right)^{x}(k)}}}} = 2 /3 (\displaystyle \omega = 2 /3) [1] 로 설정합니다.관계 L + U = A - D (\displaystyle L+U=A-D ) 로부터 다음과 같이 나타낼 수도 있습니다.
x ( k + 1 ) = d D - 1 b + ( I - - D - 1 A )x ( k ) \ displaystyle \ mathbf { x } ^ { ( k + 1) = \ opmega D^ { - 1 A \ right ( I - \ d D^ { k ) 대칭 양의 유한 케이스에서의 수렴 시스템 매트릭스 A(\style A) 가 대칭 정의-확정형 일 경우 컨버전스를 나타낼 수 있습니다.
C = C ω = I - d D - 1 A {\displaystyle C=C_{\omega }=I-\omega D^{-1}A} 를 반복 행렬로 한다 . 그러면 컨버전스가 보증됩니다.
ρ ( C ω ) < > 1 ⟺ 0 < > ω < > 2 λ 맥스. ( D − 1 A ) , \displaystyle \rho (C_{\obega }) <1\quad \왼쪽 긴 화살표 \quad 0 <\obega <{\frac {2}{\lambda _{\text{-1}A}}}},} 여기 서 max \ displaystyle \displayda _{\text{max}} 는 최대 고유값입니다.
스펙트럼 반경은 다음 과 같이 = opt \displaystyle \obega =\obega _{\text{opt}} 의 특정 선택에 대해 최소화할 수 있다.
분 ω ρ ( C ω ) = ρ ( C ω 옵트 ) = 1 − 2 κ ( D − 1 A ) + 1 위해서 ω 옵트 := 2 λ 분 ( D − 1 A ) + λ 맥스. ( D − 1 A ) , \displaystyle \min _{\opt}=\rho (C_{\opt})=1-{\frac {2}{\kappa (D^{-1}A)+1}\quad {\text{for}\opt}: =paramfrac {2}{\paramda _{\text{min}}(D^{-1}A)+\lambda _{\text{max}}(D^{-1}A)}},},} 여기 서 {\ { displaystyle \kappa } 는 매트릭스 조건 번호입니다.
「 」를 참조해 주세요.
레퍼런스 외부 링크