15 Chương 2: Một số phương pháp giải gần đúng hệ phương trình tuyến tính.. Các nhà toán học đã tìm ra nhiều phương pháp để giải gần đúng hệ phương trình tuyến tính.. Nguyễn Thị Ngọc 5 Lớ
Trang 1Nguyễn Thị Ngọc 1 Lớp K32C
LỜI CẢM ƠN
Tôi xin chân thành cảm ơn thầy giáo Nguyễn Văn Hùng đã tận tình
hướng dẫn giúp đỡ tôi trong suốt thời gian thực hiện khóa luận
Xin chân thành cảm ơn các thầy, các cô trong tổ Giải tích-Khoa Toán, Trường Đại học Sư phạm Hà Nội 2 đã tạo mọi điều kiện giúp đỡ tôi hoàn thành khóa luận này
Xin chân thành cảm ơn gia đình và bạn bè đã tạo mọi điều kiện thuận lợi cho tôi trong quá trình thực hiện khóa luận
Tôi xin chân thành cảm ơn!
Hà Nội, tháng 05 năm 2010
Sinh viên
Nguyễn Thị Ngọc
Trang 2Nguyễn Thị Ngọc 2 Lớp K32C
LỜI CAM ĐOAN
Tôi xin cam đoan khoá luận là công trình nghiên cứu của riêng tôi Trong khi nghiên cứu, tôi đã kế thừa những thành quả nghiên cứu của các nhà khoa học, nhà nghiên cứu với sự chân trọng và biết ơn
Những kết quả nêu trong khoá luận chưa được công bố trên bất kỳ công trình nào khác
Hà Nội, tháng 05 năm 2010
Sinh viên
Nguyễn Thị Ngọc
Trang 3Nguyễn Thị Ngọc 3 Lớp K32C
MỤC LỤC
Nội dung
Lời cảm ơn 1
Lời cam đoan 2
Lời nói đầu 4
Chương 1: Một số kiến thức cơ bản 6
1.1 Số gần đúng và sai số 6
1.2 Hệ phương trình tuyến tính 13
1.3 Phân tích sai số 15
Chương 2: Một số phương pháp giải gần đúng hệ phương trình tuyến tính 17 2.1 Phương pháp Gauss 17
2.2 Phương pháp Cholesky 25
2.3 Phương pháp trực giao hóa 29
2.4 Phương pháp lặp đơn 32
2.5 Phương pháp Jacobi 37
2.6 Phương pháp Seidel 41
2.7 Phương pháp Gauss-Seidel 46
Chương 3: Bài tập áp dụng 49 Kết luận
Tài liệu tham khảo
Trang 4Nguyễn Thị Ngọc 4 Lớp K32C
LỜI NÓI ĐẦU
Toán học là một môn khoa học bắt nguồn từ nhu cầu giải quyết bài toán
có nguồn gốc thực tiễn và quay trở lại phục vụ thực tiễn Cùng với thời gian
và sự tiến bộ của loài người toán học ngày càng phát triển và được chia thành hai lĩnh vực đó là toán học lý thuyết và toán học ứng dụng
Nói đến toán học ứng dụng phải kể đến Giải tích số-môn học nghiên cứu các phương pháp giải gần đúng các bài toán thực tế được mô hình hoá bằng ngôn ngữ toán học
Để có lời giải đúng cho bất kì bài toán nào cũng cần phải có dữ kiện của bài toán, xây dựng mô hình bài toán, tìm thuật toán hiệu quả nhất Và cuối cùng là xây dựng chương trình trên máy tính sao cho tiết kiệm thời gian
và bộ nhớ Tuy nhiên trong thời gian sử lý số liệu không tránh khỏi sai số dù
là rất nhỏ nhưng ảnh hưởng trực tiếp đến quá trình tính toán
Chính vì vậy phải sử dụng các thuật toán hữu hiệu để giảm thiểu sự sai
số đồng thời thuận lợi cho công việc lập trình tiết kiệm số lượng các phép tính
và thời gian tính toán
Phương pháp số có ý nghĩa rất lớn trong đại số tuyến tính, đặc biệt là đối với việc giải hệ phương trình tuyến tính Khi số các phương trình lớn các phương pháp truyền thống nhiều khi gặp khó khăn, chúng ta không thể giải quyết một cách chính xác mà chỉ có thể đưa ra lời giải gần đúng cho một bài toán Các nhà toán học đã tìm ra nhiều phương pháp để giải gần đúng hệ phương trình tuyến tính
Hệ phương trình tuyến tính có dạng tổng quát là hệ gồm m phương trình n ẩn Trong khuôn khổ khoá luận này em xin trình bày mảng nhỏ đó là
hệ n phương trình, n ẩn
Trang 5Nguyễn Thị Ngọc 5 Lớp K32C
Với lòng yêu thích toán học, đam mê nghiên cứu khoa học em đã quyết
định chọn đề tài cho mình là: “Một số phương pháp giải gần đúng hệ phương trình tuyến tính”
Có khá nhiều phương pháp giải hệ phương trình tuyến tính nhưng do mới bước đầu làm quen với việc nghiên cứu khoa học và thời gian nghiên cứu còn ít nên trong khuôn khổ khoá luận này em xin trình bày một số vấn đề sau:
Chương 1: Một số kiến thức cơ bản về sai số, làm tròn số, số gần đúng,
hệ phương trình tuyến tính, tập nghiệm của hệ phương trình, số điều kiện của
ma trận, phân tích sai số
Chương 2: Một số phương pháp giải gần đúng hệ phường trình tuyến tính Chương này gồm 7 phương pháp giải gần đúng hệ phương trình tuyến tính gồm phương pháp trực tiếp và các phương pháp lặp được trình bày theo thứ tự: cơ sở lý thuyết, thuật toán, ứng dụng và đánh giá sai số (nếu có)
Chương 3: Bài tập áp dụng
Trang 6Nguyễn Thị Ngọc 6 Lớp K32C
CHƯƠNG 1: MỘT SỐ KIẾN THỨC CƠ BẢN
1.1 Số gần đúng và sai số
1.1.1 Định nghĩa
Trong thực tế tính toán ta thường không biết số đúng a* mà chỉ biết
số đủ gần nó là a Ta nói a là số gần đúng của a*, nếu a không sai khác
*
a nhiều
Đại lượng *
a a
được gọi là sai số thực sự của a
Do không biết a* nên cũng không biết nhưng ta có thể tìm được số 0
a
cho a* a a (1.1) Haya a a* a
Số ∆a thoả mãn (1.1) được gọi là sai số tuyệt đối của a
a a
được gọi là sai số tương đối của a
Trong phép đo nói chung sai số tuyệt đối càng nhỏ càng tốt
Ví dụ 1.1.1 2 Đo độ dài hai đoạn đường ta được:
Trang 7 Thu gọn a là vứt bỏ một số các chữ số bên phải của a để được
số ngắn gọn hơn nhưng vẫn đảm bảo độ chính xác cần thiết
Trang 9Nếu chọn 1
2
thì a có ba chữ số chắc là 1,7,0 còn ba chữ số 1,3,4 là không chắc
Ta xét việc chọn Giả sử a được viết dưới dạng:
Trang 10y f x là các giá trị đúng Giả sử ta không
biết các giá trị đúng này, mà ta chỉ biết các giá trị xx x1, 2, ,x n; y f x
lần lượt là các giá trị gần đúng của x* và y*
Giả sử x i;x i (với i=1,2, ,n) là các sai số tuyệt đối và tương đối của các đối số Khi đó sai số của hàm y f x x 1, 2, ,x n được gọi là các sai số tính toán
thì ' 1
i x
y với i=1,…,n
Trang 11
1.1.4.2 Sai số của phép toán nhân, chia:
Sai số của phép nhân
Trang 122
2 2
x
x y
(phép khai căn) thì độ chính xác tăng lên
1.1.4.4 Sai số của phép tính logarit
1.1.5 Bài toán ngược của bài toán sai số
Giả sử đại lượng y được tính theo công thức: y= f x x 1, 2, ,x n Cần
tính x i để y ; ( 0) cho trước Theo công thức tổng quát của sai số
Trang 131.2 Hệ phương trình đại số tuyến tính
1.2.1 Dạng tổng quát của hệ phương trình tuyến tính
Một hệ phương trình tuyến tính tổng quát là hệ có m phương trình n ẩn
1.2.2 Định lý về sự tồn tại và duy nhất nghiệm
Gọi detA i là định thức suy ra từ định thức detA bằng cách thay cột thứ
i bởi vế phải
Trang 14A x
A
với i=1,2,…,n
1.2.3 Biện luận về số nghiệm
Cho hệ phương trình (2.1) với ma trận hệ số A và ma trận bổ sung
Nếu rankA rankA bs thì hệ vô nghiệm
Nếu rankA=rankA bs= r thì có 2 trường hợp: r = n và r < n
Trang 15- Nếu rankArankA bs : hệ vô nghiệm
- Nếu rankArankA bs n: hệ phương trình có nghiệm duy nhất
- Nếu rankArankA bs n: hệ phương trình có vô số nghiệm
x x
Từ kết quả của giải tích hiện đại ta có: A M, hơn nữa nếu m0 thì
ma trận A không suy biến, do đó ma trậnA có ma trận nghịch đảo 1
Trang 17Trong số các phương pháp đó có thể chia ra làm 2 nhóm lớn là:
- Nhóm phương pháp trực tiếp: phương pháp Gauss, trực giao hoá Hilbert-Schmidt, Cholesky
- Nhóm phương pháp gián tiếp: lặp đơn, Jacobi, phương pháp Seidel và Gauss-Seidel
Đặc điểm:
- Nhóm phương pháp trực tiếp là sau một số hữu hạn phép tính sẽ cho
ta kết quả, vì vậy nhóm phương pháp này thường được áp dụng với các bài toán có kích cỡ nhỏ, và các số liệu ban đầu là đúng Tuy nhiên, do phải thực hiện một số phép tính tương đối là lớn nên có nguy cơ tích lũy sai số, nhất là đối với trường hợp số liệu ban đầu không thật chính xác
- Nhóm phương pháp gián tiếp (phương pháp lặp) thường được áp dụng cho lớp các bài toán có kích cỡ lớn, số liệu ban đầu có sai số
2.1 Phương pháp Gausss
2.1.1 Cơ sở lý thuyết
Cho hệ phương trình tuyến tính Axb (2.1)
Dạng toạ độ của (2.1) là:
Trang 18Nguyễn Thị Ngọc 18 Lớp K32C
, 1 1
Quá trình xuôi: đưa hệ (2.1) về dạng tam giác nhờ phép biến đổi tương đương
Quá trình ngược: Tìm từ hệ tam giác x x n, n1, ,x1
0
k kk
Trang 19a b
a
(j>1) Như vậy công thức (2.1.4) với k=1 đã được chứng minh
a b a
a b a
với ( j> 3) Cuối cùng khử x khỏi phương trình thứ hai của (2.1.5.2) ta được 3
a x44 3 4 a 453
Trang 21Nguyễn Thị Ngọc 21 Lớp K32C
11 1 12 2 1 1 22 2 2 2
n n n n nn n n l x l x l x c l x l x c l x c Với 1 ; n ij ij l a n 1 i i c b Quá trình ngược: Nếu l nn 0 thì dừng quá trình tính toán và thông báo hệ suy biến Nếu l nn 0 thì tính:
1 1, 1 1, 1 1 12 2 1, 1 1 1 11 l
n n nn n n n n n n n n n c x l c l x x c l x l x x l Ví dụ 2.1.7: Giải hệ phương trình sau bằng phương pháp Gauss 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 2 2 4 (1) 4 3 2 6 (2) 3 5 3 4 12 (3) 3 3 2 2 6 (4) x x x x x x x x x x x x x x x x a Qúa trình xuôi Bước 1: khử x 1 Từ (1) ta có: x1 x2 0.5x3 0.5x4 2 (5)
Từ (2) ta có: x2 x3 2 (6)
Từ (3) ta có: 2x21.5x32.5x4 6 (7)
Từ (4) ta có; 0.5x30.5x4 0 (8)
Trang 22- Phương pháp Gauss là phương pháp trực tiếp thường sử dụng để giải
hệ tuyến tính có kích cỡ nhỏ, các số liệu cho đúng
- Khối lượng tính toán của phương pháp Gauss:
Trang 23a Nếu trong hệ có phần tử dẫn 1
0
k
kk
a thì phương pháp Gauss có thể cho ta kết quả không chính xác
- Để giảm sai số tính toán, khi sử dụng phương pháp Gauss người ta thường chọn trụ tối đa Quá trình này được thực hiện như sau:
a thì dừng quá trình tính toán và thông báo hệ suy biến Nếu 1
0
k rk
Do đó: 0 1 1
11 22detAa a a nn n detB
Trong đó:
Trang 24Cho A là ma trận không suy biến Ta cần tìm ma trận nghịch đảo A-1
Như vậy để tìm ma trận nghịch đảo 1
A ta phải giải hệ n phương trình tuyến tính với cùng một ma trận A
Ví dụ Tìm ma trận nghịch đảo của ma trận A cho dưới đây:
1 1/4 -1/8 3/8 0
Trang 25Ở đó: B là ma trận tam giác dưới, còn C là ma trận tam giác trên
Khi biết c , ta tìm được 11 b11, từ điều kiện a11 0 ta suy ra b c11. 110
Nếu i=2, j=1 và i=1,j=2 thì có:
Trang 262.2.2 Sơ đồ tính toán
1 Cho hệ phương trình tuyến tính: Axb
2 Kiểm tra tính đối xứng của ma trậnA
3 Tìm ma trận B theo công thức:
11 11
b a
Trang 27Nguyễn Thị Ngọc 27 Lớp K32C
1 1
11
j j
a b
b
(j>1)
1 2 1
i
ij ki kj k
11
,
b y
Trang 2811
1
a
b a
111
y y y
6 2 1
x x x
Trang 29Nguyễn Thị Ngọc 29 Lớp K32C
- Phương pháp Cholesky thường áp dụng cho hệ chuẩn tắc nhận được khi sử lý bằng phương pháp bình phương tối thiểu Khi đó ma trận A của hệ
là đối xứng, xác định dương và hệ (2.1) được giải duy nhất
- Khối lượng tính toán:
n
ij j i j
1
n
i i
a trong đó 1
Trang 30Suy ra điều giả sử là sai , suy ra t n1 0
Vì u n1 trực giao với mọi a i i 1,n nên ta có
01,
n
ij i n j
a b t suy ra
Trang 32- Số phép chia là n, số phép chia căn cũng là n
Ưu điểm :
- Phương pháp trực giao hóa tương đối đơn giản, dễ lập trình trên máy
- Khối lượng tính toán ít ( cỡ n3 phép tính )
Nhược điểm:
- Tuy nhiên không ổn định và kém chính xác so với phương pháp Gauss Nguyên nhân là do quá trình trực giao hóa Hilber- Schmidt theo công thức (2.3.2) không ổn định Sai số nhỏ có thể làm hệ vectơ n1
i i
v không còn trực giao nữa
2.4 Phương pháp lặp đơn
2.4.1 Cơ sở lí thuyết
Trang 33Nguyễn Thị Ngọc 33 Lớp K32C
Để giải gần đúng hệ phương trình tuyến tính (2.1), ta áp dụng phương pháp lặp đơn mà bản chất của phương pháp là vận dụng nguyên lý ánh xạ co, đưa (2.1) về phương trình tương đương có dạng : xBxg (2.4.1)
Nguyên lí ánh xạ co: Trong không gian metric đầy đủ, mọi ánh xạ co
đều có điểm bất động duy nhất
Để vận dụng nguyên lí ánh xạ co, trước hết ta nhắc lại các chuẩn quen thuộc trong không gian n
x
; 1
1, 1ax
n
ij
j n i
1
;
n i i
Trang 34Nguyễn Thị Ngọc 34 Lớp K32C
2.4.2 Định lí 2.4
Nếu B 1 Khi đó mọi dãy lặp x k1 Bx k g, k=0,1,2,…; x bất kì 0
cho trước, đều hội tụ đến nghiệm duy nhất *
x của hệ phương trình (2.4.1) và
*
11
Trang 353.Đưa hệ Ax b về hệ tương đương xBxg (2.4.1)
4.Kiểm tra điều kiện B 1 (2.4.2) 5.Chọn x tùy ý 0
6.Tính x k1Bx k g, k=0,1,2,… (2.4.3) Cho tới khi x k x k1 thì dừng quá trình tính toán
Trang 372.5 Phương pháp Jacobi (phương pháp đường chéo trội)
Để giải gần đúng hệ phương trình tuyến tính theo phương pháp lặp ta phải đưa hệ (2.1) về dạng (2.4.1) với ma trận B 1 Vấn đề này là không tầm thường Với mỗi ma trận A cụ thể phải có một kỹ thuật tương ứng kèm theo Phương pháp Jacobi (hay còn được gọi là phương pháp đường chéo trội) dưới đây là một trường hợp điển hình
2.5.1 Định nghĩa:
Ma trận 1n
ij
A a gọi là ma trận đường chéo trội nếu một trong hai điều
kiện sau đây được thoả mãn:
Trang 38ij j i ij
a a
1 Cho hệ phương trình tuyến tính: Ax b
2 Kiểm tra tính chéo trội của ma trận A
3 Đưa hệ Ax b về hệ tương đương xBxg
4 Chọn x0 tuỳ ý
5 Tính xk1 Bx k g, k=1,2,…,n
Trang 39Nguyễn Thị Ngọc 39 Lớp K32C
Cho tới khi x k xk1 thì dừng quá trình tính toán
6 Kết luận nghiệm, với sai số *
Trang 41x
45.0
55
k n
Để sai số =10-4 ta phải có: 1 75
45 0
55
k n
< n≥17
Số các bước lặp cần thiết là: n ≥17
2.6 Phương pháp Seidel
2.6.1 Cơ sở lí thuyết
Tư tưởng của phương pháp Seidel có thể phát biểu như sau: “thông tin
càng được sử dụng sớm bao nhiêu càng tốt bấy nhiêu”
Giả sử hệ (2.1) đưa được về dạng: x=Bx+g
Trang 42Viết lại hệ (2.1) dưới dạng xB1B x2 g Trong đó:
Theo định lí (2.4) thì hệ phương trình (2.4) có nghiệm duy nhất *
x , nghĩa là:
Trang 43Nguyễn Thị Ngọc 43 Lớp K32C
* 1
Trang 44Nguyễn Thị Ngọc 44 Lớp K32C
2 Ấn định sai số , >0
3 Đưa hệ phương trình Ax b về dạng xBxg
4 Kiểm tra điều kiện B <1
5 Phân tích B thành tổng 2 ma trận tam giác BB1B2
Với B B được xác định theo công thức (2.6.1) Hệ phương trình trở 1, 2thành xB x1 B x2 g
2.6.4 Tốc độ hội tụ của phương pháp Seidel
Giả sử sau k1 bước lặp ta tìm được nghiệm gần đúng xk1 còn xlà nghiệm đúng của hệ phương trình tuyến tính (2.1) Khi đó ta có:
v x
x
x k k
2.6.5 Ví dụ: Trở lại ví dụ 2.4.1, nhưng giải hệ bằng phương pháp Seidel
Trang 45.03
1
7.94
.41.92
2
9.14
.25
.06
7
3 2
1
3 2
1
3 2
1
x x
x
x x
x
x x
n
i n i
0.2418 0 0.4835 0.6253
j j
Trang 46Nguyễn Thị Ngọc 46 Lớp K32C
Lấy xấp xỉ ban đầu: 0
0, 0, 0
x Kết quả được ghi trong bảng sau:
- Phương pháp Seidel hội tụ tốt hơn phương pháp lặp đơn
- Phương pháp Seidel tiết kiệm bộ nhớ, vì các thành phần vừa được tính huy động ngay để tính các thành phần tiếp theo
- Có thể nêu ví dụ phương pháp Seidel hội tụ còn phương pháp lặp đơn phân kì và ngược lại
- Do trong n, 1, , 2 là tương đương nhau nên phương pháp Seidel cũng hội tụ nếu B1 1 hoặc
Trang 502.1 1.5 19.8 1.3 28.760.9 2.5 1.3 32.1 49.72
Trang 51321
Trang 52y y
2.030112.491011.5329
x x x
Kết luận: Nghiệm của hệ là: x 2.0301; 12.4910; 11.5329
b) Tương tự ta thấy A là ma trận đối xứng, tìm ma trận B
Trang 53Nguyễn Thị Ngọc 53 Lớp K32C
1 2 3 4
0.30.41210.59331.0459
Trang 54127.40 1.2 1.5 2.521.2
128.76 2.1 1.5 1.319.8
149.72 0.9 2.5 1.332.1
Kiểm tra tính chéo trội của ma trận A
Ta đưa hệ đã cho về dạng x=Bx+g: Trong đó: