Nhiều vấn đề của khoa học kỹ thuật, kinh tế, môi trường quy về giải hệ phương trình tuyến tính n phương trình n ẩn:Đặt A aij n nx là ma trận hệ số, b là vectơ cột hệ số tự do cho tr
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM TP.HỒ CHÍ MINH
12-2014
Trang 2Mục lục
I.Đặt vấn đề Trang 1 II.Giải quyết vấn đề Trang 2
A Kiến thức chuẩn bị Trang 2
2 Phương pháp Seidel Trang 16 2.1Nội dung phương pháp Trang 16 2.2 Định lý hội tụ Trang 16 2.3 Ví dụ áp dụng Trang 18 2.4 Đoạn chương trình Trang 22
III Tài liệu tham khảo Trang 27
I Đặt vấn đề
Trang 3Nhiều vấn đề của khoa học kỹ thuật, kinh tế, môi trường quy về giải hệ phương trình tuyến tính n phương trình n ẩn:
Đặt A( )aij n nx là ma trận hệ số, b là vectơ cột hệ số tự do cho trước, n a là vectơ n
cột cần phải tìm thì hệ số trên có thể viết dưới dạng: Axb (2)
Nếu detA 0 thì nghiệm của hệ (2) có thể tính theo công thức x A b 1 Ta có thể tìm nghiệm của hệ phương trình bằng định lý Cramer như sau:
Định lý Cramer: Gọi A j là ma trận nhận được từ ma trận A bằng cách thay cột thứ j bằng
cột b, khi đó hệ (2) có nghiệm duy nhất và x j được tính bởi công thức:
det Adet A
j j
x
Tuy nhiên trong thực hành người ta không dùng công thức này để tính nghiệm vì số phép tính quá lớn mà người ta dùng các phương pháp hữu hiệu khác Trong số các phương pháp đó có thể chia ra làm hai nhóm phương pháp lớn là phương pháp trực tiếp và nhóm phương pháp gián tiếp
Đặc điểm chung của nhóm phương pháp trực tiếp là sau một số hữu hạn phép tính sẽ có kết quả, vì vậy nhóm phương pháp này thường được áp dụng với lớp các bài toán có kích thước nhỏ
và các số liệu ban đầu là đúng Nếu như mọi tính toán của ta là chính xác thì các phương pháp trên cho kết quả hoàn toàn chính xác
Các phương pháp giải trực tiếp nói chung cần cn phép tính, trong đó c là hằng số, và người ta 3
ước lượng 2
3
c Chẳng hạn như phương pháp Gauss mà ta xét ở trên là phương pháp giải đúng,
nghĩa là những phép tính sơ cấp được thực hiện đúng hoàn toàn thì cuối cùng ta được nghiệm đúng của hệ Tuy nhiên trên thực tế ta phải luôn luôn làm tròn khi thực hiện các phép tính Vì những lí do trên người ta đã tìm ra phải thường xuyên làm tròn các số, nghĩa là ta thường chỉ tính toán trên các số gần đúng mà thôi, và như vậy sai số tổng hợp đôi khi có thể sẽ khá lớn Liệu cáchlàm tròn trong tính toán có làm ảnh hưởng nhiều đến kết quả cuối cùng không? Ví dụ sau đây cho
Trang 4thấy rằng có những hệ phương trình đại số tuyến tính rất “ nhạy cảm” với sai số, nghĩa là sai số nhỏ khi tính toán có thể ảnh hưởng nghiêm trọng đến kết quả cuối cùng Nói một cách hình tượngthì ta gặp tình huống “sai một li đi một dặm” Những hệ thống phương trình kiểu này được gọi là
hệ phương trình không ổn định Ví dụ ta xét hệ phương trình sau:
Hệ này lại có nghiệm x15 ; x2 8, khác xa so với hệ trên đây
Người ta tìm kiếm những phương pháp gần đúng để giải các bài toán, tức là ngay từ đầu người ta chấp nhận kết quả xấp xỉ, hay sự xấp xỉ đã nằm ngay trong mô hình Khi thực hiện tính toán cụ thể chúng ta lại gặp sai số một lần nữa Như vậy trong các phương pháp gần đúng thì sai
số sẽ là tổng hợp của sai số mô hình và sai số tính toán
Trong tài liệu này, chúng em xin nhắc lại một số phương pháp tính đúng nghiệm của hệ phương trình tuyến tính và giới thiệu một vài phương pháp để tính gần đúng
II Giải quyết vấn đề
A Kiến thức chuẩn bị:
1 Một số loại ma trận:
Một ma trậnA( )aij M n( ) được gọi là ma trận đường chéo trội nếu một trong hai điều kiện sau đây được thỏa mãn:
Trang 6B Phương pháp giải gần đúng
1 Phương pháp lặp đơn
1.1 Cơ sở lí luận
1.1.1 Nội dung phương pháp
Trong không gian n
, người ta xét 3 chuẩn quen thuộc sau:
1
1 1 1 2 2 2
1
max i
i n n i i n i i
1 1 2 2 2
,
maxmax
n ij
i n j n ij
bằng phương pháp lặp đơn,ta biến
đổi về hệ tương đương dạng x Bx g với:
b b b
b b b B
n
c c g c
Trang 7Sau đó với một x (thường chọn 0 n x là 0 g) gọi là vectơ xấp xỉ đầu, ta thiết lập dãy
Nếu dãy những vectơ lặp 0 1 2
, , , , k ,
x x x x có giới hạn là xlimk x k thì giới hạn ấy
là nghiệm đúng của hệ phương trình Thật vậy:
x hội tụ đến nghiệm đúng *x của hệ
1 Sau đây ta xét một số điều kiện của ma trận B để dãy k
*1
*1
Trang 8Vì *x là nghiệm của hệ 2 nên x*Bx*g
Lấy (3) trừ đẳng thức này vế với vế ta được: 1
x x khi k Vậy phương pháp lặp (3) hội tụ.
Bây giờ xét các đánh giá sai số.Ta có: 1 1
Trang 9Trừ hai đẳng thức này vế với vế ta được:
Nhận xét: Từ đánh giá sai số (ii), sự hội tụ của phương pháp lặp đơn càng nhanh nếu B p càng
bé, nó còn cho ta biết sau khi biết 1
- Output: x* *: x nghiệm gần đúng của hệ phương trình có biểu diễn thập phân có m chữ
số sau dấu phẩy, có sai số không quá p.10m
- Giải thuật:
1
1 1
max n ij
i n j
Trang 100,02 0,05 0,1 0,170,11 0,03 0,05 0,190,11 0,12 0,04 0, 27
j j
j j
j j
b b b
Trang 11k k k
x x x
0,9811,0041,563
k k k
x x x
Trang 12Ta phải đưa nó về dạng x Bx g sao cho điều kiện hội tụ trong định lý 1 được thỏa mãn
Trang 14Procedure Ra(x: mang1c);
var i,dem: byte;t,tt:real;
Trang 17x0:=x1;
x1:=Cong(Nhan(B,x0,N),g,N);
x1:=LamTron(x1,3,N);
z:=(cB/(1-cB))*ChuanX_Y(x0,x1,N);End;
Trang 19 nghĩa là x( )k dãy xây dựng theo phương pháp seidel
hội tụ đến nghiệm duy nhất x*
2) Phương pháp Seidel tiết kiệm bộ nhớ hơn phương pháp lặp đơn vì:
+ Phương pháp lặp đơn sử dụng 2n ô nhớ cho x k1 và x k
+ Phương pháp Saidel chỉ cần n ô nhớ của X k X k1 vì sau khi tính 1 1
k
x
thì không cần sử dụng x1k
Trang 200 0 0
n n
Trang 21Vậy ta có x B xg với
0 0,06 0,02 20,03 0 0,05 ,g = 30,01 0,02 0 5
Vậy quá trình lặp Seidel hội tụ
Phân tích B thành tổng hai ma trận B B 1B2 với
Trang 24fo='SeiDel.out';
type Mang1C= array[1 Nmax] of real;
Mang2C= array[1 Nmax,1 Nmax] of real;Var A :Mang2C;
Trang 25Procedure DocFile(Tenfile: string);
Var i,j: byte; f: text;
Trang 26g[i]:=b1[i]/A[i,i];
End;
End;
Function ChuanB_vc(B: Mang2C; N: byte): real;
var t,max: real;
Trang 27Function ChuanX_Y(x,y: Mang1C; N: byte): real;
var i: byte; t: real;
Trang 28x1:=NhanB_x(B,x0,g,N);End;
Trang 29III. Tài liệu tham khảo:
1 Bài giảng của thầy Trịnh Công Diệu
2 Tài liệu khóa K34, 35, 36.
3 Giải Tích số, Phạm Kỳ Anh, ĐHQG 1996.
4 Tài liệu Internet