1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng Phương pháp tính - Phạm Phú Triêm

20 12 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

* Ngược lại, có nghĩa là... * Ngược lại, có nghĩa là.[r]

(1)

Trường Đại hc Thy li

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 thc ni suy Gregory-Newton tiến 62

b- Công thc ni suy Gregory-Newton lùi 62

c- Công thc ni 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 thc ni suy Lagrange 65

b- Công thc ni suy Newton 65

c- Cơng thc bình phương nh nht 65

4.5 Xấp xỉ giá trị tích phân xác định A 68

a- Cơng thc hình thang 68

b- Công thc Simpson 68

4.6 Dãy quy tắc 71

a- Dãy quy tc hình thang 71

b- Dãy quy tc 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 TUYN 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}

Ngày đăng: 30/03/2021, 03:27

Xem thêm:

TỪ KHÓA LIÊN QUAN