You are on page 1of 11

PHƯƠNG PHÁP LẶP

GAUSS_SEIDEL
Mô tả phương pháp Gauss_Seidel giải hệ
phương trình
• Ý tưởng: đưa hệ Ax=b về dạng x=Cx + d.
• Trong đó ma trận C và vec tơ d được xây dựng
từ A và b (với A là ma trận có đường chéo trội)
• Khi đó ta sẽ đi tìm nghiệm của bước thứ i :
xi = xi-1 + d
• Phương pháp Gauss-Seidel cải tiến phương pháp
Jacobi bằng cách dùng ngay những kết quả vừa
tính được cho các thành phần của nghiệm tại bước
i để tính các thành phần khác của bước i.
XÂY DỰNG QUÁ TRÌNH LẶP:
• Để thực hiện phép lặp ta chọn một vec tơ ban đầu x(0), sau đó
tính các x(i), i =1,2,... theo công thức lặp sau:
x(1) = Cx(0) + d
x(2) = Cx(1) + d
……..
x(k) = Cx(k-1) + d
Điều kiện : <1
Véc tơ x(k) là vec tơ lặp thứ k.
Trong đó ma trận C và vectơ d là:
Cụ thể hơn ta có tại các bước:
Bước (1) :
Giá trị x1(1) được tính qua các giá trị x2(0), x3(0), ... xn(0)
Giá trị x2(1) được tính qua các giá trị x1(1), x3(0), ... xn(0)
Giá trị x3(1) được tính qua các giá trị x1(1), x2(1),x4(0), ... xn(0)
……………….

Bước (h) :
Giá trị x1(h) được tính qua các giá trị x2(h-1), x3(h-1), ... xn(h-1)
Giá trị x2(h) được tính qua các giá trị x1(h), x3(h-1), ... xn(h-1)
Giá trị x3(h) được tính qua các giá trị x1(h), x2(h),x4(h-1), ... xn(h-1)
CÔNG THỨC TỔNG QUÁT

• Với vec tơ x(0) cho trước bất kỳ, ví dụ x(0) = θ


(vec tơ 0) ta có thể tính các vec tơ x(k) tại
bước lặp k bằng công thức :
Đánh giá sai số của phương pháp lặp Gause-
Seidel
• Gọi x* là nghiệm đúng của hệ phương trình và gọi :

• Khi đó ta có :

hoặc
Ví dụ. Dùng phương pháp lặp Gause-Seidel tìm
nghiệm gần đúng của hệ phương trình:

Giải:
- Có thể thấy rằng ma trận hệ số của hệ phương trình trên thỏa
mãn tính chất chéo trội, do đó ta có thể biến đổi hệ này để áp
dụng phương pháp lặp Gause-Seidel .
- Đưa hệ Ax=b về dạng x=Cx + d
Chọn x(0) = (2,3,5)T, rồi tính x(1), x(2),... theo công thức bảng kết
quả sau:

Xem x(3) là nghiệm gần đúng cần tìm, ta có thể đánh giá sai số
phạm phải của x(3) theo ct :
Trong đó
Thuật toán Gauss Seidel
• Input: n, ma trận a(n,n+1) là ma trận các hệ số, cột n+1 là vế phải của phương
trình.
• Out put: vecto nghiệm x
• Thuật toán:
nhập n,a, sai số e, nghiệm xuất phát x=(x1,x2,….xn)
Lặp quá trình :
khởi tạo stop=true
tính các thành phần nghiệm thứ k+i (đặt là yi) cho nghiệm tiếp theo, với i=1->n :
Khởi tạo tổng S=0;
với j=1->n nếu j #i thì gán S=S+aij*xj
yi =(a(n+1)-S)/aii
nếu |yi-xi|>=e thì gán stop=false
thay xi=yi
Lặp quá trình trên đến khi stop=true;
Xuất các xi tìm được;
End;
Giải bài tập :

You might also like