giải hệ phương trình bằng phương pháp gauss-seidel

, học viên đăng ký học

Trong giải tích số, phương pháp Gauss-Seidel hay còn gọi là phương pháp lặp Gauss-Seidel, phương pháp Liebmann  hay phương pháp tự sửa sai là một phương pháp lặp được sử dụng để giải một hệ phương trình tuyến tính tương tự như phương pháp Jacobi. Nó được đặt tên theo hai nhà toán học người Đức Carl Friedrich Gauss và Philipp Ludwig von Seidel. Mặc dù phương pháp này có thể áp dụng cho bất kỳ ma trận nào không chứa phần tử 0 (không) trên các đường chéo, nhưng tính hội tụ chỉ xảy ra nếu ma trận hoặc là ma trận đường chéo trội, hoặc là ma trận đối xứng đồng thời xác định dương.

Công thứcSửa đổi

Cho hệ phương trình tuyến tính vuông gồm n phương trình với nghiệm số x:  A x = b {displaystyle Amathbf {x} =mathbf {b} }

{displaystyle Amathbf {x} =mathbf {b} }

Với:  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 {x} ={begin{bmatrix}x_{1}\x_{2}\vdots \x_{n}end{bmatrix}},qquad mathbf {b} ={begin{bmatrix}b_{1}\b_{2}\vdots \b_{n}end{bmatrix}}.}

{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 {x} ={begin{bmatrix}x_{1}\x_{2}\vdots \x_{n}end{bmatrix}},qquad mathbf {b} ={begin{bmatrix}b_{1}\b_{2}\vdots \b_{n}end{bmatrix}}.}

Sau đó A có thể được tách thành một ma trận tam giác dưới  L {displaystyle scriptstyle L_{*}}

{displaystyle scriptstyle L_{*}}

, và một ma trận tam giác ngặt trên U:  A = L + U where L = [ a 11 0 0 a 21 a 22 0 a n 1 a n 2 a n n ] , U = [ 0 a 12 a 1 n 0 0 a 2 n 0 0 0 ] . {displaystyle A=L_{*}+Uqquad {text{where}}qquad L_{*}={begin{bmatrix}a_{11}&0&cdots &0\a_{21}&a_{22}&cdots &0\vdots &vdots &ddots &vdots \a_{n1}&a_{n2}&cdots &a_{nn}end{bmatrix}},quad U={begin{bmatrix}0&a_{12}&cdots &a_{1n}\0&0&cdots &a_{2n}\vdots &vdots &ddots &vdots \0&0&cdots &0end{bmatrix}}.}

{displaystyle A=L_{*}+Uqquad {text{where}}qquad L_{*}={begin{bmatrix}a_{11}&0&cdots &0\a_{21}&a_{22}&cdots &0\vdots &vdots &ddots &vdots \a_{n1}&a_{n2}&cdots &a_{nn}end{bmatrix}},quad U={begin{bmatrix}0&a_{12}&cdots &a_{1n}\0&0&cdots &a_{2n}\vdots &vdots &ddots &vdots \0&0&cdots &0end{bmatrix}}.}

Hệ phương trình tuyến tính được viết lại thành:  L x = b U x {displaystyle L_{*}mathbf {x} =mathbf {b} -Umathbf {x} }

{displaystyle L_{*}mathbf {x} =mathbf {b} -Umathbf {x} }

Phương pháp GaussSeidel là một phương pháp lặp để tính giá trị của x ở bên trái phương trình, bằng cách thế các giá trị x ở phép tính trước vào vế phải phương trình. Cụ thể phương pháp có thể biểu diễn lại bằng phương trình sau:  x ( k + 1 ) = L 1 ( b U x ( k ) ) . {displaystyle mathbf {x} ^{(k+1)}=L_{*}^{-1}(mathbf {b} -Umathbf {x} ^{(k)}).}

{displaystyle mathbf {x} ^{(k+1)}=L_{*}^{-1}(mathbf {b} -Umathbf {x} ^{(k)}).}

Tham khảoSửa đổi

  • Black, Noel and Moore, Shirley, “Gauss-Seidel Method” từ MathWorld.

Liên kết ngoàiSửa đổi

  • GaussSeidel from www.math-linux.com
  • Module for GaussSeidel Iteration
  • GaussSeidel From Holistic Numerical Methods Institute
  • Gauss Siedel Iteration from www.geocities.com
  • The Gauss-Seidel Method
  • Bickson
  • Matlab code Lưu trữ 2009-08-12 tại Wayback Machine
  • C code example
1/5 - (1 bình chọn)