You are on page 1of 10

1.

Phương pháp không gian con Krylov


Các phương pháp không gian con Krylov là một lớp các phương pháp để giải quyết hệ
phương trình tuyến tính Ax=b, trong đó ma trận A là một ma trận vuông và kích thước
của nó rất lớn, tìm kiếm nghiệm gần đúng từ không gian con Krylov. Đó là các thuật
toán lặp hoạt động trên các ma trận và vectơ hữu hạn trong số học thực và phức. Các
thuật toán này lặp đi lặp lại, trái ngược với các thuật toán trực tiếp và thường yêu cầu
một sản phẩm vectơ ma trận nhanh cho A (và có thể A T). Các phương pháp này sử
dụng việc xây dựng một không gian con Krylov được sinh ra từ ma trận A và vectơ b,
bao gồm các vectơ đã được tạo ra từ việc nhân ma trận A với các vectơ con trước đó.
Các phương pháp này được sử dụng rộng rãi trong các ứng dụng khoa học tính toán,
bao gồm giải các hệ phương trình tuyến tính, bài toán bình phương nhỏ nhất tuyến
tính, bài toán giá trị riêng, và các vấn đề về giá trị đơn lẻ. Các phương pháp không
gian con Krylov nổi tiếng là Arnoldi, Lanczos, gradient liên hợp, QMR, BiCGSTAB
và GMRES..

2. Không gian con Krylov


* Những suy nghĩ ban đầu về không gian con Krylov

Cho A là một ma trận khả nghịch và giả sử chúng ta muốn giải Ax=b, nhưng chúng ta
chỉ biết A thông qua các sản phẩm vectơ ma trận, tức là một hàm  v↦Av. Hãy xét dãy
các vectơ b,Ab,…,An−1b,Anb, nếu chúng ta xem xét điều đầu tiên, tức là b, Ab,....,
An−1b,Anb thì chúng ta được đảm bảo rằng các vectơ này phụ thuộc tuyến tính (n+1
vectơ trong n-chiều không gian phải phụ thuộc tuyến tính). Do đó, các hệ số này tồn
tại α0,…,αn như vậy mà

α0b+α1Ab+⋯+αnAnb=0.

Để k là số nguyên nhỏ nhất sao cho αk≠0. Sau đó, kể từ khi A−1 tồn tại:

−1 k+1
A−1b= .(α b+⋯+αnAn−k−1b) (Định lý Cayley-Hamilton)
αk

Điều này chứng tỏ rằng x=A −1 b chỉ có thể được tính toán bởi các sản phẩm vectơ ma
trận. Điều này cho chúng ta một ý tưởng để tìm kiếm nghiệm từ các không gian con
Krylov.
* Không gian con Krylov

Cho A là một ma trận và c một véc tơ. các r không gian con thứ Krylov, ký hiệu là
Kr(A,c) là vectơ cách nhau bởi các vectơ,c,Ac,…,Ar−1 c.

Thông thường, nhưng không nhất thiết, vectơ c là vế phải trong hệ tuyến tính Ax=b
sao cho c=b.
3. Conjugate gradient
Đặt vấn đề: Xét hệ phương trình tuyến tính với n ẩn và n phương trình như sau:

