1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm nghiệm xấp xỉ hệ phương trình tuyến tính đại số

26 694 1

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 752,76 KB

Nội dung

Tìm nghiệm xấp xỉ hệ phương trình tuyến tính đại số

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

KHOA TOÁN TIN ỨNG DỤNG

- -

Đề tài: Tìm nghiệm xấp xỉ hệ phương trình tuyến tính đại số

Giáo viên hướng dẫn: Nguyễn Hữu Điển

Sinh viên thực hiện : Lê Minh Cường Lớp: Toán – Tin 1-k51

Hà Nội, tháng 11 năm 2009

Trang 2

LỜI NÓI ĐẦU

Nội dung chủ yếu tập trung vào phần giải thuật và cách cài đặt nó trên chương trình ứng dụng Maple, để giải quyết bài toán tìm nghiệm xấp xỉ hệ phương trình tuyến tính đại số

Ax = b bằng các phương pháp như Jacobi hay Gauss_Seidel …

Phiên bản sử dụng là Maple 12.Ở đây xin được trình bày 5 thuật toán chính và cài đặt

3 thuật toán đầu tiên bằng Maple 12

Tuy nhiên do khả năng đọc hiểu tiếng Anh còn hạn chế nên có thể có những chỗ giải thích chưa thoả đáng,rất mong được sự góp ý của thầy cô và bạn bè Xin chân thành cám ơn sự giúp đỡ chỉ bảo tận tình của phó giáo sư Nguyễn Hữu Điển

Mọi đóng góp xin gửi về địa chỉ email : cuongleminh.hut@gmail.com hoặc

thecatmc@yahoo.com

Một lần nữa xin chân thành cám ơn

Sinh viên trình bày: Lê Minh Cường Lớp : Toán Tin 1 – K51

Trang 3

I.Chuẩn của Vecto và Ma Trận :

1.Chuẩn Vecto :

Để định nghĩa hàm khoảng cách trong không gian R chúng ta sử dụng khái niệm n

về chuẩn, được định nghĩa như sau :

1.1 Định nghĩa 1:Chuẩn của một vecto trong R ;ký hiệu ;là một hàm n

x x

l

1

2 2

n

i x x

n

x x

n

y y

y= 1, , trong không gian Ta có bất đẳng thức :

n

R

y x y x

y x y

i i n

i i n

i i i

1

2 1

2 1

x= 1, , và ( )t

n

y y

y= 1, , trong không gian Khoảng cách giữa x và y được định nghĩa theo các chuẩn là :

x trong R được gọi là hội tụ đến x với n

chuẩn ⋅ khi ∀ε >0,tồn tại số nguyênN( )ε thỏa mãn :

x k − < ;∀ ≥ 1.6 Định lý : Dãy vecto { }( ) ∞

=1

k k

x hội tụ đến x trong R với chú ý là chuẩn n ,khi ∞

Trang 4

Az A

II.Trị riêng và vecto riêng :

Trong trường hợp A là ma trận vuông n chiều,luôn tồn tại một vecto x song song với

Ax nghĩa là tồn tại hằng số λsao cho Axx.Từ đó ta có : (A−λI)x=0.Ta tìm hiểu về mối quan hệ mật thiết giữa λvà sự hợp lý trong thuật toán lặp sẽ hội tụ

1.Định nghĩa 1 : Nếu A là ma trận vuông thì Đa thức đặc trưng của A là :

110

201

A

Trong Maple,ta dùng câu lệnh with()để truy xuất gói lệnh linalg (viết tắt của

Linear Algebra) và sử dụng hàm Eigenvals(A) để tính trị riêng của ma trận A :

Trang 5

4 Định nghĩa 3 : Bán kính quy chiếu ρ( )A của ma trận A được định nghĩa là

ρ( )A =maxλ với λlà trị riêng của A

Đối với λlà giá trị phức thì λ =α +βi = α2 +β2

5 Định lý : Nếu A là ma trận vuông n chiều thì :

121

011

Trang 6

Hiển thị các trị riêng của ma trận A t A

Ngoài ra ta cũng có thể tìm được giới hạn của 1 vecto bằng hàm VectorLimit nằm trong

gói câu lệnh NumericalAnalysis.Ta dùng cú pháp sau : with(Student[NumericalAnalysis])

NumberOfSignificantDigits, PolynomialInterpolation, Quadrature,

RateOfConvergence,

RelativeError, RemainderTerm, Roots, RungeKutta, Secant, SpectralRadius, Steffensen, Taylor,

TaylorPolynomial, UpperBoundOfRemainderTerm, VectorLimit]

Gói lệnh Student hỗ trợ cho việc dạy và học toán

