Tải bản đầy đủ (.pdf) (43 trang)

Giải hệ phương trình tuyến tính bằng ngôn ngữ lập trình c

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (744.25 KB, 43 trang )

Hệ phương trình tuyến tính

TRƯỜNG ĐẠI HỌC VINH
KHOA TỐN HỌC
------------------

NGUYỄN THỊ BÍCH NGỌC

GIẢI HỆ PHƯƠNG TRÌNH TUYẾN TÍNH BẰNG
NGƠN NGỮ LẬP TRÌNH C

KHĨA LUẬN TỐT NGHIỆP ĐẠI HỌC
CHUN NGÀNH TỐN - TIN HỌC ỨNG DỤNG

Vinh, tháng 5 năm 2012
SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
1


Hệ phương trình tuyến tính

TRƯỜNG ĐẠI HỌC VINH
KHOA TỐN HỌC
------------------

KHĨA LUẬN TỐT NGHIỆP ĐẠI HỌC

GIẢI HỆ PHƯƠNG TRÌNH TUYẾN TÍNH BẰNG
NGƠN NGỮ LẬP TRÌNH C



Người hướng dẫn : ThS. Nguyễn Thanh Diệu
Người thực hiện : Nguyễn Thị Bích Ngọc
Lớp

: 49B - Toán - Tin học ứng dụng

MSSV

: 0851095183

Vinh, tháng 5 năm 2012
SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
2


Hệ phương trình tuyến tính

Mục lục
Mở đầu ......................................................................................................... 2
Chương 1. Giải đúng hệ phương trình bằng phương pháp Gauss ............... 4
1.1 Ý tưởng ................................................................................................ 4
1.2 Nội dung phương pháp ........................................................................ 5
1.3 Kiểm tra q trình tính nghiệm ............................................................ 6
1.4 Khối lượng tính .................................................................................... 9
1.5 Thuật tốn, sơ đồ khối và chương trình ............................................... 10
Chương 2. Phương pháp giải gần đúng hệ phương trình ............................. 16
2.1 Khái niệm ............................................................................................. 16

2.2 Phương pháp lặp đơn ............................................................................ 16
2.3 Phương pháp dây đen ........................................................................... 25
2.4 Đưa hệ thống phương trình tuyến tính về dạng thỏa mãn điều kiện hội tụ
của phương pháp lăp đơn hoặc phương pháp lặp dây đen ...................... 32
2.5 Phương pháp Gauss – Seidel ................................................................ 34
Kết luận ........................................................................................................ 40
Tài liệu tham khảo ........................................................................................ 41

SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
3


Hệ phương trình tuyến tính

MỞ ĐẦU
Trong các mơ hình kinh tế, y học, sinh hoc và khoa học kỹ thuật thường
dẫn đến bài tốn giải hệ phương trình tuyến tính. Đã có rất nhiều các phương
pháp giải đúng hệ phương trình tuyến tinh, chẳng hạn như phương pháp
Gauss, Cramer, Choleky…. Tuy nhiên, trong trường hợp số ẩn lớn thì việc
tính tốn trở nên phức tạp. Khi đó, việc giải đúng hệ phương trình gặp phải
khó khăn. Khơng những thế, các hệ phương trình thường có được từ thực
nghiệm nên hệ số của nó thường là những số gần đúng. Nên việc giải đúng hệ
phương trình trong trường hợp này khơng những khó thực hiện mà cịn khơng
có ý nghĩa thực tế. Trong trường hợp đó, thay vì giải đúng hệ phương trình
người ta tìm cách giải gần đúng hệ phương trình tuyến với sai số cho phép với
việc tính tốn đơn giản hơn.
Ngày nay, với sự phát triển của công nghệ thơng tin, có rất nhiều ngơn
ngữ lập trình hỗ trợ chúng ta trong việc tính tốn có thể kể đến các ngơn ngữ

