1. Trang chủ
  2. » Tất cả

Sáng kiến kn sử dụng phương pháp lặp đơn và lặp jacobi để giải hệ phương trình đại số tuyến tính

20 7 0

Đ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

Tiêu đề Sáng kiến KN Sử dụng Phương Pháp Lặp Đơn Và Lặp Jacobi Để Giải Hệ Phương Trình Đại Số Tuyến Tính
Trường học Trường Đại học Cần Thơ
Chuyên ngành Toán học
Thể loại Sáng kiến kinh nghiệm
Năm xuất bản 2023
Thành phố Cần Thơ
Định dạng
Số trang 20
Dung lượng 435,37 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MỞ ĐẦU Giải phương trình Đại số tuyến tính bằng phương pháp Gauss và Gauss – Jordan vẫn còn tồn tại một số nhược điểm sau Khối lượng tính toán lớn Mặc dù là phương pháp giải đúng, nhưng vẫn tồn tại sa[.]

Trang 1

MỞ ĐẦU

Giải phương trình Đại số tuyến tính bằng phương pháp Gauss và Gauss – Jordan vẫn còn tồn tại một số nhược điểm sau:

- Khối lượng tính toán lớn

- Mặc dù là phương pháp giải đúng, nhưng vẫn tồn tại sai số do quy tròn trong các bước tính,sai số tổng hợp đôi khi sẽ khá lớn Mặt khác, phương pháp này không thể khống chế sai số theo ý muốn tính toán

Vì vậy, người ta đã tìm kiếm những phương pháp gần đúng phương pháp lặp đơn và lặp Jacobi

ra đời để giảm bớt khối lượng tính toán và khống chế sai số tốt hơn

PHẦN I: LẶP ĐƠN

I Ý TƯỞNG CHUNG

Giống như phương pháp lặp để giải phương trình xg x( ), ta cũng tiến hàn lặp trên phương trình xx bằng cách:

Chọn giá trị nghiệm ban đầu xx0, thay lần lượt vào phương trình trên, ta được:

Ta cần xây dựng các công thức để tính toán điều kiện hội tụ và sai số

II PHƯƠNG PHÁP THỰC HIỆN

Bước 1: Từ phương trình xx , chọn giá trị nghiệm ban đầu xx0, thay liên tiếp vào phương trình, ta được dãy các vector lặp:

Bước 2: Làm liên tiếp như vậy, ta có biểu thức truy hồi:

1

x x 

Bước 3: Gọi x là vector lặp thứ k, nếu dãy vector lặp có giới hạn: k

*

lim k

  Thì giới hạn ấy là nghiệm đúng của phương trình Ax hay b xx

Lưu ý: Để tạo điều kiện thuận lợi cho lặp đơn, ta có một số cách để biến đổi phương trình từ

Ax về b xx,

Trang 2

trong đó:

1

n

1

;

n

 

 

  

 

 

Chẳng hạn, từ Ax  , cộng x vào hai vế, ta được: b

Ax   x b x

Từ đây, ta có hai cách khác nhau để tìm được ma trận  và :

Cách 1:

b

 

 

Cách 2:

b

 

III ĐIỀU KIỆN HỘI TỤ

1 Định nghĩa chuẩn của vector:

a) Định nghĩa

Với vector x, ta định nghĩa ‖x‖ là một số không âm thỏa mãn:

1 ‖x‖ ≥ 0, dấu “ = ” ⇔ =0

2 ‖ x‖ = | | ‖x‖ , k là hằng số

3 ‖x+y‖ ≤ ‖x‖ + ‖y‖

b) Một số chuẩn thường dùng với vector

+ ‖ ‖(1)=

1

| |

n

i i

x

+ ‖ ‖(2)=

1

| |

n

i i

x

+ ‖ ‖ (∞) = max {| 1|,| 2|,…,| |}

c) Sự hội tụ của vector về một vector:

Dãy vector {X(k)} được gọi là hội tụ tới vector X khi

( )

lim i k i

hoặc lim k 0

2 Định nghĩa chuẩn của ma trận:

a) Định nghĩa: Với là ma trận thực, ta định nghĩa ‖ ‖ là 1 số không âm thỏa mãn:

1 ‖ ‖ ≥ 0, dấu “ = ” ⇔ =0

2 ‖ ‖ = | | ‖ ‖ , k là hằng số

3 ‖ + ‖ ≤ ‖ ‖ + ‖ ‖

Trang 3

