1. Trang chủ
  2. » Giáo án - Bài giảng

GIỚI THIỆU PHƯƠNG PHÁP SỐ GIẢI HỆ PHƯƠNG TRÌNH TUYẾN TÍNH

7 128 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 146,06 KB

Nội dung

Ta đã biết hai cách giải hệ phương trình tuyến tính cỡ n×n. Đó là phương pháp khử Gauss và quy tắc Cramer. Khi hệ có nghiệm, các cách giải này cho ta nghiệm đúng sau một số hữu hạn bước (với giả thiết không có sai số làm tròn). Tuy nhiên các cách giải này thường chỉ áp dụng cho hệ có kích thước nhỏ. Giải hệ cỡ lớn, như hệ 30×30, theo quy tắc Cramer trên chiếc máy tính có tốc độ tính 20 nghìn tỉ phép tínhgiây mất 378080 tỉ năm. Ngoài ra, kết quả nhận được có thể sai lệch so với nghiệm đúng rất nhiều do những sai số xuất hiện quá nhiều khi máy tính làm tròn. Ngay cả phương pháp khử Gauss, mặc dù có số phép tính ít hơn quy tắc Cramer rất nhiều, cũng không hiệu quả trong trường hợp hệ cỡ lớn hoặc ma trận hệ số có nhiều số 0. Trong phần này ta nghiên một số phương pháp hiệu quả hơn để giải hệ phương trình tuyến tính cỡ n×n. Đó là các phương pháp giải gần đúng với độ chính xác tùy ý.

Trang 1

C hương 10

GIỚI THIỆU PHƯƠNG PHÁP SỐ GIẢI HỆ PHƯƠNG TRÌNH TUYẾN TÍNH _

Ta đã biết hai cách giải hệ phương trình tuyến tính cỡ n×n Đó là phương pháp khử Gauss và quy

tắc Cramer Khi hệ có nghiệm, các cách giải này cho ta nghiệm đúng sau một số hữu hạn bước (với giả thiết không có sai số làm tròn) Tuy nhiên các cách giải này thường chỉ áp dụng cho hệ có kích thước nhỏ Giải hệ cỡ lớn, như hệ 30×30, theo quy tắc Cramer trên chiếc máy tính có tốc độ tính 20 nghìn tỉ phép tính/giây mất 378080 tỉ năm Ngoài ra, kết quả nhận được có thể sai lệch so với nghiệm đúng rất nhiều do những sai số xuất hiện quá nhiều khi máy tính làm tròn Ngay cả phương pháp khử Gauss, mặc dù có số phép tính ít hơn quy tắc Cramer rất nhiều, cũng không hiệu quả trong trường hợp hệ cỡ lớn hoặc ma trận hệ số có nhiều số 0 Trong phần này ta nghiên một số

phương pháp hiệu quả hơn để giải hệ phương trình tuyến tính cỡ n×n Đó là các phương pháp giải

gần đúng với độ chính xác tùy ý

10.1  KIẾN THỨC CHUẨN BỊ

Tất cả các phương pháp giải gần đúng hệ phương trình ta sẽ trình bày đều có chung một đặc điểm là xây dựng dãy vectơ hội tụ tới nghiệm đúng Bây giờ ta chính xác hóa khái niệm dãy vectơ, sự hội

tụ

Giới hạn của dãy vect ơơơơ

Cho n dãy số { ( )

1

k

x }, { ( )

2

k

x }, , { (k)

n

x } với k ∈N và (k)

i

x là số hạng thứ k của dãy số thứ i Với mỗi

k , ký hiệu v (k) là vectơ ( )

1

k

x , ) 2

k

x , , (k)

n

x ) ∈ Rn, ta có dãy vectơ v(0), v(1), v(2), Dãy này được viết

tắt là {v (k)} Như vậy một dãy vectơ trong Rn chẳng qua là n dãy số được cho đồng thời

Khi k → ∞, nếu mỗi thành phần thứ i của vectơ v (k) có giới hạn là αi , thì v = (α1, α2, , αn) được gọi là giới hạn của dãy {v (k) }, và ta nói {v (k)} hội tụ tới v

Ví dụ 1 Khi k → ∞, dãy vectơ {v (k) = 

2 , 1 2 ,

1

k k

k } hội tụ tới v = (0, 2, 2)

Trang 2

Chuẩn của vect ơơơơ và chuẩn của ma trận

Trong Rn ta đã định nghĩa độ dài của vectơ v theo tích vô hướng (Xem 6.1) Độ dài này có ba tính

chất giống như tính chất của các vectơ hình học

(i) ||v|| ≥ 0, với dấu "=" xảy ra khi và chỉ khi v = 0

(ii) ||cv|| = |c|||v|| đối với vô hướng c bất kỳ

(iii) ||v + w|| ≤ ||v|| + ||w|| (bất đẳng thức Tam giác)