lập trình như: Pascal, C, C++ , C# …
Trên cơ lý thuyết giải giải gần đúng hệ phươngng trình và các ngơn ngữ
lập trình quen thuộc, chúng tơi chọn đề tài nghiên cứu cho khóa luận là
“phương pháp giải hệ phương trình bằng ngơn ngữ lập trình C”. Mục đích
của khóa luận là viết chương trình giải hệ phương trình bằng ngơn ngữ C.
Ngồi phần mở đầu và tài liệu tham khảo, Khóa luận được chia làm hai
chương.
Chương I. Phương pháp giải đúng hệ phương trình. Nội dung chính của chương
này là nghiên cứu về phương phap Gauss - một phương pháp giải hệ phương trình
có nghiệm đúng và cài đặt thuật tốn trên máy tính bằng ngôn ngữ C.
Chương II. Phương pháp giải gần đúng hệ phương trình. Nội dung chính
của chương này là nghiên cứu các phương pháp giải gần đúng hệ phương trình
SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
4


Hệ phương trình tuyến tính

như: phương pháp lặp đơn, phương pháp dây đen, phương pháp lặp Gauss –
Seidel và cài đặt thuật tốn các phương pháp đó bằng ngơn ngữ lập trình C.
Khóa luận được thực hiện tại trường Đại học Vinh, dưới sự hướng dẫn
của ThS.Nguyễn Thanh Diệu. Em xin bày tỏ lòng biết ơn sâu sắc tới Thầy
về sự nhiệt tình hướng dẫn đã dành cho em trong suốt q trình hình thành
khóa luận. Nhân dịp này em xin trân trọng cảm ơn Ban chủ nhiệm khoa Toán,
các thầy cơ giáo trong khoa Tốn trường Đại học Vinh, gia đình và bạn bè đã
tạo điều kiện thuận lợi để em được học tập và hồn thành khóa luận.
Mặc dù đã có nhiều cố gắng, song khóa luận khơng tránh khỏi những
thiếu sót. Em mong nhận được những ý kiến đóng góp của các thầy, cơ giáo

và các bạn đọc để khóa luận được hồn thiện hơn.

Sinh viên
Nguyễn Thị Bích Ngọc

SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
5


Hệ phương trình tuyến tính

CHƯƠNG I.
GIẢI ĐÚNG HỆ PHƯƠNG TRÌNH PHƯƠNG
PHÁP GAUSS
1.1. Ý tưởng của phương pháp
-

Phương pháp trực tiếp ( phương pháp Gauss) là phương pháp cho ta
nghiệm đúng của hệ phương trình sau một số hữu hạn những phép tính sơ
cấp (với giả thiết khơng sai có sai số làm tròn).

-

Phương pháp Gauss là một phương pháp phổ biến để giải hệ phương
trình. Khi ma trận hệ số khơng có gì đặc biệt (A khơng suy biến). Người ta
thường dùng phương pháp này khi ma trận hệ số “đầy”.
Cho hệ phương trình:
 a11 x1  a12 x 2  ...  a1n x n  a1,n 1

a x  a x  ...  a x  a
 21 1
22 2
2n n
2 , n 1

....................................................
a n1 x1  a n 2 x 2  ...  a nn x n  a n ,n 1

(1.1)

1.1.1 Bước thuận
Dùng phép biến đổi tương đương đưa hệ (1.1) về dạng tam giác trên
như sau:
 x1  b12( 0) x 2  b13( 0) x3  ...  b1(n0) x n  b1(,0n)1

(1)
x 2  b23
x3  ...  b2(1n) x n  b2(1,n) 1


..................................


x n  bn ,n 1


(1.2)

1.1.2 Bước ngược

Tìm từ hệ (1.2) x n , x n 1 ,..., x 1 .
Các cơng thức tính tốn:
 a1( kj )  a1( kj 1)  a1(kk 1) bkj( k 1)
SVTH:Nguyễn Thị Bích Ngọc

( 1, j  k ).
Lớp:49B-Tốn tin ứng dụng

6


Hệ phương trình tuyến tính



( k 1)
kj

b



a kj( k 1)

( j  k ).

a kk( k 1)

Chú ý: Điều kiện để thực hiện phương pháp Gauss để giải hệ phương trình
đại số tuyến tính là:

akk( k 1)  0

( 0)
 a11 .
k  1, n trong đó a11

1.2. Nội dung phương pháp
Để đơn giản ta thực hiện giải hệ phương trình bằng phương pháp Gauss
với n=4. Ta có hệ phương trình:
(0)
(0)
a11
x1  a12
x2
 (0)