{
a11 . x 1 +…+ a1 n . x n=b1
a21 . x 1 +…+a 2 n . x n=b2

an 1 . x 1 +…+a nn . x n=b n

Ta có thể viết lại hệ dưới dạng ma trận như sau:


Ax=b

Với A ∈ R n× nvà x ,b ∈ Rn.


Giả sử hệ có nghiệm duy nhất, với trường hợp A lớn và là ma trận thưa (sparse matrix,
đa số các phần tử là 0), việc đi giải tổng quát nghiệm:
−1
x= A b

Tốn rất nhiều sức mạnh tính toán và không hiệu quả, thay vào đó đối với tùy dạng ma
trận A khác nhau, ta có các phương pháp khác nhau để tìm nghiệm x hiệu quả hơn.
Phương pháp lặp Conjugate gradient được sử dụng để tìm nghiệm trong hệ trên khi A
đối xứng và xác định dương.
Viết lại vấn đề:
Cho A đối xứng và xác định dương, cực tiểu x ¿ của hàm f:
1
f ( x )= x T Ax−bT x
2

Thỏa mãn A x ¿=b

Định nghĩa: 2 vector u và v A-trực giao với nhau nếu:


⟨ u , v ⟩=uT Av =0
Định nghĩa: Tập hợp các vector { d 0 , … , d k } ⊂ R được gọi là A-trực giao (A-orthogonal)
n

nếu:
T
d i A d j=0 ∀ i≠ j

Định lý: Cho A xác định dương, nếu { d 0 , … , d k } A-trực giao, thì { d 0 , … , d k } độc lập
tuyến tính.
1 T
Ta có thể viết lại hàm f dưới dạng: f ( x )= ⟨ x , x ⟩ −b x
2

Với A là ma trận Hesse.


Phương pháp lặp Conjugate gradient (CG):
Cho { d 0 , … , d n−1 } là n vector A-trực giao, ta có thể tách x ¿ dưới dạng:
n−1
x =∑ α i d i
¿

i=0

Nhân 2 vế với A, ta có:


n−1
A x =∑ α i A d i
¿

i=0

Mà A x ¿=b:
n−1
b=∑ α i A d i
i=0

Nhân 2 vế với d Tk bất kì, ta có:


n−1
d b=∑ α i d Tk A d i
T
k
i=0

Mà ⟨ d i , d k ⟩ =0 , ∀ i ≠ k , nên ta có:
d Tk b=α k d Tk A d k

Từ đó ta có thể tính được α k :


T
dk b
α k= T
dk A dk
n−1
Từ các α k , ta có thể tính trực tiếp nghiệm x ¿ sử dụng công thức: x ¿=∑ α i d i
i=0

Dễ thấy, việc đi tìm các vector { d 0 , … , d n−1 } từ A trước không hiệu quả, nên phương
pháp CG tạo ra các vector trên trong quá trình tìm x ¿, các bước của thuật toán như sau:
1) Dự đoán nghiệm x 0.
2) r 0 ≔b−A x 0
3) Nếu r 0 nhỏ tới hạn (ở mức chính xác chấp nhận được) thì trả x 0 là kết quả.
4) d 0 ≔r 0
5) k ≔0
6) Bắt đầu vòng lặp
r Tk r
7) α k ≔
d Tk A d k
8) x k+1 ≔ x k + α k d k
9) r k +1 ≔ r k −α k Ad k
10)Nếu r k +1nhỏ tới hạn thì thoát vòng lặp
T
r k+1 + r k+1
11) β k ≔ T
rk rk
12) d k +1 ≔r k+1 + β k d k
13) k ≔k + 1
14)Quay lại bước bắt đầu vòng lặp
15)Trả x k+1 là kết quả.

Ta thấy, nếu không có sai số tính toán, phương pháp CG lặp không quá n bước, tuy
nhiên trong quá trình tính toán có sai số nên phương pháp CG chỉ ra được nghiệm gần
đúng.
4. Phương pháp MINRES (minimal residual method)
Phương pháp lặp MINRES dùng để tính toán nghiệm gần đúng của hệ phương
trình đại số tuyến tính Ax=b trong đó A là ma trận vuông cấp n, x và b là véc tơ n
chiều

[ ][ ] [ ]
a11 a12 ... a1 n x1 b1
a21 a22 ... a2 n x 2 = b2
... ... ... ... ... ...
an 1 an 2 ... amn xn bn

Theo đó r ( x )=b− Ax trong không gian Krylov k-chiều


V k =x0 + span {r 0 , A r 0 ... , A r0 }
k−1

Với x 0 ϵ Rn và r 0 =r ( x 0)
Đáp án gần đúng x k
x k =argmin xϵ V ‖r ( x )‖
k

Thuật toán MINRES:


r 0 =b−A x 0

p0=r 0

s0 =Ap0

k =1,2 ,.. .

Tính toán x k và r k
⟨ r k−1 , sk−1 ⟩
α k−1=
⟨ s k−1 , sk−1 ⟩
x k =x k−1 +α k−1 pk−1

r k =r k−1−α k−1 s k−1

Nếu ‖r k‖ bé hơn sai số cho phép, thuật toán gián đoạn với kết quả x k
Nếu không thì ta thực hiện bước tiếp theo
pk ← s k−1