• Từ Maple 8, gói lệnh Student được phát triển từ gói lệnh student trước đó nhằm hỗ trợ cho việc dạy và học toán ở đại học và phổ thông Khai thác khả năng của gói lệnh này sẽ đem đến cho giáo viên rất nhiều công cụ hỗ trợ mới trong phương pháp dạy học Có thể nói rằng gói lệnh này đã đề cập đến tất cả các nội dung toán học của đại học và phổ

Trang 7

thông, cung cấp nhiều lệnh và thủ tục cho các phép toán và algorithm xuất hiện trong chương trình giảng dạy, cung cấp nhiều công cụ tương tác dưới dạng Maplet và hỗ trợ việc làm

từng bước các phép toán cơ bản của vi tích phân

• Gói lệnh Student có 3 gói lệnh con là

Trang 8

> with(Student[NumericalAnalysis]);

> vectorlimit1:=VectorLimit(v,k);

Ta xét ma trận sau và tìm chuẩn của nó :

> 1,4]]);

Trang 9

XO i,1≤ ≤ ( )0

x

XO= ;sai số cho phép TOL;số lần lặp lớn nhất N

- Đầu ra : các nghiệm xấp xỉ hoặc thông báo “Số lượng tối đa của phép lặp đã bị vượt quá”

n

x x

j ij j i

b XO a x

Bước 4 : Nếu xXO <TOLthì prinf(x1,x2, ,x n);

STOP.(thoát khỏi chương trình con) Bước 5 : Update k = k+1

Bước 6 : Tính toán vecto XO

XO i = ; với x i i=1 …, ,n

Bước 7 : Output “Số lần lặp tối đa đã bị vượt quá!”

STOP

Trang 10

local AA, B, OK, N, I, J, X0, X1, TOL, NN, K, ERR, S, X; with(LinearAlgebra);

TOL XO

Output(‘x1, ,x n’) STOP

1+

= k k

Tính các XO i = x i

F

Trang 11

A:=Matrix(4,4,[[10,-1,2,0],[-1,11,-1,3],[2,-1,10,-> if Determinant(A)=0 then print("There is no unique solution.")

else print("There is a unique solution.") fi;

Trang 13

8 [ 1.00062513, 1.99867030, -0.99903558, 0.99888839]

9 [ 0.99967415, 2.00044767, -1.00036916, 1.00061919]

10 [ 1.00011860, 1.99976795, -0.99982814, 0.99978598] Maximum Number of Iterations Exceeded

2.Thuật toán Lặp Gauss-Seidel :

Giải bài toán Ax=bvới xấp xỉ gần đúng là x( )0

- Đầu vào : Số lượng phương trình và nghiệm ;các phần tử của

ma trận A;các thành phần

n a ij,1≤ ,i jn n

i

b i,1≤ ≤ của vecto b ;các thành phần

của vecto

n i

XO i;1≤ ≤ XO=x( )0 ;sai số cho phép TOL;Số lần lặp lớn nhất N

- Đầu ra : các nghiệm xấp xỉ hoặc thông báo “Số lượng tối đa của phép lặp đã bị vượt quá”

n

x x

x1, 2, ,

Thuật toán :

Bước 1 : Đặt k = 1

Bước 2 : Trong khi (kN) thì thực hiện từ Bước 3 đến Bước 6

Bước 3 : Cho i chạy từ 1 đến n , ta tính các giá trị

( )

ii

i j

i n

i j

j ij j

ij i

a

b XO a x

Trang 14

local AA, B, OK, N, I, J, X0, X1, TOL, NN, K, ERR, S, X;

T

TOL XO

STOP

1+

= k k

Tính các XO i = x i

F

Trang 16

> 1],[0,3,-1,8]]);