(0)
a 21 x1  a 22 x 2
 (0)
(0)
a31 x1  a32 x 2
(0)
(0)
a 41
x1  a 42
x2

( 0)
(0)
(0)
 a13

x3  a14
x 4  a15
( 0)
(0)
(0)
 a 23
x3  a 24
x 4  a 25
( 0)
(0)
(0)
 a33
x3  a34
x 4  a35
( 0)
(0)
(0)
 a 43
x3  a 44
x 4  a 45

(1.3)

1.2.1 Bước thuận
- Giả sử a 11  0. Chia 2 vế phương trình đầu của hệ phương trình (1.3) cho a 11
ta được phương trình:
x1  b12(0) x2  b13(0) x3  b14(0) x4  b15(0)

Với


b1( 0j ) 

a1 j
a11

(1.4)

.

- Dùng phương trình (1.4) để khử x 1 từ các phương trình cịn lại ( trừ phương
trình đầu) của hệ phương trình (1.3) ta được:
(1)
(1)
(1)
(1)
a 22
x 2  a 23
x3  a 24
x 4  a 25
 (1)
(1)
(1)
(1)
a32 x 2  a33 x3  a34 x 4  a35
a (1) x  a (1) x  a (1) x  a (1)
43 3
44 4
45
 42 2


Trong đó

a1(1j)  a1 j  ai1b1(0j )

(1.3’)
( i, j  2 ).

- Chia 2 vế của phương trình đầu tiên của hệ (1.3’) cho a (221) ta được :
(1)
(1)
(1)
x2  b23
x3  b24
x4  b25

SVTH:Nguyễn Thị Bích Ngọc

(1.5)

Lớp:49B-Tốn tin ứng dụng
7


Hệ phương trình tuyến tính

Trong đó

(1)
2i


b

a 2(1i)
 (1) .
a 22

- Dùng phương trình (1.5) để khử x 2 từ các phương trình cịn lại ( trừ phương
trình đầu) ở hệ (1.3’) ta được:
( 2)
( 2)
( 2)
a33
x3  a34
x 4  a35
 ( 2)
( 2)
( 2)
a 43 x3  a 44 x 4  a 45

Trong đó

(1.3”)

a1( 2j )  a1(1j)  ai(21) b2(1j) .

( 2)
- Chia phương trình đầu của hệ (1.3”) cho a 33
ta được phương trình:
( 2)
( 2)

x3  b34
x4  b35

Trong đó

b3 j 

a3( 2j )
( 2)
a33

(1.6)
.

- Dùng phương trình (1.6) để khử x 3 ra khỏi phương trình cịn lại ( trừ
phương trình đầu) ở hệ (1.3”) ta được:
(1.3”’)

( 3)
( 3)
a44
x4  a45

Trong đó

( 2) ( 2)
a1(3j )  a1( 2j )  a13
b3 j .

- Từ (1.3”’) ta tìm được :

x4 

( 3)
a 45
( 3)
.
 b45
( 3)
a 44

1.2.2 Bước ngược
Ta tính lần lượt:
( 2)
( 2)
x3  b35
 b34
x4
(1)
(1)
(1)
x2  b25
 b24
x4  b23
x3

x1  b15(0)  b14(0) x4  b13(0) x3  b12(0) x2 .

1.3. Kiểm tra q trình tính nghiệm
Để kiểm tra q trình tính ta dùng tổng kiểm tra.


SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
8


Hệ phương trình tuyến tính

5

ai(60)   aij( 0) , i  1,4

(1.7)

i 1

như một vế phải mới của hệ thống phương trình (1.3) và xét hệ phương trình:
4

a
j 1

( 0)
ij

x j  ai(60) , i  1,4

 x j  x j 1,

j  1,4


(1.8)

.

(1.9)

Thật vậy:
Thay (1.9) vào (1.8) do (1.3) ta nhận được:
4

4

4

j 1

j 1

 aij(0) x j ( x j  1)   aij(0) x j   aij(0) 
j 1

4

5

j 1

j 1


 ai(50)   aij( 0)   aij( 0)  ai(60)

