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 1MỞ ĐẦ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 xx 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 xx , 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 xx
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 xx,
Trang 2trong đó:
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 3b) 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, (A x)A x( ) , , x n
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 x x A e x 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 x Tx 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à A M
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, , 0T 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
x G 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 5Chứng minh: từ x n G x n1 ,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 xx
( )p ( )p ( )p ( )p
Theo giả thiết: ( )p q1
( )
( )
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ệ xx chỉ có nghiệm tầm thường, hay ệ xx 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 6Do 0q1 nên:
*
( ) 0
x x 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 k1x k (x kx k1)
1
k k
Suy ra: x k1x k q x kx k1
Với lN* bất kỳ, ta được: x k l x k l 1 q x k l 1x k l 2
Sử dụng phép truy hồi, ta được: 1 l 1
x x q x x
Mặt khác, xét:
k l k
Lấy chuẩn toàn bộ:
k l k
Hay: x k l x k x k l x k l 1 x k l 1x k l 2 x k1x k
x x q x x đã chứng minh ở trên, ta được:
1
l
q
q
Cố định k và cho l , ta được:
Trang 71 1
q
x x q x x :
l
Thay lk , ta được: 1 1
k
k k
x x q x x
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 i1,n
Với một ma trận chéo trội hàng thì hiển nhiên a ii0 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 812 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 91 ( ) ( )
*
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 ii0 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 x b
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 10Ta 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 11Det(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 j A 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 15II 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 16disp(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 17b) 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 18III 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 0T 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 192 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 0T
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 201 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 0T
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)