b) Một số chuẩn thường dùng của ma trận:

1

1

max

n

ij j

i

  : Chuẩn cột

1 2 2 2

,

n

ij

i j

A   a 

  : Chuẩn Euclide

1

max

n

ij i

j

  : Chuẩn hàng

3 Giới thiệu về chuẩn của ánh xạ tuyến tính liên tục

a, Ánh xạ tuyến tính liên tục

Phép ứng A từ không gian  vào không gian n  được gọi là một ánh xạ tuyến tính nếu nó có m

các tính chất sau đây

i, (A xy) A x( )A y( ) ,x y,   n

ii, (Ax)A x( ) ,   , xn

ta gọi các vectơ e1 1, 0, , 0 , e2 0,1, , 0 , , e n 0, 0, ,1 trong  là các vectơ đơn vị n Ánh xạ tuyến tính sẽ được biểu diễn qua ảnh của các vecto trục đơn vị theo công thức sau

A xx A ex A e  x A e ,  *

Mỗi A e là một phần tử trong  i  cho nên nó sẽ là một bộ gồm m số, ký hiệu là m

a a i1, i2, ,a in ta thiết lập một ma trận A gồm n hàng m cột, với các cột là bộ số

 i

A e tức là T  A e 1 ,A e 2 , ,A e n  , hay

n n

T

Ma trận này được gọi là ma trận của ánh xạ tuyến tính A nếu coi mỗi vecto là một mà trận cột thì ta có thế viết lại công thức  * dưới dạng đơn giản là:

Trang 4

 

A xTx với

1 2

n

x x x x

 

 

 

 

 

 

Khi n=m thì T là một ma trận vuông cấp n ánh xạ tương ứng với nó là một không gian  vào n

chính nó

b, Chuẩn của ánh xạ tuyến tính liên tục

Nếu A: X, X  Y, Y là ánh xạ tuyến tính liên tục thì ta định nghĩa chuẩn của A bởi:

 

0

sup x Y

x X

X x

A A

x

Từ định nghĩa này ta dễ thấy các tính chất sau

ii, nếu A tuyến tính liên tục thì

X Y

iii, nếu A tuyến tính và tồn tại số dương M sao cho

X Y

Thì A liên tục và AM

c, Liên hệ với phương pháp lặp đơn

Ta cần giả phương trình F x  , trong đó F(x) là một hàm trên không gian định chuẩn nào đó   0

và 0 được hiểu là phần tử 0 của không gian này ở đây ta xét không gian  thì 0 là vecto n

0, 0, , 0T ta biến đổi phương trình về dạng tương đương x=G(x) rồi thực hiện lặp đơn Ta có thể phát biểu định lý sau :

Định lý: giả sử y=G(x) là một hàm liên tục trên không gian định chuẩn nào đó và phép lặp

 1

xG x  n=1,2… hội tụ tới x* với xuất phát ban đầu x khi đó 0 x* là nghiệm của phương trình x=G(x), tức là ta có *  *

Trang 5

Chứng minh: từ x nG xn1 ,với lưu ý là hàm G(x) liên tục ,ta có :

lim n lim ( n ) lim n

4 Định lý về sự hội tụ của phương pháp:

Nếu có 1 chuẩn của thoả mãn  ( )p 1 thì phương trình Ax có nghiệm duy nhất b x* và dãy x( )k hội tụ tới x* theo chuẩn tương ứng

Chứng minh:

a) Phương trình Ax  có nghiệm duy nhất: b

Xét hệ thuần nhất :  0 hay xx

( )p ( )p ( )p ( )p

Theo giả thiết:  ( )pq1

( )

( )

0

p

p

q x

x

Hay nói cách khác: Nếu ma trận  thoả mãn  ( )p 1 thì: hệ xx chỉ có nghiệm tầm thường, hay ệ xx có nghiệm duy nhất

b) dãy x( )k hội tụ tới *

x theo chuẩn tương ứng

Ta có:

1

1

 

 

Do: lim k 1 lim k *

   

Như vậy: * *

x x 

Mặt khác, từ * *

x x , ta được:

( )

Truy hồi theo k , ta được:

1

k

Trang 6

Do 0q1 nên:

*

( ) 0

xx  khi k  

Hay lim k *

  là điều phải chứng minh

IV CÔNG THỨC SAI SỐ

Ta chứng minh hai công thức sai số sau:

*

1 ( ) ( )

*

1 0 ( ) ( )

1

1

k