Vì đối với mỗi phần tử của cột tổng ta đều thực hiện những phép tính
giống như đối với những phần tử của cột ở bên trái cột tổng và nằm trong
cùng một hàng và phân tử của cột tổng, nên nếu không có sai số tính tốn thì
những phần tử của cột tổng phải bằng tổng những phần tử a bên trái tổng.
Hiện tượng này được dùng để kiểm tra quá trình thuận. Quá trình ngược kiểm
tra bằng hệ thức (1.9).
X1

x2

x3

x4

a 11( 0 )
a (210 )
(0)
a 31
a (410 )

a 12( 0 )
a (220 )
(0)
a 32
a (420 )

a 14( 0 )
a (240 )

(0)
a 34
a (440 )

1

a 12(1)
a (221)
(1)
a 32
a (421)

a 13( 0 )
a (230 )
(0)
a 33
a (430 )
a 13(1)
a (231)
(1)
a 33
a (431)

a 14(1)
a (241)
(1)
a 34
a (441)

Hệ số tự

do
a 15( 0 )
a (250 )
(0)
a 35
a (450 )
a 15(1)
a (251)
(1)
a 35
a (451)

1

a (232 )

a (242 )

a (252 )

SVTH:Nguyễn Thị Bích Ngọc

Tổng

Q
trình

a 16( 0 )
a (260 )
(0)

a 36
a (460 )
a 16(1)
a (261)
(1)
a 36
a (461)

Q

a (262 )

Trình
Thuận

Lớp:49B-Tốn tin ứng dụng
9


Hệ phương trình tuyến tính

( 2)
a 33
a (432 )
1

( 2)
a 34
a (442 )
( 3)

a 34
a (443)
1
1

1
1
1

( 2)
a 35
a (452 )
( 3)
a 35
a (453)
a (454 )
x4
x3
x2
x1

( 2)
a 36
a (462 )
( 3)
a 36
a (463)
a (464 )

x4


x3
x2

x1

Q
Trình
Nghịch

*Nhận xét:
1. Sơ đồ Gauss có thể giải hệ phương trình n ẩn (n > 4).
2. Nếu ma trận hệ số A của phương trình xuất phát đối xứng, tức là a ij =
a ji thì căn cứ vào công thức (1.4), (1.5) và (1.6) ta thấy a ij(1) = a (ji1) , a ij( 2 ) = a (ji2 )
nghĩa là những ma trận:
A(1)

