Giáo trình Phương pháp tính - Chương 3: Hệ phương trình đại số tuyến tính

Đây là trường hợp đặt biệt của phương pháp nhân tử LU, và được

dùng cho trường hợp ma trận hệ số A đối xứng và xác định dương.

Ma trận vuông A được gọi là đối xứng nếu AT = A. Có thể nói rằng

ma trận A là đối xứng nếu các phần tử của nó đối xứng với nhau qua

đường chéo chính, nghĩa là aij = aji, i, j = 1, n. Còn ma trận A là

xác định dương nếu x Rn, x 6= 0 : xTAx > 0. Để kiểm tra tính xác

định dương của một ma trận, ta thường dùng định lí sau đây.

Định lí 3.2. Một ma trận là xác định dương khi và chỉ khi tất cả các

định thức con chính của nó đều dương.

Trong đó định thức con chính cấp k, 1 6 k 6 n của ma trận là định

thức con thu được từ k hàng và k cột đầu tiên của ma trận đó.

 

pdf30 trang | Chuyên mục: Phương Pháp Tính | Chia sẻ: tuando | Lượt xem: 730 | Lượt tải: 1download
Tóm tắt nội dung Giáo trình Phương pháp tính - Chương 3: Hệ phương trình đại số tuyến tính, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
n
−
−

0 0 · · · 0
−a21 0 · · · 0
· · · · · · · · · · · ·
−an1 −an2 · · · 0
 −

0 −a12 · · · −a1n
0 0 · · · −a2n
· · · · · · · · · · · ·
0 0 · · · −ann
 =
= D − L− U
Chú ý rằng do aii 6= 0, ∀i = 1, n nên detD 6= 0. Và như vậy tồn tại ma
trận nghịch đảo:
D−1 =

1
a11
0 · · · 0
0
1
a22
· · · 0
· · · · · · · · · · · ·
0 0 · · · 1
ann

Khi đó hệ
Ax = b⇐⇒ (D − L− U )x = b (3.16)
Bây giờ chúng ta sẽ xét một vài phương pháp để chuyển hệ phương
trình (3.1) về dạng x = Tx+ c.
Từ hệ (3.16) ta có Dx = (L + U )x + b. Do tồn tại D−1 nên
x = D−1(L+ U )x+D−1b. Ký hiệu Tj = D−1(L+ U ) và cj = D−1b. Khi
đó công thức lặp theo (3.12) sẽ có dạng
x(m) = Tjx(m−1) + cj, m = 1, 2, 3, . . . (3.17)
Phương pháp lặp dựa trên công thức lặp (3.17) được gọi là phương
pháp Jacobi. Dạng tường minh của công thức (3.17) như sau:
x
(m)
i =
1
aii
− i−1∑
j=1
aijx
(m−1)
j −
n∑
j=i+1
aijx
(m−1)
j + bi
 (3.18)
3.5 Phương pháp lặp 57
với i = 1, 2, . . ., n. Ta có
‖TJ‖∞ = ‖D−1(L + U )‖∞ = max
i=1,n
n∑
j=1,j 6=i
∣∣∣∣aijaii
∣∣∣∣ = max
i=1,n
n∑
j=1,j 6=i
|aij |
|aii| < 1
do A là ma trận đường chéo trội nghiêm ngặt. Vậy ‖TJ‖∞ < 1, nghĩa
là phương pháp Jacobi luôn hội tụ với mọi vectơ lặp ban đầu x(0).
Ví dụ 3.10. Xét hệ phương trình 10x1 + x2 − x3 = 7x1 + 10x2 + x3 = 8−x1 + x2 + 10x3 = 9
Với vectơ lặp ban đầu x(0) = (0, 0, 0)T , hãy tính vectơ x(3) và đánh
giá sai số của nó. Ta có
Tj =
 0.0 −0.1 0.1−0.1 0.0 −0.1
0.1 −0.1 0.0
 và cj =
 0.70.8
0.9

Do đó:
x(1) = Tjx(0) + cj =
 0.70.8
0.9
; x(2) = Tjx(1) + cj =
 0.710.64
0.89
;
x(3) = Tjx(2) + cj =
 0.7250.640