q

q q

q

 Theo công thức truy hồi:

1

1

Trừ theo vế: x k1x k (x kx k1)

1

k k

Suy ra: x k1x kq x kx k1

Với lN* bất kỳ, ta được: x k l x k l 1 q x k l 1x k l 2

Sử dụng phép truy hồi, ta được: 1 l 1

x x  q xx

Mặt khác, xét:

k l k

Lấy chuẩn toàn bộ:

k l k

Hay: x k l x kx k l x k l 1  x k l 1x k l 2  x k1x k

x  x   q xx  đã chứng minh ở trên, ta được:

1

l

q

q

Cố định k và cho l   , ta được:

Trang 7

1 1

q

x x  q xx :

l

Thay lk , ta được: 1 1

k

k k

xx  qxx

1

q

*

k

Hay:

*

1 0

1

k k

q

q

PHẦN II: LẶP JACOBI

I ĐẶT VẤN ĐỀ

Lặp Jacobi cung cấp một cách xử lý khi chuẩn của  không thoả mãn điều kiện lặp đơn, bằng cách dựa vào tính chất chéo trội của ma trận

II CÁC LOẠI LẶP JACOBI

Tuỳ vào đề bài, ta có thể sử dụng lặp Jacobi đối với hai loại ma trận, đó là:

- Jacobi đối với ma trận chéo hàng

- Jacobi đối với ma trận chéo cột

1 Jacobi chéo hàng:

a) Nội dung phương pháp:

Cho ma trận:

1

n

, khi đó ta định nghĩa chéo trội hàng:

1,

n

j j i

 

  với i1,n

Với một ma trận chéo trội hàng thì hiển nhiên a ii0  i 1,n

Xét phương trình Ax , với b a  ii 0, chia cả hàng thứ i cho a ii

Các ma trận trở thành:

Trang 8

12 1

1

,

1

n

Khi đó, phương trình trở thành:

Trong đó:

*

0

0

0

n n

Các bước tiếp theo, ta tiến hành như đối với lặp đơn

b) Điều kiện hội tụ:

Do:

1, 1

n

j j

 

1, 1

*

1

1

n

ij

j j ii

a

a

 

 

Do đó, bằng cách lặp Jacobi, ta luôn thu được mà trận thoả mãn điều kiện lặp đơn

c) Công thức sai số:

Ta áp dụng công thức sai số giống như lặp đơn:

Trang 9

1 ( ) ( )

*

1 0 ( ) ( )

1

1

k

q

q

q

q

2 Jacobi chéo cột

a) Nội dung phương pháp

Cho ma trận:

1

n

, khi đó ta định nghĩa chéo trội cột:

ij 1,

, 1,

n jj

i i j

 

Với một ma trận chéo trội hàng thì hiển nhiên a ii0  i 1,n

Từ hệ phương trình: Ax , ta đặt ẩn phụ: b

'

1 11 1 '

2 22 2

'

n nn n

Hệ phương trình trở thành: * *

'

A xb

Trong đó:

22

1

2

11

11 22

1

1

,

1

n nn n nn

n

b

b

b

 

 Vậy nên:x'*x'*, với *  I A*, *b*

Khi đó:

22

*

11

0

0

0

n nn n nn

Trang 10

Ta tiến hành lặp đơn với ma trận  như trên, chú ý sau bước tìm x , ta cần trả lại ẩn x cho

phương trình

b) Điều kiện hội tụ

Ta đã có: ij

1,

, 1,

n jj

i i j

 

Suy ra:

 

1 1,

a

n

i i j jj

a

 

    (luôn thoả mãn điều kiện lặp đơn)

c) Công thức sai số

Ta thực hiện lặp đơn với *  I A*,* b* như trên, tuy nhiên ta có đáp số là nghiệm gần đúng của x chứ không phải nghiệm của hệ ban đầu Nên ta cần đánh giá để liên hệ 2 sai số: '

 

1

Như vậy với đầu vào sai số  :

 

 

 

*

* 1 1

min

k

k ii

i n

a

 

Lưu ý: sau khi giải ra nghiệm x ta phải đưa về nghiệm x là nghiệm ban đầu đề bài yêu cầu '

PHẦN III: THUẬT TOÁN, CHƯƠNG TRÌNH VÀ VÍ DỤ

I SƠ ĐỒ THUẬT TOÁN

Trang 11

Det(A)=0

: = ‖ ‖( ) < 1

: = ‖ ‖( ) < 1 A#At