sk ← Ask −1
5. Phương pháp GMRES
Phương pháp GMRES (Generalized Minimum RESidual) là một phương pháp lặp để
giải các hệ phương trình tuyến tính lớn. Các phương pháp truyền thống, chẳng hạn
như phép khử Gauss hoặc phân tích LU, yêu cầu đảo ngược ma trận hệ số, điều này có
thể tốn kém về mặt tính toán đối với các hệ thống lớn. Hơn nữa, nhiều hệ thống lớn có
ma trận hệ số xác định dương không xác định hoặc đối xứng, đòi hỏi các kỹ thuật
chuyên biệt để có giải pháp chính xác. Phương pháp GMRES được thiết kế để giải
quyết những vấn đề này bằng cách cung cấp một cách linh hoạt và hiệu quả để tính
gần đúng nghiệm của một hệ thống tuyến tính mà không cần đảo ngược ma trận hệ số.
Thay vào đó, phương pháp tạo ra một chuỗi các giải pháp gần đúng hội tụ đến giải
pháp chính xác khi số lần lặp tăng lên. Phương pháp GMRES đạt được điều này bằng
cách xây dựng một không gian con Krylov của hệ thống tuyến tính, là một không gian
kéo dài bởi các vectơ {b , Ab , A2 b , ..., An−1 b}. Khi đó thuật toán sẽ tìm nghiệm gần
đúng x sao cho ‖ Ax−b‖được cực tiểu hóa trên không gian con Krylov.
Thuật toán Generalized Minimal RESidual (GMRES) là một phương pháp lặp để giải
các hệ phương trình tuyến tính lớn, thưa thớt có dạng Ax=b, trong đó A là ma trận
vuông, x là vectơ nghiệm chưa biết và b là vectơ nghiệm véc tơ bên tay phải.
Ý tưởng cơ bản đằng sau GMRES là xây dựng một cơ sở trực chuẩn cho không gian
con Krylov K n ( A , r 0 ) được tạo bởi ma trận A và vectơ dư ban đầu r 0 =b−A x 0 , trong đó
x 0 là dự đoán ban đầu nào đó cho nghiệm x. Không gian con Krylov được định nghĩa
là K n ( A , r 0 )= span{r 0 , A r 0, A2 r 0, ..., An−1 r 0}, trong đó n là số lần lặp tối đa cho phép
của thuật toán.
GMRES xấp xỉ giải pháp chính xác của Ax=b, theo vectơ x n ∈ K n để giảm thiểu định
mức Euclide của phần dư r n =b− A x n
Vì x n ∈ K n, nên có thể viết x n=x 0 +Qn y n với y n ∈ Rn. trong đó Qn là ma trận có các cột là
các vectơ q 1 , q 2 , ... , qn.
Phép lặp Arnoldi được sử dụng để tìm các vectơ trực chuẩn q 1 , q 2 , ... , qn tạo thành một
cơ sở cho không gian K n bằng cách áp dụng quy trình Gram-Schmidt cho các vectơ {
r 0 , A r 0, A2 r 0, ..., An−1 r 0} và lưu trữ kết quả các vectơ cơ sở trong các cột của ma trận
Qn. Với q 1=r 0 /‖r 0‖

Phép lặp Arnoldi còn tạo ra một ma trận Hessenberg trên ( n+1 ) ×n H n với
A Qn=Qn +1 H n

Cơ sở trực chuẩn cho không gian con Krylov thu được bằng cách sử dụng phép lặp
Arnoldi, phép này xây dựng một tập trực chuẩn của các vectơ q 1 , q 2 , ... , qn+ 1 bao trùm
không gian con Krylov, cũng như ma trận Hessenberg ( n+1 ) ×n trên H n sao cho
A Qn=Qn +1 H n , trong đó Qn là ma trận có các cột là các vectơ q 1 , q 2 , ... , qn.

Bởi vì các cột của Qn trực chuẩn, ta có