0.907
. Ta có ‖Tj‖∞ = 0.2. Vì vậy
‖x(3) − x‖∞ 6 0.21− 0.2‖x
(3) − x(2)‖∞ = 0.0043
Ví dụ 3.11. Hệ phương trình Ax = b cho bỡi
10x1 − x2 + 2x3 = 6
−x1 + 11x2 − x3 + 3x4 = 25
2x1 − x2 + 10x3 − x4 = −11
3x2 − x3 + 8x4 = 15
58 HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH
có nghiệm duy nhất x = [1, 2,−1, 1]T . Để chuyển từ hệ Ax = b về
dạng x = Tjx+ cj , ta biến đổi như sau
x1 = 0.100x2 − 0.200x3+ 0.600
x2 = 0.091x1+ 0.091x3 − 0.273x4+ 2.273
x3 = 0.200x1+ 0.100x2 + 0.100x4− 1.100
x4 = −0.375x2 + 0.125x3+ 1.875
Khi đó ma trận Tj và vectơ cj có dạng:
Tj =

0 0.100 −0.200 0
0.091 0 0.091 −0.273
−0.200 0.100 0 0.100
0 −0.375 0.125 0
 , cj =

0.600
2.273
−1.100
1.875

Chọn chuẩn vô cùng và ta có ‖Tj‖∞ = 12 < 1. Do đó phương pháp
lặp hội tụ. Chọn x(0) = [0, 0, 0, 0]T. Bảng sau đây cho chúng ta kết
quả tính toán sau 10 lần lặp.
m 1 2 3 4 5
x
(m)
1 0.6000 1.0473 0.9326 1.0152 0.9890
x
(m)
2 2.2727 1.7159 2.0533 1.9537 2.0114
x
(m)
3 −1.1000 −0.8052 −1.0493 −0.9681 −1.0103
x
(m)
4 1.8750 0.8852 1.1309 0.9739 1.0214
m 6 7 8 9 10
x
(m)
1 1.0032 0.9981 1.0006 0.9997 1.0001
x
(m)
2 1.9922 2.0023 1.9987 2.0004 1.9998
x
(m)
3 −0.9945 −1.0020 −0.9990 −1.0004 −0.9998
x
(m)
4 0.9944 1.0036 0.9989 1.0006 0.9998
Quá trình lặp dừng lại dựa theo đánh giá:
‖x(10)− x‖∞ 6 1/21− 1/2‖x
(10)− x(9)‖∞ = 8.0× 10−4 < 10−3
Trong khi sai số thực sự là ‖x(10) − x‖∞ = 0.0002.
3.5 Phương pháp lặp 59
Phương pháp lặp Jacobi được thể hiện trong Chương trình 3.8.
Đối số của chương trình gồm: N là cấp của ma trận, a là ma trận
hệ số cấp N ×(N+1 ), x0 là vectơ lặp ban đầu, eps là sai số (giá trị
mặc định là 10−6) và maxit là số lần lặp tối đa cho phép. Kết quả
trả về của chương trình là vectơ lặp x , sai số ss và số lần lặp thực
tế n .
Chương trình 3.8. - c3jacobi : Phương pháp Jacobi.
function [x,ss,n]=c3jacobi(N,a,x0,eps,maxit)
if nargin < 5, maxit = 100; end;
if nargin < 4, eps = 1.0E-6; end;
if nargin < 3, error('Hàm có ít nhất 3 đối số.'); end;
n=0;
for l=1:maxit
n=n+1;
for k=1:N
sum=0;
for j=1:N
if j∼=k, sum=sum+a(k,j)*x0(j);end;
end;
x(k)=(a(k,N+1)-sum)/a(k,k);
end;
ss=0;
for k=1:N
if abs(x(k)-x0(k))>ss
ss=abs(x(k)-x0(k));
end;
end;
if ss<eps, break; end;
for k=1:N, x0(k)=x(k); end;
end;
Trong công thức (3.18), để tính các toạ độ của vectơ lặp x(m),
60 HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH
chúng ta chỉ sử dụng các toạ độ của x(m−1). Tuy nhiên với
i > 1, x(m)1 , x
(m)
2 , . . . , x
(m)
i−1 đã được tính và xấp xỉ nghiệm chính xác
x1, x2, . . . , xi−1 tốt hơn x(m−1)1 , x
(m−1)
2 , . . . , x
(m−1)
i−1 . Do đó khi tính x
(m)
i
chúng ta nên sử dụng các giá trị vừa tính xong x(m)1 , x
(m)
2 , . . . , x
(m)
i−1. Ta
thu được
x
(m)
i =
1
aii
− i−1∑
j=1
aijx
(m)
j −
n∑
j=i+1
aijx
(m−1)
j + bi
 (3.19)