Đ

S

Đ

s

s

Đ

Đ

: = − , : =

Cần tìm chuẩn khác để

thực hiện lặp đơn

In ra và

Nhập , , , ,

≔ 0

Type equation here

In ra cần tìm phương pháp khác

Đ

s

1 Lặp đơn

Trang 12

S

Đ

Đ

đ

Kết thúc

Nhập , , , ,

Lặp jacobi hàng

không trội hàng, không trội cột

Lặp jacobi cột

S

2 Lặp Jacobi

Chương trình chính

Trang 13

For i  1, n

 

   

: , ; , , : , / ; : / ;

tg A i i

j A i j A i j tg

b i b i tg end

Nhập , , , ,

In ra và

3 Lặp Jacobi chéo trội hàng

Trang 14

For i  1, n

duongcheo jA j j

, , : , / duongcheo ;

j A i j A i j j end

s

Nhập , , , ,

In ra và

4 Lặp Jacobi chéo trội cột

Trang 15

II CHƯƠNG TRÌNH

1 Lặp đơn

if det(A)==0

disp('can tim phuong phap khac de giai bai toan nay');

return;

end

k = 0;

if size(A) ~= size(A')

disp('A khong la ma tran vuong');

return;

end

% Kiem tra cach bien doi va chuan su dung thoa man

alpha = eye(length(A)) + A;

beta = -b;

if norm(alpha, inf) < 1

p = inf;

else if norm(alpha, 1) < 1

p = 1;

else if norm(alpha, 2) < 1

p = 2;

else alpha = eye(length(A)) - A;

beta = b;

if norm(alpha, inf) < 1

p = inf;

else if norm(alpha, 1) < 1

p = 1;

else if norm(alpha, 2) < 1

p = 2;

else disp('Can tim cach bien doi khac,chuan khac de lap don');

return;

end

end

end

end

end

end

%Qua trinh lap

q = norm(alpha, p);

TRAPPIST1 = true;

while TRAPPIST1

k = k + 1;

x = alpha*x0 + beta;

if q*norm((x - x0),p)/(1-q) < epsilon

TRAPPIST1 = false;

else x0 = x;

end

end

disp('sai so');

disp(q*norm((x - x0),p)/(1-q) );

disp('ma tran alpha');

Trang 16

disp(alpha);

disp('ma tran beta');

disp(beta);

disp('loai chuan duoc dung la');

disp(p);

disp('so buoc lap la');

disp(k);

disp('nghiem gan dung cua he phuong trinh la');

disp(x);

2 Lặp Jacobi

a) Chương trình chính

for i=1:length(A)

sum1=0;

for j=1:length(A)

sum1=sum1+abs(A(i,j));

end

sumh=sum1-abs(A(i,i));

if abs(A(i,i))<=sumh

u1=0;

break;

else

u1=1;

end

end

for j=1:length(A)

sum2=0;

for i=1:length(A)

sum2=sum2+abs(A(i,j));

end

sumc=sum2-abs(A(j,j));

if abs(A(j,j))<=sumc

u2=0;

break;

else

u2=1;

end

end

if u1==1 && u2==1

jacobihang(A, b, x0, epsilon);

else if u1==1 && u2==0

jacobihang(A, b, x0, epsilon);

else if u1==0&&u2==1

jacobicot(A, b, x0, epsilon);

else

hang,can tim phuong phap khac' );

end

end

end

Trang 17

b) Lặp Jacobi chéo trội hàng

function [x, k] = jacobihang(A, b, x0, epsilon)

k = 0;

for i = 1:length(A)

temp = A(i,i);

A(i,:) = A(i,:)/temp;

b(i) = b(i)/temp;

end

alpha = eye(length(A)) - A;

beta = b;

%Qua trinh lap

q = norm(alpha, inf);

%kiem tra sai so trong vong lap

TRAPPIST1 = true;

while TRAPPIST1

k = k + 1;

x = alpha*x0 + beta;

if (q*norm((x - x0),inf)/(1-q) < epsilon) TRAPPIST1 = false;

else x0 = x;

end

end

disp(k);

disp(x);

c) Lặp Jacobi chéo trội cột

function [x, k] = jacobicot(A, b, x0, epsilon)

k = 0;

for j = 1:length(A)

duongcheo(j) = A(j,j);

A(:,j) = A(:,j)/duongcheo(j);

end

alpha = eye(length(A)) - A;

beta = b;

%Qua trinh lap