Nhờ khái niệm độ dài của vectơ, ta có thể hiểu đơn giản {v (k) } hội tụ tới v có nghĩa là

||v (k) - v||→ 0 khi k → ∞

Tuy nhiên, độ dài vectơ định nghĩa theo tích vô hướng có nhược điểm là tính toán cồng kềnh, không thuận tiện trong thực hành, nên người ta đi tìm những định nghĩa độ dài khác tốt hơn Sau đây là một định nghĩa mới: Với v = (x1, x2, , x n)∈Rn , ta gọi max{|x1|, , |x n |} là độ dài của v Độ dài này cũng thỏa mãn ba tính chất (i), (ii), (iii) nói trên, nhưng nói chung với mỗi v∈R n độ dài này

khác ||v|| Vì vậy, để phân biệt ta gọi nó là chuẩn vô hạncủa vectơ, và ký hiệu là

||v|| = max{|x1|, , |x n|}

Đối với chuẩn này ta có tiêu chuẩn hội tụ

Định lý 10.1 {v (k) } hội tụ tới v nếu và chỉ nếu ||v (k) - v||→ 0 khi k →∞

Sau này, trong lúc xác lập sự hội tụ của một dãy vectơ tới nghiệm đúng và đánh giá sai số của nghiệm xấp xỉ so với nghiệm đúng ta cũng cần đến khái niệm chuẩn của ma trận Chuẩn vô hạn của ma trận thực B = (b ij)n ×n , ký hiệu ||B||∞, là số thực

||B||∞ = max

=

=

=

n

j nj n

j j n

j

b

1

1 2

1 1

|

| , ,

|

| ,|

Ví dụ 2

B =

0 02 0 01 0

05 0 0 03 0

02 0 06 0 0

có ||B||∞ = max{0.08; 0.08; 0.03} = 0.08

Trang 3

10.2  PHƯƠNG PHÁP LẶP ĐƠN

Nội dung phương pháp lặp đơn

Cho hệ Ax = b cỡ n×n Có nhiều cách để đưa hệ này về dạng x = Bx + g tương đương với Ax = b Chẳng hạn, ta tách A thành S - T, trong đó S khả nghịch, thì Ax = b tương đương với Sx = Tx + b

Đặt B = S-1T , g = S-1b , ta có hệ x = Bx + g

Ta xây dựng dãy vectơ {v (k) }, như sau: Cho trước v(0) rồi tính v (k) theo công thức

v (k) = Bv (k-1) + g (k = 1, 2, ) (1)

Ta gọi (1) là công thức tính lặp , k ≥ 1 là số lần lặp Phương pháp tính {v (k)} như thế này được gọi

phương pháp lặp đơn

Nếu {v (k)} hội tụ, thì ta nói phương pháp lặp đơn hội tụ Nếu {v (k) } hội tụ tới v, thì v là nghiệm của Ax = b Thật vậy, chuyển qua giới hạn ở hai vế của (1) ta có v = Bv + g, nghĩa là v là nghiệm của x = Bx + g, tức cũng là nghiệm của Ax = b Với ε > 0 cho trước, nếu k đủ lớn ta có

||v (k) - v|| ≤ ε Khi đó ta nói v (k) nghiệm xấp xỉ của nghiệm đúng với độ chính xác ε

Trong thực tế, ta bắt buộc phải dừng tính toán ở bước thứ k nào đó và xem v (k) là nghiệm gần đúng

Ví dụ 1 Cho hệ phương trình

4x1 + 0.24x2 - 0.08x3 = 8

0.09x1 + 3x2 - 0.15x3 = 9

0.04x1 - 0.08x2 + 4x3 = 20 Lần lượt chia phương trình 1, 2, 3 cho 4, 3, 4 rồi chuyển vế, ta có hệ

x1 = -0.06x2 + 0.02x3 + 2

x2 = -0.03x1 + 0.05x3 + 3

x3 = -0.01x1 + 0.02x2 + 5

Hệ này có dạng x = Bx + g, với

B =

0 02 0 01 0

05 0 0 03 0

02 0 06 0 0

và g =

5 3

2

Với v (k) = ( ( )

1

k

x , )

2

k

x , ( ) 3

k