1)
 a (22
 (1)
=  a32
 a (1)
 42

(1)
a 23
(1)
a33
(1)
a 43


(1)

a 24

(1)
a34 
(1) 
a 44




 a ( 2)

a ( 2) 

A(2) =  33( 2) 34( 2) 
 a 43 a 44 

là hai ma trận đối xứng. Do vậy phương trình Gauss ta chỉ cần tính a ij(1) và a ij( 2 )
rồi suy ra a (ji1) và a (ji2 ) .

1.4. Khối lượng tính
1.4.1. Hệ phương trình tổng qt
Xét hệ phương trình n ẩn. Ta cần thực hiện số phép tốn
+ Phép nhân

n(n  1)(2n  5)
.

6

+ Phép chia

n(n  1)
.
2

SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
10


Hệ phương trình tuyến tính

n(n  1)(2n  5)
.
6

+ Phép cộng hoặc trừ
Vậy số phép toán cần thực hiện:
Sn =

n(n  1)(2n  5) n(n  1) n(n  1)(2n  5)
=


6
2

6

=

2n(n  1)(2n  5) 3n(n  1)


6
6

=

4n 3  9n 2  7 n
.
6

1.4.2. Hệ phương trình có ma trận hệ số đối xứng
Các phép cộng trừ nhân chia cần thực hiện:
+ Phép nhân

n(n  1)(n  1)
.
6

+ Phép chia

n(n  1)
.
2


+ Phép cộng trừ

n(n  1)(n  1)
.
6

Vì vậy số phép tốn cần thực hiện là:
Sn =

1.5.

n(n  1)(n  1) n(n  1) n(n  1)(n  1)
=


6
2
6

=

2n(n  1)(n  1) 3n(n  1)


6
6

=

2n 3  3n 2  n

.
6

Thuật toán và sơ đồ khối và chương trình

1.5.1 Thuật tốn
- Input : Số ngun n; ma trận hệ số A cấp n  (n + 1).
- Output : Hệ nghiệm vector X = (x 1 , x 2 ,…, x n ).
- Quá trình thực hiện:
Nhập n, ma trận hệ số aij (i = 1  n, j = 1  n+1).

SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
11


Hệ phương trình tuyến tính

Biến đổi A thành A’ (ma trận tam giác trên)
Lặp k = 1  n.
Lặp i = k+1  n.
Xét akk  0.
Gán pi = aik / akk.
Lặp j = k + 1  n + 1.
a ij = aij - piakj.
ai,n+1 = ai,n+1 – piak,n+1.
Tìm nghiệm:
Lặp i = n  1.
 s = ai,n+1.

 Lặp j = i + 1  n .
s = s - aij * xj.
xi = s / aii.

Xuất xi (i = 1  n).
1.5.2 Sơ đồ khối
Sau đây chúng tôi tình bày sơ đồ khối giải hệ phương trình bằng phương pháp
Gauss. Sơ đồ này giúp chúng tôi đề xuất thuật và lập chương trình C giải
đúng hệ phương trình tuyến tính.

SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
12


Hệ phương trình tuyến tính

Gauss
Input n, (aij)
IER = 0
k = 1, 2, …, n

i = k + 1, …, n

akk  0
pi = aik / akk

j = k + 1, …, n


a ij = aij - piakj

a i ,n1 = a i ,n1 - piak,n+1

Call sytru

IER=0

Print (xi)
end

SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
13


Hệ phương trình tuyến tính

procedure
Input n, aij, i=1  n, j=1  n+1
IER = 0

a nn  0

xn =

a n ,n 1
a nn


i = n - 1, n - 2, …, 1

s = ai,n+1
j = i + 1, …, n

s = s - aijxj

a ij  0

xi =

s
a ii

IER = 1

return

SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
14


Hệ phương trình tuyến tính

2

Chương trình giải hệ phương trình bằng phương pháp Gauss


#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
int n, i, j, k;
float a[10][10];
float x[10], p[10], s;
char tt;
while (1)
{
printf("\n nhap n = "); scanf("%d", &n);
printf("\nnhap he so cua phuong trinh :\n");
for(i = 1; i <= n; i ++)
for(j = 1; j <= n + 1; j + +)
{
printf("\na[%d][%d] = ", i, j);
scanf("%f", &a[i][j]);
}
printf("\n");
printf("ma tran vua nhap:");
for(i = 1; i <= n; i + +)
{
printf("\n");
for(j = 1; j <= n + 1; j + +)
SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
15



Hệ phương trình tuyến tính

printf("%3f", a[i][j]);
}
// bien doi ma tran he so ve ma tran tam giac tren
{
for(k = 1; i < n; k + +)
for(i = k + 1; i < n + 1; i + +)
{
if(a[k][k] != 0)
p[i] = a[i][k] / a[k][k];
for(j = k + 1; j < n; j + +)
a[i][j] - = p[i] * a[k][j];
a[i][n+1] - = p[i] * a[k][n+1];
}
printf("\n");
printf("ma tran tam giac tren");
for(i = 1; i <= n; i + +)
{
printf("\n");
for(j = 1; j <= n + 1; j + +)
printf("%3f", &a[i][j]);
}
// tim nghiem theo qua trinh nguoc
for(i = n; i >= 1; i - -)
s = a[i][n+1];
for(j = i + 1; j < n + 1; j + +)
s - = a[i][j] * x[j];

if (a[i][i] != 0)
SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
16


Hệ phương trình tuyến tính

x[i] = s / a[i][i];
}
printf("\n nghiem cua he la\n");
for(i = 1; i <= n; i + +)
printf("%.3f", &x[i]);
printf("\n tiep tuc hay khong(c/n)\n");
tt = getch();
if(tt != 'c') break

;

}
}

SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
17


Hệ phương trình tuyến tính