q = norm(alpha, 1);

TRAPPIST1 = true;

epsilon = epsilon*(min(duongcheo(:)));

while TRAPPIST1

k = k + 1;

x = alpha*x0 + beta;

if (q*norm((x - x0),1)/(1-q) < epsilon)

TRAPPIST1 = false;

else x0 = x;

end

end

for j=1:length(A)

x(j) = x(j)/duongcheo(j);

end

disp(k);

disp(x);

Trang 18

III MỘT SỐ VÍ DỤ

1 Lặp đơn:

0.7x + 0.2x + 0.1x + 0.3x =1 0.1x + 0.8x + 0.3x + 0.2x + 0.1x 3 0.3x + 0.1x + 0.9x + 0.1x + 0.2x 5 0.2x + 0.1x + 0.2x + 0.7x + 0.1x 7 0.1x + 0.1x + 0.2x +

0.3x + 0.8x 1

 Với vector ban đầu là x 0 0 0 0 0 0T và  0,01 Sau khi sử dụng chương trình, ta được bảng sau:

( )

1

k

x 1 -1.9000 -2.3200 -3.1260 -3.3000 -3.4899 -3.5352 -3.5757 -3.5854 -3.5935 -3.5953 -3.5968 -3.5972 -3.5974 ( )

2

k

x 3 0.5000 0.8200 0.1420 0.0921 -0.0974 -0.1351 -0.1848 -0.1979 -0.2100 -0.2136 -0.2164 -0.2172 -0.2178 ( )

3

k

x 5 4.0000 5.6300 5.7500 6.2096 6.2964 6.4130 6.4413 6.4687 6.4760 6.4821 6.4838 6.4850 6.4854 ( )

4

k

x 7 7.5000 9.0100 9.1960 9.5351 9.5935 9.6695 9.6853 9.7019 9.7057 9.7092 9.7100 9.7107 9.7109 ( )

5

k

x 1 -2.3000 -2.3700 -3.1530 -3.2410 -3.4299 -3.4646 -3.5093 -3.5197 -3.5299 -3.5325 -3.5348 -3.5354 -3.5359 Sai Số 63 29.7 14.67 7.254 4.1364 1.7092 1.0488 0.4473 0.2459 0.1091 0.0542 0.0249 0.0114 0.0054

Như vậy, ta được hệ nghiệm gần đúng sau 14 vòng lặp:

1 2 3 4 5

3,5974

0, 2178

6, 4854

9, 7109 3,5359

x x x x x

 

 

 

  

Sai số 0, 0054

Trang 19

2 Lặp Jacobi chéo trội hàng

9x + 2x + x + 3x + x =9

2x + 8x + x + 2x + x 9

x + 3x + 7x + x + x 3

2x + x + 3x + 10x + 2x 9

2x + x + 3x + 2x + 9x 9

 

Với  0, 01 và chọn x 0 0 0 0 0 0T

Sau khi chạy chương trình, ta được kết quả sau:

( )

1

k

( )

2

k

( )

3

k

x -0.4286 -0.7821 -0.8795 -0.8890 -0.8909 -0.8884 -0.8898 -0.8885 -0.8896

( )

4

k

x -0.9000 -0.8839 -0.8341 -0.8140 -0.8132 -0.8111 -0.8127 -0.8115 -0.8125

( )

5

k

x -1.0000 -1.0044 -0.9535 -0.9310 -0.9295 -0.9271 -0.9287 -0.9274 -0.9285

Như vậy ta được hệ nghiệm gần đúng sau 9 vòng lặp:

1

2

3

4

5

1,1929

1, 2564

0,8896

0,8125

0,9285

x

x

x

x

x

 

  

  

Sai số 0, 0086

3 Lặp Jacobi chéo trội cột

Trang 20

1 2 3 4 5

7x + 3x + 2x + x +2 x =-5

x + 8x + x +2x +3x 9

2x + x + 9x + x +2x 1

2x + x + 2x + 8x + x 1

x + 2x + 2x +3x +9x 6

Chọn  0, 01, vector đầu là x 0 0 0 0 0 0T

Ta được kết quả sau 9 vòng lặp:

1

'k

2

'k

3

'k

4

'k

5

'k

Sai số

Ta thu được nghiệm x là

-1.2370 1.5569 0.4182 0.2672 -1.0571

x

Với sai số là 0, 067 0, 009

min(a ii)

Ngày đăng: 10/03/2023, 13:28

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w