x ), v (k-1) = ( ( 1 )

1

k

x , ( 1 )

2

k

x , ( 1 )

3

k

x ) công thức (1) cụ thể là

) ( 1

k

x = -0.06 ( 1 )

2

k

x + 0.02 ( 1 )

3

k

x + 2

) (

2k

x = -0.03 ( 1 )

1

k

x + 0.05 ( 1 )

3

k

x + 3

x3(k) = -0.01 ( 1 )

1

k

x + 0.02 ( 1 )

2

k

x + 5

Khởi đầu ta lấy v(0) = (2, 3, 5) Thay v(0) vào vế phải của công thức này ta tính được v(1) = ( ( 1 )

1

x , ( 1 ) 2

x ,

)

1

(

3

x ) với

( 1 ) 1

x = -0.06(3) + 0.02(5) + 2 = 1.92

x(21) = -0.03(2) + 0.05(5) + 3 = 3.19

x3(1) = -0.01(2) + 0.02(3) + 5 = 5.04

Trang 4

Sự hội tụ của phương pháp lặp đơn và đánh giá sai số của nghiệm xấp xỉ

Dưới đây là điều kiện đủ cho sự hội tụ của phương pháp lặp đơn áp dụng cho phương trình x = Bx +

g với B = (b ij)n ×n

Định lý 10.2 Nếu ||B||<1, thì với mọi v(0) ∈Rn cho trước dãy {v (k)} xác định bởi

v (k+1) = Bv (k) + g (k = 0, 1, )

hội tụ tới nghiệm duy nhất v của x = Bx + g Hơn nữa ta có đánh giá sai số

||v (k) - v||∞ ≤

−|| ||

1

||

||

B

B k

||v(1) - v(0)||∞ (2)

Nhận xét

1) Với điều kiện của Định lý 10.2, với v(0) và ε > 0 chọn trước, muốn xác định số lần lặp k để

nghiệm xấp xỉ đạt độ chính xác ε (tức là ||v (k) - v|| < ε), ta chỉ cần tính v(1) rồi tìm k nhờ giải bất

phương trình

−|| ||

1

||

||

B

B k

||v(1) - v(0)||∞ ≤ε

2) Sai số trong quá trình tính toán không ảnh hưởng đến kết quả cuối cùng vì nếu ở một bước nào

đó có sai số thì lại xem đó là xấp xỉ ban đầu v(0) Vì vậy, người ta nói rằng phương pháp lặp đơn có khả năng tự sửa sai

Ví dụ 2 Hệ phương trình trong Ví dụ 1 có ||B||∞ = 0.08 < 1, nên ở đây phương pháp lặp đơn hội tụ

Ta có thể đánh giá sai số của v(3) so với nghiệm đúng v theo (2):

v(1) - v(0) = (-0.08, 0.19, 0.04)

||v(3) - v||∞ ≤

−|| ||

1

||

|| 3

B

B

||v(1) - v(0)||∞ =

08 0 1

08

0 3

− max{0.08; 0.19; 0.04} =

08 0 1

08

0 3

− 0.19 ≈ 10-4

Độ chính xác gần 10-4, nên khá là cao

Phương pháp Jacobi

Nếu trong hệ Ax = b ma trận A có tất cả các phần tử trên đường chéo khác 0, ta tách A thành hiệu

S - T, trong đó

S =

nn a

a a

O

22 11

, T =

0

0

0

2 1

2 21

1 12

n n

n n

a a

a a

a a

M O

thì Ax = b tương đương với Sx = Tx + b Đặt

Trang 5

B = S-1T =

0

0

0

2 1

22

2 22

21

11

1 11

12

nn n

nn n

n n

a

a a

a

a

a a

a

a

a a

a

M O M

và g = S-1b,

ta có hệ tương đương x = Bx + g Phương pháp lặp đơn tiến hành theo công thức v (k+1) = Bv (k) + g

được gọi là phương pháp Jacobi

Trong Ví dụ 1 ta đã dùng phương pháp Jacobi

Phương pháp Jacobi sẽ hội tụ, nếu A = (a ij)n ×nma trận đường chéo trội , tức là với mọi i =

1, , n,

|a ii| > ∑

=

n

i j j ij a

1

|

|

Thật vậy, tổng trị tuyệt đối của các phần tử trên mỗi hàng của B nhỏ hơn 1, nên ||B||∞ < 1 Do đó, theo Định lý 10.2, phương pháp lặp đơn

v (k+1) = Bv (k) + g hội tụ với mọi v(0) ∈Rn

Trong Ví dụ 1, ma trận hệ số của hệ phương trình là ma trận đường chéo trội, nên phương pháp này hội tụ

10.3  PHƯƠNG PHÁP SEIDEL

Nội dung phương pháp Seidel

Để dễ hình dung nội dung của phương pháp Seidel, ta quay lại Ví dụ 1 ở 10.2 Trong phương pháp

lặp đơn v (k) = ( ( )

1

k

x , ( ) 2

k

x , ( ) 3

k

x ) được tính qua v (k-1) = ( ( 1 )

1

k

x , ( 1 )

2

k

x , ( 1 )

3

k

x ) nhờ công thức tính lặp

) ( 1

k

x = -0.06 ( 1 )

2

k

x + 0.02 ( 1 )

3

k

x + 2

) (

2k

x = -0.03 ( 1 )

1

k

x + 0.05 ( 1 )

3

k

x + 3

x3(k) = -0.01 ( 1 )

1

k

x + 0.02 ( 1 )

2

k

x + 5 Người ta cải tiến phương pháp lặp đơn này như sau: khi tính )