CHƯƠNG II.
CÁC PHƯƠNG PHÁP GIẢI GẦN ĐÚNG HỆ
PHƯƠNG TRÌNH
2.1 Ý tưởng chung
- Phương pháp lặp là phương pháp mà cho nghiệm đúng X của hệ phương
trình là giới hạn của một dãy vô hạn x(k) những nghiệm gần đúng.
- Trong thực hành ta bắt buộc phải dừng lại một không cụ thể và xem x(k 0 )
là nghiệm gần đúng của hệ phương trình, do đó ta chỉ nhận được nghiệm gần
đúng với một sai số có thể ước lượng được.
- Phương pháp lặp thường dùng khi ma trận A là ma trận “thưa”.

2.2 Phương pháp lặp đơn
2.2.1 Ý tưởng
Xét hệ thống phương trình
AX = B

(2.1).

Đưa (2.1) về dạng tương đương
X =   X

(2.2).

Trong đó:
  11


 =  21


 31

 41

 12
 22
 32
 42

 13
 23
 33
 43

 14 

 24 
;
 34 

 44 

 1 
 
 
   2 .

 3
 
 4


2.2.2 Nội dung phương pháp
- Để giải hệ phương trình (2.2) ta cho một vector, gọi là vector xấp xỉ đầu, ký
hiệu là X(0) (thường chọn X(0) =  ), rồi tính X(k+1) theo cơng thức:
X(k+1)=  +  X(k), k=0,1,2,…
SVTH:Nguyễn Thị Bích Ngọc

(2.3).
Lớp:49B-Tốn tin ứng dụng

18


Hệ phương trình tuyến tính

- Vector X(k) gọi là vector thứ k. Nếu dãy những cặp vector lặp X(0), X(1),…,
X k thì giới hạn này là nghiệm đúng của hệ
X(k), … có giới hạn : X = lim
k 

phương trình (2.2).
Thật vậy,
lim X(k+1) = lim (  +  X(k)) =  +  lim X(k)
k 
X =  +  X  (đpcm).

hay

2.2.3 Sự hội tụ của phương pháp lặp
Định lý 2. 2.3. Nếu ||  || p <1 thì quá trình lặp (2.3) hội tụ về nghiệm của hệ

(2.1) theo chuẩn p với bất kì X 0 ban đầu.
Chứng minh:
Theo (2.3) ta có :
X(1) =  X(0) + 
X(2) =  X(1) + 
.
.
.
X(k) =  X(k+1) +  .
Thay liên tiếp vào các đẳng thức trên ta có:
X(k) = ( E     2  ...   k 1 )   k X 0 = S ( k )    k X 0 .
Trong đó:
S ( k )  (S ij( k ) )  E     2  ...   k 1 .

Theo tính chất chuẩn ma trận thì
|  ijq |||  q || (||  || p ) q .

Vì ||  || p < 1 nên  ijq  0 ( q   ). Điều đó chứng tỏ rằng chuỗi S ij(k ) hội tụ
tuyệt đối về S ij nào đó. Hay
SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
19


Hệ phương trình tuyến tính

S ( k )  S  (S ij ) , ( k   ).

Theo tính chất của chuẩn ta có:

X ( k )  S  S ( k )    k X (0)  S  S ( k )   S   k X (0) .

|| X ( k )  S || p || S ( k )   S || p (||  || p ) k || X 0 || p .



||  || p  1 và S ( k )   S nên

|| X ( k )  S || p  0 , ( k   ).
X ( k )  S  X

Từ đó suy ra:

(X là nghiệm của hệ (2.1)).

2.2.4 Đánh giá sai số của nghiệm gần đúng
Với ||  || p  1 thì

Định lý 2.2.4.

||  || p

|| X  X k || p 

1 ||  || p

|| X k  X k 1 || p

(2.4)



|| X  X k || p 

(||  || p ) k
1 ||  || p

|| X 1  X 0 || p .

(2.5)

Nếu chọn X 0   thì
(||  || p ) k 1

|| X  X k || p 

1 ||  || p

||  || p .

(2.6)

Chứng minh. Theo (2.3) ta có:
X1 =  X 0 + 
X 2 =  X1 + 
.
.
X k =  X k 1 +  u.
Từ đó ta suy ra :
Xk+1 - Xk =  (Xk - Xk-1).
Hay là:

||Xk+1 - Xk||p  ||  ||.||Xk - Xk-1||p (*).
SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
20


Hệ phương trình tuyến tính

