* Ngược lại, có nghĩa là... * Ngược lại, có nghĩa là.[r]
(1)Trường Đại học Thủy lợi
Phạm Phú Triêm
(2)Carl Friedrich Gauss
(1777-1855)
(3)MỤC LỤC
Lời nói đầu
Chương 1: HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH
1.1 Phương pháp Cholesky
1.2 Phương pháp lặp Gauss-Seidel
1.3 Phương pháp nới lỏng 13
Chương : PHƯƠNG TRÌNH VÀ HỆ PHƯƠNG TRÌNH PHI TUYẾN 22
2.1 Phương pháp chia đôi 22
2.2 Phương pháp dây cung 25
2.3 Phương pháp tiếp tuyến 28
2.4 Phương pháp lặp đơn 31
2.5 Phương pháp Newton-Raphson cho hệ phương trình 33
2.6 Phương pháp lặp Seidel cho hệ phương trình 37
Kiểm tra nhận thức 42
Chương : NỘI SUY GIÁ TRỊ HÀM SỐ 44
3.1 Công thức nội suy Gregory-Newton tiến 44
3.2 Công thức nội suy Gregory-Newton lùi 46
3.3 Công thức nội suy Gauss 48
3.4 Công thức nội suy Lagrange 50
3.5 Công thức nội suy Newton 51
3.6 Cơng thứcbình phương nhỏ nhất 54
Bài tập 57
Kiểm tra nhận thức 58
Chương : XẤP XỈ ĐẠO HÀM VÀ TÍCH PHÂN XÁC ĐỊNH 59
4.1 Xấp xỉ giá trịđạo hàmtheo tỷ sai phân 59
4.2 Xấp xỉ giá trịđạo hàm theo công thức Richardson 60
4.3 Xấp xỉ giá trịđạo hàm theo công thức nội suy với mốc cách đều 62
a- Công thức nội suy Gregory-Newton tiến 62
b- Công thức nội suy Gregory-Newton lùi 62
c- Công thức nội suy Gauss 62
4.4 Xấp xỉ giá trịđạo hàm theo công thức nội suy với mốc bất kỳ 65
a- Công thức nội suy Lagrange 65
b- Công thức nội suy Newton 65
c- Cơng thức bình phương nhỏ nhất 65
4.5 Xấp xỉ giá trị tích phân xác định A 68
a- Cơng thức hình thang 68
b- Công thức Simpson 68
4.6 Dãy quy tắc 71
a- Dãy quy tắc hình thang 71
b- Dãy quy tắc Simpson 72
Bài tập 75
Kiểm tra nhận thức 78
Chương 5: XẤP XỈ NGHIỆM PHƯƠNG TRÌNH VI PHÂN 79
5.1 Xấp xỉ nghiệm phương trinh vi phân cấp 79
a- Phương pháp Euler 79
b- Phương pháp Runge-Kutta bậc hai 80
c- Phương pháp Runge-Kutta bậc bốn 80
5.2 Xấp xỉ nghiệmhệ phương trình vi phân cấp 82
(4)b- Phương pháp Runge-Kutta bậc bốn 83
5.3 Xấp xỉ nghiệmphương trình vi phân cấp 85
5.4 Xấp xỉ nghiệm phương trình đạo hàm riêng 86
(5)Lời nói đầu
Nhu cầu nâng cao chất lượng đào tạo sinh viên toán thực tiễn đa dạng, phức tạp đòi hỏi cấp thiết đưa vào mơn học PHƯƠNG PHÁP TÍNH nhằm giúp cho sinh viên khối kỹ thuật- Kỹ sư tương lai, tiếp cận với cách giải gần phương trình, hệ phương trình có đánh giá sai só , kết hợp sở làm quen tự nâng cao khả lập trình ngơn ngữ thường sử dụng, PASCAL
Bộ mơn Tốn tác giả trân trọng giới thiệu Giáo trình vơ cảm ơn ý kiến đóng góp quý giá độc giả
(6)Chương 1: HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH
Chúng ta biết hầu hết toán thực tế đều dẫn đến giải hệ phương trình tuyến tính Các phương pháp giải hệđược trình bày đầy đủ tài liệu vềĐại số tuyến tính Tuy nhiên cách giải mặt thực tiễn phải tính gần gắn liền với sai số Vì chương giải vấn đề nêu
đây
1.1 Phương pháp Cholesky Giải hệ
AX = B
(1.1.1)
A = 11
1
n
n n n a a a a é ù ê ú ê ú ê ú ê ú ê ú ë û
, X = .1 n x x é ù ê ú ê ú ê ú ê ú ê ú ë û
, B = .1 n b b é ù ê ú ê ú ê ú ê ú ê ú ë û (1.1.2)
Các bước phương pháp ** Tìm ma trận tam giác
L = 2131 32
1
1 0 0 0 0 n n n n n l
l l
l l l l
-é ù ê ú ê ú ê ú ê ú ê ú ê ú ê ú ê ú ê ú ê ú ë û
, U =
11 12 13 1 22 23 2 33 3
0
0
0
n n n n n n
n n
u u u u u
u u u u
u u u
u -é ù ê ú ê ú ê ú ê ú ê ú ê ú ê ú ê ú ê ú ê ú ë û (1.1.3) thoả mãn
LU = A
(1.1.4)
** Giải hệ sau tìm Y
LY= B
(1.1.5)
** Tìm nghiệm X từ hệ
UX= Y
(1.1.6)
Đó nghiệm hệ (1.1.1) Thật
AX = L(UX) = LY = B
Để tìm L , U ta tìm hàng U , cột L , hàng U , cột L , . theo
(7)1 1 , , i i
i j i j i k k j k
i j i k k j k
i j
j j
u a l u i j
a l u
l i j
u -= = ìïï ï = - å £ ïï ïïï íï - å ïï
ï = >
ïï ïïỵ
(1.1.7)
Để đơn giản ta xét n = bước tìm nghiệm * Tìm L U
L = 21 31 32
1 0 1 l l l é ù ê ú ê ú ê ú ê ú ê ú ê ú ë û
, U = 11 1222 1323 33
0 0
u u u
u u u é ù ê ú ê ú ê ú ê ú ê ú ê ú ë û (1.1.8)
Hàng U
u11 = a11 , u12 = a12 , u13 = a13
Cột L 21 21 11 a l u
= , 31 31
11
a l
u = Hàng U
u22 = a22 – l21u12 u23 = a23 – l21u13
Cột L
32 31 12 32
22
a l u l
u -= Hàng U
u33 = a33 – (l31u13 + l32u23)
* Tìm Y
y1 = b1∧ y2 = b2 – l21y1 ∧ y3 = b3 – ( l31y1 + l32y2)
* Tính nghiệm X
3 33 y x u
= 2 23
22
y x u x
u
-Ù = 1 12 13
11
y ( )
x u x u x u
- +
Ù =
Ví dụ 1.1
Giải hệ sau phương pháp Cholesky 11 33
2
3 10
x x
x x x x x ìï + = ïïï + + = íï ïï - = ïỵ Giải
A = 23 02 15 1
é ù ê ú ê ú ê ú ê - ú ê ú ë û
, X = 12 x x x é ù ê ú ê ú ê ú ê ú ê ú ë û
, B = 103 é ù ê ú ê ú ê ú ê ú ê ú ë û * Tìm L U
Hàng1 U
u11 = a11 = , u12 = a12 = , u13 = a13 =
Cột L 21 21 11 a l u
= = , 31 31
(8)Hàng U
u22 = a22 – l21u12 = –32.0 = ; u23 = a23 – l21u13 = –32.1 = 72
Cột L
32 31 12 32
22
1 1
2
2
a l u l
u
-= = =
Hàng U
u33 = a33 – (l31u13 + l32u23) = ỗỗổỗố12.1- 72 2 ứửữữữ= 54 1.1 2 ỉ ư÷ ç - ÷=
ç ÷
çè ø * Tìm Y
y1 = b1 = ∧ y2 = b2 – l21y1 = 10 – 32.3 = 112
∧ y3 = b3 ( l31y1 + l32y2) = ỗốổỗỗ12.3- 112 2 ư÷÷÷ø= 45 * Tính nghiệm X
3
33
y x
u = =
5
= 23
2
22
y x u x
u
-Ù = =
11 7.1 2
2
-= 12 13
1
11
y ( )
x u x u x u
- +
Ù = = (0.1 1.1)
- + = Program CHOLESKY;
Var
A:Array[1 10,1 10] of real; B,X,Y:Array[1 10] of real; R:Array[1 10] of integer; DK,I,J,K,T,N:Integer; DET,SUM:Real; BEGIN
Write('So an N=');Readln(N); Writeln('Nhap ma tran A '); For I:=1 to N
For J:=1 to N
Begin Write('A[',I,J,']=');Readln(A[I,J]); End; Writeln(' Nhap vecto B ');
For I:=1 to N
Begin Write('B[',I,']=');Readln(B[I]); End; DK:=1;DET:=1;
For I:=1 to N R[I]:=I; For I:=1 to N-1
If DK=1 then Begin
For K:=I+1 to N Begin
(9)Begin
T:=R[I];R[I]:=R[K];R[K]:=T;DET:==-DET; End;
If A[R[I],I]=0 then DK:=2 Else Begin
DET:=DET*A[R[I],I]; For K:=I+1 to N Begin
A[R[K],I]:=A[R[K],I]/A[R[I],I]; For J:=I+1 to N
A[R[K],J]:=A[R[K],J]-A[R[K],I]*A[R[I],J]; End;
End; End; End;
If A[N,N]=0 then DK:=2 Else Begin
Y[1]:=B[R[1]]; For K:=2 to N Begin
SUM:=0;
For J:=1 to K-1
SUM:=SUM+A[R[K],J]*Y[J]; Y[K]:=B[R[K]]-SUM;
End;
X[N]:=Y[N]/A[R[N],N]; For K:=N-1 downto Begin
SUM:=0;
For J:= K+1 to N
SUM:=SUM+A[R[K],J]*X[J]; X[K]:=(Y[K]-SUM)/A[R[K],K]; End;
End;
If DK=1 then
For I:=1 to N Write('X[',I,']=',X[I]); If DK=2 then Writeln('Khong tinh duoc'); Readln;
END
(10)11 1 1 n n
n n n n n
a x a x b
a x a x b
ìï + + = ïï ïïí ïï ï + + = ïïỵ (1.2.1)
* Điều kiện lặp: A có đường chéo trội, có nghĩa
1; n aii ai j
j j i ³ å
= ¹ i = , . , n
(1.2.2)
* Điều kiện hội tụ: A xác định dương, có nghĩa a11 > ,
11 12 13 11 12
21 22 23 21 22
31 31 33
0 , , , a a a
a a
a a a A
a a
a a a
> > > (1.2.3)
* Đưa hệ (1.2.1) hệ tương đương
1 12 1
2 21 23 2 1 2 1
' ' ' n n n n
n n n n n n n n n
x c x c x b
x c x c x c x b
x c x c - x - c - x - b ìïï = + + + ïï ïï ï = + + + + ïí ïï ïï ïï = + + + + ïïỵ (1.2.4)
cách: chuyển xK ( k ≠ i ) phương trình thứ i sang vế phải chia vế
cho aii , i = 1, . , n
* Thay xấp xỉ ban đầu X(0) = (x1(0) . xn(0)) nghiệm vào (1.2.4) để tìm xấp xỉ
thứ
X(1) = (x1(1) . xn(1)) nghiệm
(1) (0) (0) 12 1
(1) (1) (0) (0) 21 23 2
(1) (1) (1) (0) (0) 31 32 34 3
(1) (1) (1) (0) 11 1
1
' ' ' n n n n n n
n n n n n n n
n n
x c x c x b
x c x c x c x b
x c x c x c x c x b
x - c - x c - - x - c - x b
-= + + +
= + + + +
= + + + + +
= + + + +
(1) (1) (1) (1)
1 2 1
' '
n n n n n n n n n x c x c - x - c - x - b ìïï ïï ïï ïï ïï ïï ïïí ïï ïï ïï ïï ïï ïï = + + + + ïïỵ (1.2.5)
Như ta đã sử dụng giá trị x1(1), , xi(1)được tính hàng để tìm
các giá trị
xi+1(1), . , xn(1) , i =1, . , n –1, hàng
* Nếu
(1) (0)
n i i
iå= x - x ≤ εx
(1.2.6)
(11)(1) (0)
n i i
iå= x - x > εx
(1.2.7)
ta lại thay xấp xỉ thứ X(1) = (x1(1) . xn(1)) nghiệm vào (1.2.4) để tìm
xấp xỉ thứ hai
X(2) = (x1(2) . xn(2)) nghiệm
(2) (1) (1) 12 1
(2) (2) (1) (1) 21 23 2
(2) (2) (2) (1) (1) 31 32 34 3
(2) (2) (2) (1) 11 1
1
' ' ' n n n n n n
n n n n n n n
n n
x c x c x b
x c x c x c x b
x c x c x c x c x b
x - c - x c - - x - c - x b
-= + + +
= + + + +
= + + + + +
= + + + +
(2) (2) (2) (2)
1 2 1
' '
n n n n n n n n n x c x c - x - c - x - b ìïï ïï ïï ïï ïï ïï ïïí ïï ïï ïï ïï ïï ïï = + + + + ïïỵ (1.2.8)
* Một cách tổng quát
Ta tiếp tục xấp xỉ thứ k : X(k) = (x1(k) . xn(k)) nghiêm theo công thức
( ) ( 1) ( 1) 12 1
( ) ( ) ( 1) ( 1) 21 23 2
( ) ( ) ( ) ( 1) ( 1) 31 32 34 3
( ) ( ) ( ) 11
1
' ' '
k k k
n n
k k k k
n n
k k k k k
n n
k k k
n n n n
n n
x c x c x b
x c x c x c x b
x c x c x c x c x b
x c x c x c
- - - -= + + + = + + + + = + + + + +
= + + + 1 ( 1) 1
( ) ( ) ( ) ( )
1 2 1
' '
k n n n
k k k
k
n n n n n n n n n
x b
x c x c x c x b
- - -ìïï ïï ïï ïï ïï ïï ïïí ïï ïï ïï + ïï ïï ïï = + + + + ïïỵ (1.2.9) dừng lại X(k) thoả mãn ( ) ( 1)
1
n k
k i i i x x
-=
å - ≤ εx
(1.2.10)
( 1) ( 2)
n k k i i i
x x x
k M
e
- -=
ìïï - > ï å ïí ïï ï = ïỵ (1.2.11)
M số bước lặp tối đa cho trước mà ta phải dừng lại bước lặp thứ M –
chưa đảm bảo sai số Ví dụ 1.2
Giải hệ sau phương pháp Gauss-Seidel 11 22 33
5
4
2
x x x
x x x
x x x
ìï - + = ïïï - + = -íï
ïï - + = ïỵ
với X(0) = (0 0) , εx = 0,15 M = 10
(12)* Kiểm tra điều kiện đường chéo trội ⎜a11 ⎜= ⎜5 ⎜> ⎜– ⎜ + ⎜2 ⎜= ⎜a12⎜ +
⎜a13⎜
⎜a22⎜= ⎜–5 ⎜> ⎜1 ⎜ + ⎜1 ⎜= ⎜a21⎜ + ⎜a23
⎜
⎜a33 ⎜= ⎜4 ⎜> ⎜– ⎜ + ⎜– ⎜= ⎜a31 ⎜ +
⎜a32⎜
* Kiểm tra điều kiện xác định dương: a11 = >
Sau đổi dấu vế phương trình thứ ta tính 11 12
21 22
5 1 a a
a a
-=
- = 19 > 1121 1222 1323
31 31 33
5 4 a a a
a a a a a a
-= -
-= 5.4.4 + ( – 1).( – 1).2
+ ( – 2).( – 1).( – 1) – ( – 2).4.2 – ( – 1).( – 1).5 – ( – 1).( – 1).4 = 87 > * Đưa hệ cho hệ tương đương theo công thức (1.2.4)
12 21 3
0,2 0,4 1,2 0,25 0,25 0,5 0,5 0,25 0,25
x x x
x x x
x x x
ìï = - +
ïïï = + +
íï
ïï = + +
ïỵ
* Thay xấp xỉ ban đầu X(0) = (0 0) nghiệm vào vế phải tìm xấp xỉ thứ X(1) = (x1(1) x2(1) x3(1))
nghiệm theo công thức (1.2.5) với n =
(1)
(1) (1)
0,2.0 0,4.0 1,2 1,2 0,25.1,2 0,25.0 0,5 0,8 0,5.1,2 0,25.0,8 0,25 1,05 x
x x
ìï = - + =
ïï
ïï = + + =
íï ïï
ï = + + =
ïỵ
* Tính sai số
(1) (0) i i
iå= x - x = 1,2 + 0,8 + 1,05 = 3,05 > 0,15
* Tìm xấp xỉ thứ hai X(2) = (x1(2) x2(2) x3(2)) nghiệm theo công thức (1.2.8)
(2)
(2) (2)
0,2.0,8 0,4.1,05 1,2 0,94 0,25.0,94 0,25.1,05 0,5 0,9975 0,5.0,94 0,25.0,9975 0,25 0,969375 x
x x
ìï = - + =
ïï
ïï = + + =
íï ïï
ï = + + =
ïỵ
* Tính sai số
(2) (1) i i
iå= x - x = ⎜0,94 – 1,2⎜ + ⎜0,9975 – 0,8⎜ + ⎜0,969375 – 1,05⎜ =
0,538125 > 0,15
* Tìm xấp xỉ thứ ba X(3) = (x1(3) x2(3) x3(3)) nghiệm theo công thức (1.2.9) :
(3)
(3) (3)
0,2.0,9975 0,4.0,969375 1,2 1,01175 0,25.1,01175 0,25.0,969375 0,5 0,995281 0,5.1,01175 0,25.0,995281 0,25 1,004695 x
x x
ìï = - + =
ïï
ïï = + + »
íï ïï
ï = + + »
ïỵ
(13)(3) (2) i i
iå= x - x = ⎟1,01175 – 0,94⎟ + ⎟0,995281 – 0,9975⎟
+ ⎟1,004695 – 0,969375⎟ = 0,109289 < 0,15
Như ta dừng xấp xỉ thứ nghiệm với độ xác cho trước
X(3) = ( 1,01175 0,995281 1,004695)
Program G_SEIDEL; Var
AB:Array[1 20,1 20] of real; X0,XK:Array[1 20] of real; I,J,K,M,N,KMAX,DK:Integer; R,EPS,SUM,SUMEPS:Real; BEGIN
Write('So an N = ');Readln(N); M:=N+1;
Writeln('Nhap ma tran AB : N hang, N+1 cot ’); Writeln('N cot dau la cac cot cua ma tran A’); Writeln('cot thu N+1 la cot cac he so tu B ’);
For I:=1 to N
For J:=1 To M
Begin Write('AB[',I,J,']=');Readln(AB[I,J]); end; Write(' So buoc lap toi da KMAX=');Readln(KMAX); Write(' Sai so EPS =');Readln(EPS);
DK:=1;I:=1;
{ Kiem tra tinh cheo troi } While ((I<=N) and (DK=1)) Begin
R:=0;
For J:=1 to N
R:=R + ABS(AB[I,J]); If R>=2*ABS(AB[I,I]) then DK:=2;I:=I+1:
end;
If DK=1 then
{ Khi tinh cheo troi thoa man ta nhap xap xi ban dau } Writeln(‘ Nhap xap xi ban dau X’);
Begin
For I:=1 to N
(14)K:=1;
While ((K<KMAX) and (DK=1))
{ Tinh cac phan XK[I] o buoc lap thu K khi khong su dung cac gia tri XK[1] , XK[2] , . , XK[I] da tinh o tren de tinh XK[I+1], . ,XK[N] ; I = , . , N– } Begin
For I:=1 to N Begin
SUM:=AB[I,M]; For J:=1 to N If J<>I then
SUM:=SUM – AB[I,J]*X0[J];XK[I]:=SUM/AB[I,I]; end;
{ So sanh tong sai so cac phan o buoc lap thu K va K-1 voi sai so da cho } SUMEPS:=0;
For I:=1 to N
SUMEPS:=SUMEPS + ABS(XK[I]-X0[I]); If SUMEPS<EPS then DK:=3;
For I:=1 to N
X0[I]:=XK[I];K:=K+1; end;
If DK=3 then Begin
Writeln('Nghiem xap xi la'); For I:=1 to N
Writeln('X',K,'[',I,']=',XK[I]); end;
If DK=2 then
Writeln('Khong cheo troi'); If K=KMAX then
Begin
Writeln('Chua hoi tu va ta dung o xap xi thu k cua nghiem,k= ', K); For I:=1 to N
Writeln('X',K,'[',I,']=',XK[I]); end;
Readln; END
(15)11 1 1 n n
n n n n n
a x a x b
a x a x b
ìï + + = ïï ïïí ïï ï + + = ïïỵ (1.3.1)
* Điều kiện lặp: A có đường chéo trội, có nghĩa
1; n aii ai j
j j i ³ å
= ¹ i = , . , n
(1.3.2)
* Điều kiện hội tụ: A xác định dương, có nghĩa a11 > ,
11 12 13 11 12
21 22 23 21 22
31 31 33
0 , , , a a a
a a
a a a A
a a
a a a
> > > (1.3.3)
* Đưa hệ (1.3.1) hệ tương đương cách: chuyển tất ẩn sang phải và chia phương trình
thứ i cho aii , i = , . , n
1 12 1 21 23 2
1 1
' ' ' n n n n
n n n n n n
x c x c x b
c x x c x c x b
c x c - x - x b ìïï- + + + + = ïï ïï ï - + + + + = ïí ïï ïï ïï + + - + = ïïỵ (1.3.4)
* Thay xấp xỉ ban đầu X(0) = (x1(0) . xn(0)) nghiệm vào (1.3.4) tìm sai số
xấp xỉ ban đầu
R(0) = (R1(0) . Rn(0))
(0) (0) (0) (0) 12 1
1
(0) (0) (0) (0) (0) 21 23 2
(0) (0) (0) (0) (0) (0) 31 32 34 3
(0) (0) 11 1 2
' ' ' n n n n n n
n n n n n
x c x c x b R
c x x c x c x b R
c x c x x c x c x b R
c - x c - - x - x
+ + + + =
- + + + + =
+ - + + + + =
+ + - (0) 1 (0) 1 (0)1
(0) (0) (0) (0) (0) 1 2 1
' '
n n n n n
n n n n n n n n n n
c x b R
c x c x c x x b R
- - - - -ìïï ïï ïï ïï ïï ïï ïïí ïï ïï ïï + + = ïï ïï ïï + + + - + = ïïỵ (1.3.5) * Xác định Rh(0) thoả mãn
⎜Rh(0) ⎜= max(⎜R1(0)⎜, , ⎜Rn(0)⎜)
(1.3.6) * Nếu
⎜Rh(0) ⎜ ≤ εf
(1.3.7)
(16)⎜Rh(0) ⎜ > εf
(1.3.8)
ta tìm xấp xỉ thứ X(1) = (x1(1) . xn(1)) nghiệm theo công thức
(1)(1) (0)(0) (0) ; 1, , ;
h h h
i i
x x R
x x i n i h
ìï = + ïï
ớù
ù = =
ùợ
(1.3.9)
tính xấp xỉ thứ R(1) = (R
1(1) . Rn(1)) sai số theo công thức
(0)(0) (0) (0)
; 1, , ; h
i h
i h i
R
R c R R i n i h
ìï = ïï íï
ï = + =
ùợ
(1.3.10)
* Xác định Rh(1) thoả mãn
⎜Rh(1) ⎜= max(⎜R1(1) ⎜, , ⎜Rn(1) ⎜)
(1.3.11) * Nếu
⎜Rh(1) ⎜ ≤ εf
(1.3.12)
ta dừng X(1) * Ngược lại, có nghĩa
⎜Rh(1) ⎜ > εf
(1.3.13)
tương tự ta tìm xấp xỉ thứ nghiệm xấp xỉ thứ sai số .
* Một cách tổng quát
Ta tiếp tục xấp xỉ thứ k : X(k) = (x1(k) . xn(k)) nghiệm tính theo
cơng thức
( )( ) (( 1)1) ( 1) ; 1, , ;
k k
k
h h h
k k i i
x x R
x x i n i h
-
-ìï = + ùù
ớù
ù = =
ùợ
(1.3.14)
tính xấp xỉ thứ k : R(k) = (R1(k) . Rn(k)) sai số theo công thức
(0)( ) ( 1) ( 1)
; 1, , ; h
k k
k i h
i h i
R
R c R - R - i n i h ìï =
ùù ớù
ù = + =
ùợ
(1.3.15)
dừng lại X(k)
⎜Rh(k) ⎜= max(⎜R1(k) ⎜, . , ⎜Rn(k) ⎜)
(1.3.16)
thoả mãn
⎜Rh(k) ⎜≤ εf
(1.3.17)
(17)R(hk 1) f k M
e
-ìïï > ïí
ïï = ïỵ
(1.3.18)
M là số bước lặp tối đa cho trước mà ta phải dừng bước lặp thứ M – chưa
đảm bảo sai số
Nội dung tư tưởng phương pháp nới lỏng: Biến đổi cho xấp xỉ tiếp theo, sai số tương ứng với phương trình thứ h (sai số xấp xỉ có trị tuyệt đối lớn nhất) không Điều thể cơng thức (1.3.14), (1.3.15)
Ví dụ 1.3
Giải hệ 11 22 33
5
4
2
x x x
x x x
x x x
ìï - + = ïïï - + = -íï
ïï - - + = ïỵ
phương pháp nới lỏng với X(0) = (0 0) , εf = 0,15 M =
Giải
* Kiểm tra điều kiện đường chéo trội : ⎜a11⎜= ⎜5 ⎜> ⎜–1 ⎜ + ⎜2 ⎜= ⎜a12⎜ + ⎜a13
⎜
⎜a22⎜= ⎜– ⎜> ⎜1 ⎜ + ⎜1 ⎜= ⎜a21⎜ + ⎜a23
⎜
⎜a33 ⎜= ⎜4 ⎜> ⎜– ⎜ + ⎜– ⎜= ⎜a31 ⎜ +
⎜a32⎜
* Kiểm tra điều kiện xác định dương: a11 = >
Sau đổi dấu vế phương trình thứ ta tính 11 12
21 22
5 1 a a
a a
-=
- = 19 > 1121 1222 1323
31 31 33
5 4 a a a
a a a a a a
-= -
-= 5.4.4 + ( – 1).( – 1).2
+ ( – 2).( – 1).( – 1) – ( – 2).4.2 – ( – 1).( – 1).5 – ( – 1).( – 1).4 = 87 > * Đưa hệ cho hệ tương đương theo công thức (1.3.4)
11 22 33
0,2 0,4 1,2 0,25 0,25 0,5 0,5 0,25 0,25
x x x
x x x
x x x
ìï - + - + =
ïïï - + + =
íï
ïï + - + =
ïỵ
* Thay xấp xỉ ban đầu X(0) = (0 0) nghiệm vào vế phải tìm sai số ban đầu R(0) = (R1(0) R2(0) R3(0))
theo công thức (1.3.5) với n =
(0) (0)
(0)
0 0,2.0 0,4.0 1,2 1,2 0,25.0 0,25.0 0,5 0,5
0,5.0 0,25.0 0,25 0,25 R R
R ìï - + - + = = ïï
ïï - + + = = íï
ïï
ï + - + = =
ïỵ
* Xác định theo cơng thức (1.3.6)
(18)ta chuyển sang bước sau với h =
* Tìm X(1) = (x1(1) x2(1) x3(1)) theo cơng thức (1.3.9)
(1) (0) (0) 1 (1) (0) 2 (1) (0) 3
0 1,2 1,2
0
x x R
x x x x ìï = + = + = ïï ïï = = íï ïï ï = = ïỵ * Tìm xấp xỉ thứ sai số theo (1.3.10)
(1)
(1) (0) (0) 21
2 (1) (0) (0)
31
3
0
0,25.1,2 0,5 0,8 0,5.1,2 0,25 0,85 R
R c R R
R c R R
ìï = ïï ïïï = + = + = íï ïï ï = + = + = ïïỵ
* Xác định theo công thức (1.3.11)
⎜R3(1)⎜= max(0 ; 0,8 ; 0,85) = 0,85 > 0,15
ta chuyển sang bước sau với h =
* Tìm X(2) = (x1(2) x2(2) x3(2)) theo cơng thức (1.3.14)
(2) (1) (1) 3 (2) (1)
1,2 1 (2)
0 0,85 0,85 (1) 0
2 x x
x x R
x x = = ìïï = + = + = ïï ïï = íï ïï ï = ïïỵ * Tìm xấp xỉ thứ hai sai số theo (1.3.15)
( 2)
(2)
(1) (1) 13 (2) (1) (1)
23
2
0
0,4.0,85 0,36 0,25.0,85 0,8 1,0125 R
R c R R
R c R R
ìï = ïï ïïï = + = - + = -íï ïï ï = + = + = ïïỵ * Xác định theo cơng thức (1.3.16)
⎜R2(2)⎜= max(0 ; 0,36 ; 1,0125) = 1,0125 > 0,15
ta chuyển sang bước sau với h =
* Tìm X(3) = (x1(3) x2(3) x3(3)) theo cơng thức (1.3.14)
(2 (3) (2) 2 (3) (2) 1 (3) (2) 3
) 0 1,0125 1,0125 1,2
0,85
x x R
x x x x ìïï = + = + = ïï ïï = = íï ïï ï = = ïïỵ * Tìm xấp xỉ thứ ba sai số theo (1.3.15)
(3)
(3) (2) (2) 12
1 (3) (2) (2)
32
3
0
0,2.1,0125 0,36 0,1575 0,25.1,0125 0,2531 R
R c R R
R c R R
ìï = ïï ïïï = + = - = -íï ïï ï = + = + = ïïỵ * Xác định theo cơng thức (1.3.16)
⎜R3(3)⎜= max(0 ; 0,1575 ; 0,2531) = 0,2531 > 0,15
số bước lặp tối đa M = nên ta dừng X(3) = ( 1,2 1,0125 0,85)
Program PP_NOILONG; Var
(19)X,R:Array[1 20] of real;
I,J,K,K1,L,LMAX,M,N,DK:Integer; AB,ABMAX,DELX,EPS: Real; BEGIN
Write('So an N = ');Readln(N); M:=N+1;
Writeln('Nhap ma tran C ');
{C ma trận N hàng, M cột- hệ số vế trái hệ (1.3.4):
1 12 1 21 23 2
1 1
'
'
'
n n
n n
n n n n n n
x c x c x b
c x x c x c x b
c x c - x - x b ìïï- + + + + = ïï
ïï
ï - + + + + =
ïí ïï ïï
ïï + + - + =
ïïỵ
For I:=1 to N
For J:=1 to M Begin
Write('C[',I,J,']=');Readln(C[I,J]); End;
Writeln('Xap xi ban dau'); For I:=1 to N
Begin
Write('X[',I,']=');Readln(X[I]); end;
Write('So buoc lap toi da la LMAX=');Readln(LMAX); Write('Sai so EPS =');Readln(EPS);
DK:=1;L:=0;
While ((L<LMAX) and (DK=1)) Begin
For I:=1 to N Begin
R[I]:=C[I,M]; For J:=1 to N
R[I]:=R[I]+C[I,J]*X[J]; end;
AB:=0;
For K:=1 to N Begin
ABMAX:=ABS(R[K]); If AB<ABMAX then Begin
AB:=ABMAX;K1:=K; End;
(20)If ABS(R[K1})<EPS then DK:=2 ELSE Begin
DELX:=R[K1];X[K1}:=X[K1}+DELX; For I:=1 to N
If I<>K1 then
R[I]:=R[I]+C[I,K1]*DELX; R[K1]:=0; end;
L:=L+1; end;
If DK=2 then Begin
Writeln('Nghiem xap xi o buoc lap thu l =',l); For I:=1 to N
Writeln('X[',I,']=',X[I]); end;
If L=LMAX then Begin
Writeln('Chua hoi tu va ta tam dung o xap xi thu l cua nghiem, l=',l); For I:=1 to N
Writeln('X[',I,']=',X[I]); end;
Readln; END
Bài tập 1- Giải hệ sau phương pháp Cholesky a- 11 22 33
1
x 2x 4x 2x 3x x
3x x 5x ⎧ − + = − ⎪− − + = ⎨
⎪ + − =
⎩
b- 2x y 3z 13x 2y 3z 14 3x 2y z 10 ⎧ + + = ⎪ + + = ⎨
⎪ + + = ⎩
c- 2x 3y zx 2y 3z 3x y 2z ⎧ + + = ⎪ + + =− ⎨
⎪ + + = ⎩
d
-1 3
2x x 3x 3x 2x x
x 3x 4x
⎧ − + =
⎪
− − + =− ⎨
⎪ + − =− ⎩
Đs: a- ( – – ) b- ( ) c- ( – ) d- ( 1 ) {Vô số nghiệm}