2k

x sử dụng ngay ( )

1k

x vừa tính được,

khi tính ( )

3

k

x sử dụng ngay ( )

1

k

x , ( ) 2

k

x vừa tính được Cụ thể là ta tính v (k) = ( ( )

1

k

x , ( ) 2

k

x , ) 3

k

x ) qua

v (k-1) = ( ( 1 )

1

k

x , ( 1 )

2

k

x , ( 1 )

3

k

x ) theo các công thức

) (

1k

x = -0.06 ( 1 )

2

k

x + 0.02 ( 1 )

3

k

x + 2

) ( 2

k

x = -0.03 ( )

1

k

x + 0.05 ( 1 )

3

k

x + 3

x3(k) = -0.01 ( )

1k

x + 0.02 ( )

2k

x + 5

Với v(0) = (2, 3, 5), ta tính được v(1) = ( ( 1 )

1

x , ( 1 ) 2

x , ( 1 ) 3

x ) với

Trang 6

) 1 ( 1

x = -0.06(3) + 0.02(5) + 2 = 1.92

x(21) = -0.03(1.92) + 0.05(5) + 3 = 3.1924

x3(1) = -0.01(1.92) + 0.02(3.1924) + 5 = 5.044648 Cách làm này được gọi là phương pháp Seidel (một biến dạng của phương pháp lặp đơn) Ý chính

của phương pháp Seidel là các thành phần vừa tính được của v (k) được sử dụng ngay để tính thành phần tiếp theo của nó

Ưu điểm của phương pháp Seidel là tiết kiệm được bộ nhớ trong máy tính và nói chung phương pháp Seidel hội tụ nhanh hơn phương pháp lặp đơn

Sự hội tụ của phương pháp Seidel và đánh giá sai số của nghiệm xấp xỉ

Dưới đây là điều kiện đủ cho sự hội tụ của phương pháp Seidel áp dụng cho phương trình x = Bx +

g với B = (b ij)n ×n

Định lý 10.3 Nếu ||B|| <1, thì với mọi v(0) ∈Rn phương pháp Seidel hội tụ tới nghiệm duy nhất v của x = Bx + g Hơn nữa ta có đánh giá sai số

||v (k) - v||∞ ≤

µ

µk

1 ||v

(1) - v(0)||∞ (3)

trong đó µ =

i

i n

β

≤ 1

max

1 với αi = ∑−

=

1 1

|

|

i

j ij

b , βi = ∑

=

n

i ij

b |

| (α1 = 0)

Phương pháp Gauss - Seidel

Cho hệ Ax = b với A có tất cả các phần tử trên đường chéo khác 0 Giống như phương pháp Jacobi,

ta đưa nó về phương trình x = Bx + g Phương pháp Seidel áp dụng cho phương trình x = Bx + g

được gọi là phương pháp Gauss - Seidel

Nếu A là ma trận đường chéo trội, thì ||B||∞ < 1 (Trong phần Phương pháp Jacobi đã nói) Vì

vậy, theo Định lý 10.3 phương pháp Gauss-Seidel hội tụ với mọi v(0) ∈Rn

Ví dụ Xét hệ phương trình trong Ví dụ 1 của 10.2 Vì ||B||∞ = 0.08 < 1, nên ở đây phương pháp

Gauss - Seidel hội tụ Ta có thể đánh giá sai số của v(3) so với nghiệm đúng v theo (3):

v(1) - v(0) = (-0.08; 0.1924; 0.044648)

||v(1) - v(0)||∞ = max{0.08; 0.1924; 0.044648} = 0.1924

β1 = 0.08, α1 = 0; β2 = 0.05, α2 = 0.03; β3 = 0, α3 = 0.03

µ =

i

i

β

≤ 1

max

3

1 = max{0.08; 0.0515463; 0} = 0.08

Trang 7

||v(3) - v||∞ ≤

µ

µ

1 ||v

(1) - v(0)||∞ =

08 0 1

08

0 3

− 0.1924 ≈ 10-4

Độ chính xác gần 10-4, nên khá là cao

NHỮNG Ý CHÍNH TRONG BÀI GIẢNG TUẦN 13

1 Chuẩn vô hạn của vectơ và ma trận vuông

2 Nội dung của phương pháp lặp đơn Sự hội tụ của phương pháp lặp đơn và đánh giá sai số của

nghiệm xấp xỉ Phương pháp Jacobi

3 Nội dung của phương pháp Seidel Sự hội tụ của phương pháp Seidel và đánh giá sai số của

nghiệm xấp xỉ Phương pháp Gauss - Seidel

Ngày đăng: 19/04/2019, 10:55

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w