Với số ngun dương r nào đó ta xét:
||Xk+r-Xk||p = ||Xk+r-Xk+r-1+Xk+r-1-…+Xk+1-Xk||p
 ||Xk+r-Xk+r-1||p+…+||Xk+1-Xk||p.

Theo (*) ta có:
||Xk+r-Xk||  (||  || rp +||  || rp1 +…+||  ||p)||Xk-Xk-1||p
Cho r   thì Xk+r  X. Do ||  ||p < 1 nên ta có:
s = ||  || rp + ||  || rp1 + … + ||  ||p là tổng của dãy số nhân lùi vơ hạn
Do đó:
||X-Xk||p 
Và: ||X-Xk||p 

||  || p
1 ||  || p

||  || rp
1 ||  || p

||Xk-Xk-1||p.
||X1-X0||p.


Nếu X0 =  thì thay vào (2.5) ta được:
||X-Xk||p 

||  || rp
1 ||  || p

||X1 -  ||p 

||  || rp1
1 ||  || p

||  ||p.

Chú ý
Cho ánh xạ  (x) =  X +  .
Từ giả thiết ta có:
||  (x) -  (y)||p = ||  (X - Y)||p  ||  ||p||X - Y||.
2.2.5 Điểm dừng của phương pháp lặp đơn
-Để có Xk xấp xỉ nghiệm X với sai số  cho trước theo chuẩn p đã chọn thì số
bước lặp k cần thực hiện phải thỏa mãn bất đẳng thức sau:
||X - Xk||p 

||  || p
1 ||  || p

||Xk - Xk-1||p 

||Xk - Xk-1||p   tức là:

1 ||  || p

||  || p

.

SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
21


Hệ phương trình tuyến tính

Khi ||  ||p  1 thì
2

||X - Xk||p 

||  || p
1 ||  || p

||Xk - Xk-1||p  ||Xk - Xk-1||p.

Nên : ||Xk - Xk-1||p   .
Từ định lý (2.2.4.1) ta suy ra được bất đẳng thức với r nguyên

||  || 
p

1 ||  || p


r

||X1 - X0||p  

Nếu chọn X0 =  thì:

||  || 

r 1

p

1 ||  || p

||  ||  

  ||  || p (1 ||  || p

 r  ln
: ln ||  || p  + 1
||  || p



2.2.6 Thuật tốn, sơ đồ khối và chương trình
2.2.6.1

Thuật tốn

Input : Ma trận A cấp n*n, ma trận B cấp n*1.

Output : Hệ nghiệm X = (xi)n*1.
Quá trình thực hiện:
- Nhập ma trận A = (aij)n*n, ma trận B = (bi)n*1.
- Lặp i = 1 đến n.
- Gán si = ai1.
- Lặp i = 1 đến n.
- Lặp j = 1 đến n.
- si = si + aij.
- Nếu max|si |< 1.
- xi = bi.
- Lặp i = 1 đến n.
- Lặp j = 1 đến n.
SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
22


Hệ phương trình tuyến tính

- xi = bi + aij * xj.
- In nghiệm (xi)n*1.
- End.
2.2.6.2

Sơ đồ khối

SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Toán tin ứng dụng

23


Hệ phương trình tuyến tính

LAPDON
input(aij)n*n, (bi)n*1
i = 1, .., n
si = ai1
i = 1, .., n
j = 1, …, n
si = si + aij

max|si|<1

xi = bi
i = 1, …, n

j = 1, …, n
xi = bi + aij * xj
Printf (xi)n*1

End
SVTH:Nguyễn Thị Bích Ngọc

Lớp:49B-Tốn tin ứng dụng
24


Hệ phương trình tuyến tính


2.2.6.3 Chương trình
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<string.h>
float abs(float d)
{
if(d > 0)
return 1;
else
return -1;
}
float max(float a[10])
{
int i, j, n;
float max = a[0];
for(i = 0; i < n - 1; i + +)
{
if (a[i] > max)
max = a[i];
}
return max;
}
int main()
{
int i, j, n;
float a[10][10], b[10], s[10], x[10];
SVTH:Nguyễn Thị Bích Ngọc


Lớp:49B-Tốn tin ứng dụng
25


×