với i = 1, 2, . . . , n. Công thức (3.19) thường được gọi là công thức lặp
Gauss-Seidel. Bây giờ ta sẽ viết dạng ma trận của phương pháp
Gauss-Seidel.
Từ hệ phương trình (3.16) ta được (D−L)x = Ux+b. Ma trận D−L
cũng có ma trận nghịch đảo và do đó x = (D − L)−1Ux + (D − L)−1b.
Đặt Tg = (D − L)−1U và cg = (D − L)−1b. Khi đó công thức lặp có
dạng
x(m) = Tgx(m−1) + cg, m = 1, 2, 3, . . .
Ví dụ 3.12. Xét hệ phương trình trong ví dụ 3.11
10x1 − x2 + 2x3 = 6
−x1 + 11x2 − x3 + 3x4 = 25
2x1 − x2 + 10x3 − x4 = −11
3x2 − x3 + 8x4 = 15
Công thức lặp theo phương pháp Gauss-Seidel có dạng

x
(m)
1 = 0.100x
(m−1)
2 − 0.200x(m−1)3 + 0.600
x
(m)
2 = 0.091x
(m)
1 + 0.091x
(m−1)
3 − 0.273x(m−1)4 + 2.273
x
(m)
3 = 0.200x
(m)
1 + 0.100x
(m)
2 + 0.100x
(m−1)
4 − 1.100
x
(m)
4 = −0.375x(m)2 + 0.125x(m)3 + 1.875
Chọn x0 = [0, 0, 0, 0]T. Bảng sau đây cho chúng ta kết quả tính
3.5 Phương pháp lặp 61
toán sau 5 lần lặp.
m 1 2 3 4 5
x
(m)
1 0.6000 1.0300 1.0065 1.0009 1.0001
x
(m)
2 2.3272 2.0370 2.0036 2.0003 2.0000
x
(m)
3 −0.9873 −1.0140 −1.0025 −1.0003 −1.0000
x
(m)
4 0.8789 0.9844 0.9983 0.9999 1.0000
Ta thấy đến lần lặp thứ năm, nghiệm thu được bằng phương pháp
Gauss-Seidel tốt hơn nhiều so với phương pháp Jacobi.
Phương pháp lặp Gauss-Seidel được thể hiện trong Chương trình
3.9. Đối số của chương trình gồm: N là cấp của ma trận, a là ma
trận hệ số cấp N ×(N+1 ), x0 là vectơ lặp ban đầu, eps là sai số
(giá trị mặc định là 10−6) và maxit là số lần lặp tối đa cho phép.
Kết quả trả về của chương trình là vectơ lặp x , sai số ss và số lần
lặp thực tế n .
Chương trình 3.9. - c3seidel : Phương pháp Gauss-Seidel.
function [x,ss,n]=c3seidel(N,a,x0,eps,maxit)
n=0;
for l=1:maxit
n=n+1;
for k=1:N
sum=0;
for j=1:N
if j<k, sum=sum+a(k,j)*x(j);
elseif j>k, sum=sum+a(k,j)*x0(j);
end;
end;
x(k)=(a(k,N+1)-sum)/a(k,k);
end;
ss=0;
for k=1:N
62 HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH
if abs(x(k)-x0(k))>ss
ss=abs(x(k)-x0(k));
end;
end;
if ss<eps, break; end;
for k=1:N, x0(k)=x(k); end;
end;
3.6 BÀI TẬP
1. Sử dụng phương pháp phần tử trội giải các hệ phương trình sau
đây:
(a)

2x1 − 1.5x2 + 3x3 = 1
−x1 + 2x3 = 3
4x1 − 4.5x2 + 5x3 = 1
(b)
 2.13x1 + 3.45x2 − 6.21x3 = 1.450.43x1 + 4.24x2 − 5.05x3 = 2.232.67x1 − 1.13x2 + 3.27x3 = 3.21
(c)

x1 + x2 + x4 = 2
2x1 + x2 − x3 + x4 = 1
4x1 − x2 − 2x3 + 2x4 = 0
3x1 − x2 − x3 + 4x4 = −3
2. Dùng phương pháp Doolittle phân tích các ma trận sau thành
tích LU :
(a)
 4 1 −24 5 1
8 12 9
 (b)
 2 2 −1−1 2 1