A:=Matrix(4,4,[[10,-1,2,0],[-1,11,-1,3],[2,-1,10,-> if Determinant(A)=0 then print("There is no unique solution.")

else print("There is a unique solution.") fi;

Từ đây ta thấy giải thuật Gauss-Seidel có tốc độ hội tụ nhanh hơn giải thuật Jacobi

3.Thuật toán SOR :

Giải bài toán Ax=bvới tham số ωvà xấp xỉ gần đúng ban đầu x( )0

- Đầu vào : Số phương trình và số ẩn ; các phần tử n a ij,1≤ ,i jn của ma trận A;các thành phần b i,1≤in của vecto b ;các thành phần của vecto

; tham số

n i

XO i;1≤ ≤

( ) 0

x

XO= ω ; sai số cho phép TOL ; số lần lặp lớn nhất N

- Đầu ra : các nghiệm xấp xỉ hoặc thông báo “Số lượng tối đa của phép lặp đã bị vượt quá”

n

x x

x1, 2, , Thuật toán :

Trang 17

j ij j

i

j ij j i

b XO a x

a XO

1

ωω

Bước 4 : Nếu xXO <TOL thì prinf(x1,x2, ,x n);STOP

local AA, B, OK, N, I, J, X0, X1, TOL, NN, K, ERR, S,

Trang 20

Thuật toán SOR ngắn gọn hơn nhờ vào tham số Omega tốc độ làm việc và hội

tụ của thuật toán SOR có thể nói là nhanh hơn khi ta tăng Omega

Xấp xỉ nghiệm của hệ tuyến tính Ax= b

- Đầu vào : Số phương trình và số ẩn ; các phần tử n a ij,1≤ ,i jn của ma trận A;các thành phần b i,1≤in của vecto b ; số lần lặp lớn nhất N ; sai số cho phép TOL ; độ chính xác chữ số t

- Đầu ra : xấp xỉ hoặc thông báo về số lần lặp bị vượt quá và một xấp xỉ COND gần đến

n

i xx xx

xx= ,…, )

( )A

K∞ Thuật toán :

Bước 0 : Giải hệ tìm nghiệm bằng phép loại trừ Gauss , bằng cách giữ lại các hệ số nhân

b

Ax= x1,…,x n

1,,2,1,,,2,1,j=i+ i+ n i= n

i b a x r

1

Bước 4 : Giải hệ tuyến tínhAy=rsử dụng phép loại trừ Gauss như ở Bước 0 Bước 5 : Tính các xx i với i=1 …, ,n

i i

T

TOL XO

STOP

1+

= k k

Tính các XO i = x i

F

Trang 21

Bước 6 : Nếu k =1 thì đặt t

xx

y COND= ×10

Bước 7 : Nếu xxx∞ <TOL thì OUTPUT(xx);

OUTPUT(COND);STOP Bước 8 : Đặt k = k+1

Bước 9 : Tính các x i =xx i với i=1, ,n

Bước 10 : OUTPUT(‘Số lần lặp tối đa bị vượt quá!’)

OUTPUT(COND);

STOP

Trang 22

’)

n

n r r x

= k k

( )k

Av Av

u= =

( )k ( )k ( )k n

j j

u v t

r

r= k = k−1 − ( )k C r( )k

x1, , ; 1, ,

STOP

TFF

Trang 23

5.Thuật toán Gradient điều kiện kết hợp :

Giải bài toán Ax=b với ma trận điều kiện C− 1 và xấp xỉ gần đúng x( )0

o Đầu vào : số lượng phương trình là số chưa biết n ; ma trận A với các thành phần a ij,1≤ ,i jn ; vecto b với thành phần ; ma trận hệ số điều kiện với các thành phần là

n j

Bước 3 : Kiểm tra điều kiện

Trong khi kN thì làm từ Bước 4 đến Bước 7

Bước4 : If vTOL then

printf (Nghiệm là : x1,x2, ,x n)

printf (với phần dư là : r1,r2, ,r n)

STOP Else (Sang Bước 5) Bước 5 : Tính

( )k

Av Av

u= =

n j j j

u v

w

1

2

βBước 6 : Kiểm tra điều kiện

If β〈TOL then printf (Nghiệm là : x1,x2, ,x n)

printf (với phần dư là : r1,r2, ,r n) STOP

Else (Sang bước 7) Bước 7 : Tính

α

β

=

=s k s

v

v= + = − 1 +

Trang 24

Quay lại Bước 3 Bước 8 : Kiểm tra điều kiện

If (kn then

Printf(Số lượng tối đa của phép lặp đã bị vượt quá ! ) STOP

Trang 25

’)

n

n r r x

= k k

( )k

Av Av

u= =

( )k ( )k ( )k n

j j

u v t

r

r= k = k−1 − ( )k C r( )k

x1, , ; 1, ,

STOP

TFF

Trang 26

Chú ý là thuật toán sẽ hội tụ khi và chỉ khi bán kính chiếu của ma trận lặp p < 1,p càng nhỏ thì thuật toán hội tụ càng nhanh

Phân tích các vecto còn lại của thuật toán Gauss lên phép lặp SOR, điều này ko làm thay đổi ảnh hưởng của tham số w đến tốc độ hội tụ của thuật toán

Thuật toán lặp và cải biên được sử dụng rộng rãi để giải các hệ tuyến tính, điều này phát sinh trong nghiệm thực của bài toán

V.Tài liệu tham khảo:

1 Hướng dẫn và sử dụng Maple V của thầy Nguyễn Hữu Điển

1.Tra cứu trên mạng bằng :

• www.google.com.vn

• http://www.thuvienkhoahoc.com

• Các forum về Lập trình

2.Tài liệu tham khảo :

• Giải tích số - Nguyễn Trọng Vinh

• Numerical Analysis

• Lập trình MathLab

• Lập trình Mathematica

Ngày đăng: 22/05/2016, 09:03

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w