‖r n‖=‖b−A x n‖=‖b− A ( x 0 +Qn y n )‖=‖r 0− A Qn y n‖=‖ β q 1− A Qn y n‖=‖ β q 1−Qn +1 H n y n‖=‖Qn+1 ( β e1−H n y n
Với e 1=( 1,0,0 , … , 0 )T là vector đầu tiên trong cơ sở chuẩn của Rn +1
β=‖r 0‖

Vì thế, x n có thể tìm được bằng cách giảm thiểu định mức Euclide của phần dư
r n =β e 1−H n y n

Thuật toán GMRES sau đó giải bài toán bình phương nhỏ nhất min ‖β e 1−H n y n‖ ,
trong đó y là vectơ hệ số và e 1 là vectơ cơ sở chuẩn đầu tiên, với điều kiện là y cực
tiểu chuẩn của vectơ dư ‖r n‖=‖b−A x n‖, trong đó x n=x 0 +Qn y n là giá trị gần đúng của
nghiệm x . Nghiệm x sau đó được cập nhật thành x n+1=x n +Qn +1 y n +1
Ở vòng lặp thứ n:
1. Tính toán q n với phương pháp Arnoldi.
2. Tìm y n mà giảm thiểu ‖r n‖
3. Tính toán x n=x 0 +Qn y n
4. Lặp lại nếu phần dư chưa đủ nhỏ.
Các bước
Bước 1 của phương pháp GMRES (Tổng quát hóa tối thiểu RESidual) là khởi tạo
thuật toán bằng cách chọn dự đoán ban đầu cho giải pháp, x 0 và tính toán phần dư ban
đầu r 0 , được cho bởi:
r 0 =b−A x 0

trong đó b là vectơ bên phải và A là ma trận hệ số của hệ phương trình tuyến tính cần
giải.
Dự đoán ban đầu cho x 0 có thể là bất kỳ vectơ nào, nhưng thường sử dụng vectơ 0
hoặc vectơ ngẫu nhiên. Việc lựa chọn phỏng đoán ban đầu có thể ảnh hưởng đến tốc
độ hội tụ của phương pháp GMRES, vì vậy điều quan trọng là chọn một phỏng đoán
ban đầu tốt bất cứ khi nào có thể.
Bước 2 của phương pháp GMRES là xây dựng một không gian con Krylov của hệ
thống tuyến tính. Để xây dựng không gian con Krylov, phương pháp GMRES sử dụng
thuật toán lặp Arnoldi
A Qn=Qn +1 H n

Phép lặp Arnoldi diễn ra như sau:


Khởi tạo q 1=r 0 /‖r 0‖ và h1,1 =‖r 0‖ .
Với j = 1 đến n, tính vectơ cơ sở tiếp theo q j +1 và cập nhật ma trận Hessenberg H j:
a. Tính vectơ v= A q j
b. Trực giao v với các vectơ cơ sở trước đó q 1 , q 2 , ... , q j bằng cách sử dụng quy trình
Gram-Schmidt, tức là,
Với i = 1 đến j:
hij =( qi , v )

v=v −hi , j qi

kết thúc
c. Tính toán chuẩn của vectơ v và lưu trữ nó trong H j dưới dạng h j+1 , j=‖v‖
d. Chuẩn hóa v để thu được vectơ cơ sở tiếp theo q j +1 là q j +1=v ∕ h j +1 , j
e. Cập nhật ma trận Hessenberg bằng cách nối thêm hàng và cột mới cho q j +1 và h j+1 , j
tương ứng.
Ma trận kết quả Qn và ma trận Hessenberg H n thỏa mãn hệ thức Arnoldi A Qn=Qn +1 H n
for j in range(n):
# Compute the jth column of the Hessenberg matrix H
v = A @ Q[:,j]
for i in range(j):
H[i,j] = dot(Q[:,i], v)
v = v - H[i,j] * Q[:,i]
H[j+1,j] = norm(v)
Q[:,j+1] = v / H[j+1,j]
Bước 3:
Giải bài toán bình phương nhỏ nhất min ‖β e 1−H n y n‖ cho y để thu được các hệ số của
nghiệm gần đúng x n=x 0 +Qn y n. Bài toán bình phương nhỏ nhất có thể được giải bằng
nhiều phương pháp khác nhau, chẳng hạn như phân tích QR hoặc phép phân tích suy
biến (SVD).
Sau khi tìm thấy các hệ số y , có thể tính được nghiệm gần đúng x n=x 0 +Qn y n. Phần dư
r n =b− A x n sau đó được tính toán và kiểm tra xem nó có đáp ứng các tiêu chí hội tụ
mong muốn hay không. Nếu không, phép lặp Arnoldi được tiếp tục tạo ra các vectơ cơ
sở trực giao bổ sung và cập nhật ma trận Hessenberg.
Ma trận Q trong GMRES là ma trận của các vectơ cơ sở trực giao thu được từ phép
lặp Arnoldi. Ma trận Q là một ma trận m x (k+1), trong đó m là thứ nguyên của bài
toán và k là số lần lặp được thực hiện. Các cột của Q tạo thành một cơ sở trực giao
cho không gian con Krylov K_n, tức là, Q_n là một cơ sở trực giao cho không gian
con bởi {r_0, Ar_0, A^2r_0, ..., A^(k-1 )r_0}. Cột đầu tiên của Q là vectơ dư ban đầu
chuẩn hóa r_0.
Ma trận H trong GMRES là ma trận Hessenberg được tạo bởi phép lặp Arnoldi. Ma
trận H là ma trận (n+1) x n lưu trữ các hệ số của phép chiếu trực giao của mỗi vectơ
cơ sở lên các vectơ cơ sở trước đó. Cột đầu tiên của H chứa các chuẩn của các vectơ
cơ sở và các mục còn lại là các hệ số của các phép chiếu trực giao. Ma trận H là ma
trậnHessenberg trên, có nghĩa là tất cả các thành phần bên dưới đường chéo con thứ
nhất bằng 0.

You might also like