−2 1 4

(c)

1 1 −3 2
−1 2 1 4
2 1 2 −2
2 2 −1 1

3. Sử dụng các phương pháp nhân tử LU (Doolittle) giải các hệ
phương trình sau:
3.6 Bài tập 63
(a)
 2x1 − 5x2 + 4x3 = 13x1 + 3x2 + 9x3 = 03x1 + 6x2 + 5x3 = 4
(b)
 2.2x1 + 0.3x2 + 0.2x3 = 1.50.3x1 + 3.4x2 + 0.2x3 = 2.40.2x1 + 0.2x2 + 4.1x3 = 3.2
(c)

x2 + x3 = 1
x1 − 2x2 − x3 = 0
x1 − x2 + x3 = −1
(d)

x1 + x2 − x3 + x4 = 1
x1 − x2 + 4x3 + 3x4 = 2
2x1 − x2 + 2x3 + 4x4 = 3
2x1 + x2 + 2x3 + 3x4 = 2
4. Cho A là ma trận vuông, ba đường chéo, cấp 10 với các hệ số
được xác định bỡi aii = 2, ai,i+1 = ai,i−1 = −1 với mọi i = 2, . . . , 9
và a11 = a10,10 = 2, a12 = a10,9 = −1. Cho b là vectơ cột cấp 10
được cho bỡi b1 = b10 = 2 và bi = 1 với mọi i = 2, . . . , 9. Hãy giải
hệ Ax = b sử dụng phương pháp nhân tử LU.
5. Tìm các giá trị của α để cho các ma trận sau đây là xác định
dương:
(a)
 α 1 −11 2 1
−1 1 4
 (b)
 1 α 2α 4 −1
2 −1 8
 (c)
 1 −1 α−1 3 1
α 1 5

6. Sử dụng phương pháp Choleski giải các hệ phương trình sau:
(a)
 2x1 − x2 = 2−x1 + 2x2 − x3 = 1− x2 + 2x3 = 2
(b)
 x1 + 3x2 − 2x3 = 13x1 + 4x2 − 2x3 = 4−2x1 − 2x2 + x3 = 3
(c)

4x1 + x2 + x3 + x4 = −1
x1 + 3x2 − x3 + x4 = 0
x1 − x2 + 2x3 = 1
x1 + x2 + 2x4 = 2
64 HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH
(d)

5.5x1 + 1.2x2 + 1.3x3 + 1.4x4 = 1.5
1.2x1 + 5.5x2 + 1.4x3 + 1.5x4 = 1.6
1.3x1 + 1.4x2 + 5.5x3 + 1.6x4 = 1.7
1.4x1 + 1.5x2 + 1.6x3 + 5.5x4 = 1.8
7. Tính các chuẩn ‖.‖1, ‖.‖∞ và số điều kiện theo các chuẩn một và
vô cùng của các ma trận sau:
(a)
(
5 −3
2 8
)
(b)
 3 1 −11 2 1
−1 1 4
 (c)
 2 −4 −12 2 1
−1 2 4

8. Tìm các giá trị của α > 0 và β > 0 để cho các ma trận sau đây
là đường chéo trội nghiêm ngặt:
(a)
 4 α 12β 5 4
β 2 α
 (b)
 3 2 βα 5 β
2 1 α
 (c)
 β 2 42 α β
4 −1 α

9. Sử dụng phương pháp Jacobi tìm nghiệm gần đúng của các hệ
phương trình sau với sai số 10−3, chọn chuẩn vô cùng:
(a)
 4x1 − x2 + x3 = 13x1 + 8x2 + 2x3 = 03x1 + 3x2 + 10x3 = 4
(b)

10x1 − x2 = 9
−x1 + 10x2 − 2x3 = 7
− 2x2 + 10x3 = 6
(c)

10x1 + 5x2 = 6
5x1 + 10x2 − 4x3 = 25
− 4x2 + 8x3 − x4 = −11
− x3 + 5x4 = −11
(d)

−4x1 + x2 + x3 = −2
x1 − 4x2 + x4 = −1
x1 + − 4x3 + x4 = 0
x2 + x3 − 4x4 = 1
10. Lặp lại bài tập 9 sử dụng phương pháp Gauss-Seidel.

File đính kèm:

  • pdfgiao_trinh_phuong_phap_tinh_chuong_3_he_phuong_trinh_dai_so.pdf