You are on page 1of 229

LÊTRỌNG

TRỌNGVINH,
VINH,TRẨN MINHTOÀN

G iáo trình
rình -t

Phương p h á p tính
tín h
và Matlab
Lý thuyết, bài tập và chương trình minh họa
(Dùng cho sinh viên khối các trường Khoa học Công nghệ)

ir

NHÀ XUẤT
XUẤT BẢN
BẢN BÁCH KHOA - HÀ NỘI
NỘI
LÊ TRỌNG VINH, TRÁN MINH TOÀN

Giáo trình
PHƯƠNG PHÁP TÍNH VÀ MATLAB
Lý thuyết, bài tập và chương trình minh họa

(Dùng cho sinh viên khối các trường


Khoa học Công nghệ)

NHÀ XƯÁT BẢN BÁCH KHOA - HÀ NỘI


Bàn quyền thuộc về trường Đại học Bách Khoa Hà Nội.
Mọi hình thức xuất bán, sao chép mà không có sự cho phép bằng văn bản của
trường là vi phạm pháp luật.

Mã số: 1264
1264 - 2013/CX
2013/CXB/0
B/01
1 - 51/BKHN

Biên mục trên xuất bản pháni của Thư viện Quốc gia Việt Nam

Lê Trọng Vinh
Giáo trình phưưng pháp tính và matlab : Lý thuyết, bài tập và chương trình
minh họa : Dùng cho sinh viên khối các trường Khoa học Công nghê /
Lê Trọng Vinh, Trần Minh Toàn. - H. : Bách khoa Hà Nội, 2013. - 228tr. ; 24cm
Thư mục: tr. 223
ISB
ISBN 97860491155
97860 49115578
78

1. Phương
Phươ ng pháp
phá p tính 2. Phần mém Matlab
Matl ab 3. Giáo
Giá o trình
trìn h
515.0285 - dc 14
BKF0033p-CIP

11
LỜI NÓI ĐẦU

HƯƠNG pháp tính còn được gọi là giải tích số hay toán học tính

P
toán là môn khoa học nghiên cứu cách giải gần đúng, chủ yếu là
giải số các phương trình, các bài toán xấp xi hàm số và các bài
toán tối ưu. Ngay từ đầu, toán học sinh ra do yêu cầu giải quyết các vấn
đề thực tế như tính diên tích môt mảnh đất; do chiều cao của các vật có
độ cao lớn; tìm quỹ đạo của sao chổi, đường đi của tàu buôn trên biển,...
N h ư vậy,
vậy , có t h ể n ó i t o á n họ
họcc b a n đ ầ u x u ấ t h i ệ n c h í n h l à t o á n ho
hocc t í n h
toán.
Từ những năm cuối của thế kỷ XX, phương pháp tính đươc phát triển
m ạn h mẽ cù ng vớ với sư bù ng nô của tin học. học. Đặc biệt, vớ với sự xuấ t hiện của
các siêu máy tính thì khả năng song song hóa các quá trình tính toán
ngày càng được mỏ rộng.
Các n hiệm vụ chínhchính của phương pháp tính là:

1. Giải gần đúng các loại phương trình đại số hay siêu việt; giải hệ
ph
p h ư ơ n g t r ì n h ; t ì m t r ị r iê n g , v e c to r r i ê n g c ủ a m a t r ậ n ; g iải
iả i g ầ n đ ú n g
ph
p h ư ơ n g t r ì n h vi p h â n ,...
,. ..

2. Xấ p xỉxỉ hà m số: Thay h àm có dạng phức tạ p ha y hàm cho cho dư


dưỏi
ỏi dạng
bả
b ả n g số bởi h à m có d ạ n g đ ơ n g i ả n h ơ n đ ể dễ t í n h to á n .

Trong khi đó, tin học có nhiệm vụ cài dặt và khai thác thực hiện quá
trình tính để cho kết quả mong muốn. Song việc tăng tốc độ tính toán
(khi khối lượng tính toán lớn) đối với máy gặp nhiều khó khăn về kỹ
thuật và đòi hỏi chi phí lớn. Do đó, cần thiết phải cải tiến thuật toán để

iii
IV

có thể giải các bài toán cỡ lón. Điều đó có nghĩa là toán học tính toán và
tin hoc có mối quan hệ qua lại đặc biệt quan trong.
Hiện nay, đã có nhiều giáo trình khác nhau, giới thiêu các cách sử dung
các loai ngôn ngữ lập trình khác nhau để khai thác tính toán như ngôn
ngữ c, Maple,... Trong giáo trình này chúng tôi giới thiệu ngôn ngữ lập
trình bậc cao M a t L ab chuyên được sử dụng cho các tính toán kỹ thuật.
Đối với hầu hết các vấn đề, chúng tôi giới thiệu thuật toán và kèm theo
chương trình M a t L ab (đã được chạy thử một cách cẩn thận) để đôc già
kiểm nghiệm và có thể dễ dàng sử dụng để giải quyết các vấn đề cần
nghiên cứu.
Giáo trìn h bao gồm 6 chương, trong đó ph ần các th u ậ t toá n (phương pháp
tính) do PGS. TS. Lê Trọng Vinh biên soạn, phần lập trình M a t L ab do
ThS. Trầ n M inh Toàn biên soạn.
C hú ng tôi xin được bày tỏ lòng biết ơn sâu sắc đến TS. H à Th ị Ngoe Yến
và TS. Nguyễn Thanh Huyền đã đọc bản thảo và có những đóng góp vô
cùng quý báu. Do giáo trình được biên soạn lần đầu nên không th ể trán h
khỏi n hữ ng th iếu sót. C hú ng tôi rấ t m ong sự lượng th ứ và góp ý của bạn
đọc. Mọi ý kiến xin chuyển về địa chỉ: Viện Toán ứng dụng và Tin học,
Đai học Bách Khoa Hà Nội, số 1 Đại cồ Việt, Hà Nôi.

Các tác giả


Mue LUC

L ô i nói đ ầ u ............................................ iii

Mue
• lu
• e .................................................. 1
( 'h ư ơ n g 1 . S a i s ố ....................................................................................... 7
1 Số xấ p xi, sai s ố ............................................................................. 7
1.1 Sai số tu yệt đối ................................................................. 7
1.2 Sai số tương đ ố i ................................................................ 8
1.3 Chữ số có n g h ĩ a ................................................................ 8
1.4 Chữ số tin tưởng, chữ số khả nghi trong một số . . . 8
1.5 Sai số quy tròn và quy tròn s ố ....................................... 9
1.6 Cách viết số xấp xỉ .......................................................... 9
2 Các phép tính về sai s ố ................................................................ 9
2.1 Các phép t í n h .................................................................... 9
2.2 Công thức tổng quá t về sai s ố ....................................... 11
2.3 Bài to án ngươc về sai s ố ................................................. 12
2.4 S ai số phư ơng pháp, sai số tín h toá n và sự ổn địn h . 14
C hư ơn g 2 . M a t L ab cơ b ả n ....................................................................... 17
1 Khỏi đô ng Ma tL a b ....................................................................... 18

2 Biểu thứ c M a t L a B: biến, số, toán tử, h à m ............................. 19


2.1 B i ế n ....................................................................................... 19
2.2 S ố ................................................................................... 20
2.3 Toán t ử ................................................................................. 20
2.4 H à m ....................................................................................... 21

1
2 M ỤC LỤC

3 Các da ng dữ liệu cơ bàn tron g M a t L ab .............................. 22

3.1 V e c to r.................................................................................. 22
3.2 Đ a t h ứ c .............................................................................. 27
3.3 Ma t r ậ n .............................................................................. 30
4 Vẽ đồ th ị tro n g M a t L a b ........................................................... 37

4.1 Đồ th ị 2 D .............................................................................. 37
4.2 Đồ th ị 3 D ........................................................................... 41
5 Lậ p trì n h với M a t L a b .............................................................. 43

5.1 Thủ tục (S c rip t) .............................................................. 44


5.2 Hàm "m-files" (F u n ctio n ) .............................................. 45
5.3 N hập, xu ất dữ l i ệ u ........................................................... 48
5.4 Điều khiển lu ồ n g ........................................................... 55
5.5 Vector hó a (V e c to riz a tio n )........................................... 61
5.6 Tính giá trị hàm một cách gián tiếp ......................... 66
5.7 Chú th íc h ........................................................................... 66
5.8 Gỡ l ỗ i .................................................................................. 67
5.9 Ph ân tích một chương trìn h sửdụ ng "The Pro filer" 68
6 Bài t ậ p ........................................................................................... 69
C h ư ơ n g 3 . G i ải g ầ n đ ú n g p h ư ơ n g t r ì n h .......................................... 79
1 Tìm khoảng phâ n ly n g h iệ m .................................................... 80
1.1 Khoảng phân ly n g h iệ m .............................................. 80
1.2 Phươ ng ph áp hình hoc tìm kho ảng p h ân ly nghiê m 80
2 Phương pháp lặp d ơ n ................................................................. 82
2.1 Nội dung phương p h á p ................................................. 82
2.2 Sự hội tụ của phươ ng p h á p ........................................... 82
2.3 Sai s ố .................................................................................. 84
2.4 Chương trìn h M a t L ab .............................................. 85

3 Phương pháp Newton (phương pháp tiếp tuyến) ............. 87


3.1 Nội dung phương p h á p .................................................... 87
3.2 Sự hội tụ củ a ph ươ ng pháp N e w to n .............................. 88
3.3 Sai s ố ..................................................................................... 89
3.4 Chương trìn h M a t L ab ................................................. 90

4 P hư ơ ng p h áp dây c u n g ................................................................. 92
M Ụ C L ỰC ____________________________________ ______________________ 3

4.1 Nội dung phương p h á p ............................................... 92


4.2 Sự hội tụ của phương pháp dây c u n g 93
.....................

4.3 Sai s ố ............................................................................... 94


4.4 Chương trình Mat Lab 94
................................................

5 Phư ơng trìn h đa thức bậc n ....................................................... 96


5.1 M iền chứa nghiệm của đa t h ứ c ............................... 96
5.2 Sơ đồ H orner tính giá trì của đa th ứ c ..................... 97
5.3 Chương trình M a t L ab ................................................ 97

6 Giải gần đúng hệ phương trình phi t u y ế n ............................. 98


6.1 Phương pháp N e w to n ....................................................... 99
6.2 Phương pháp lặp 100
.................................................................

6.3 Chương trìn h M at L ab .....................................................101

7 Bài t ậ p ..................................................................................................102
C h ư ơ n g 4 . P h ư ơ n g p h á p s ố t ro n g đ ạ i số tu y ế n t í n h 105
.................

1 Mở đầu về hê đai số tuyến t í n h .....................................................105


1.1 Đ ặt vấn đ ề .......................................................................105
1.2 Phương pháp C r a m e r ....................................................106
2 Phư ơng ph áp giải đúng và chương trình M a t L ab ................. 107
2.1 Phương pháp G a u ss 107
..........................................................

2.2 Chương trình M a t L ab .....................................................111

2.3 Phư ơn g ph áp G au ss-J or da n (tr ụ tối đ ạ i ) ........................112


2.4 Phương pháp Cholesk y (kha i c ă n ).....................................116
2.5 Công thức truy đuổi giải hê có ma trận dạng ba đường chéoi21
2.6 Chương trìn h M at Lab .....................................................122
3 Phương pháp lặ p đ ơ n ........................................................................123
3.1 C hu ẩn của ma trâ n và sự hội tụ của dãy m atrcận . . 123
3.2 Ph ươ ng ph áp lặp dơn (lặp cổ điển) 125
.................................

4 Sự khôn g ổn định của hệ đại số tuyến t í n h 128


.................................

5 Ma trậ n nghịch đảo và chương trình M a t L ab ........................130


5.1 Bài toán ..................................................................................130
5.2 Phươ ng pháp tìm A~ l tro ng đại số tu y ế n t ín h . . . . 131
5.3 Phư ơng ph áp G a u s s -J o r d a n .......................................131
5.4 Trư ờng hơp m a trậ n đối xứng. Phương ph áp Choleskyl34
4__________________________________________________ M Ự C LUC

6 Trị riêng, vector riêng của m a trậ n và chương trìn h M at L ab 137


6.1 Khái niệm về trị riêng và vector r i ê n g ....................... 137
6.2 Trị riên g và vector riêng của các m a trậ n đồng dạng 137
6.3 Phư ơng pháp D a n h ile p s k i.............................................. 138
6.4 Phương pháp Krưlôp A.N......................................................145
7 Tìm gầ n đú ng tr ị riê ng và vec tor r i ê n g .................................... 147
7.1 Nội du ng phư ơng ph áp tìm tr ị riê ng t r ộ i ........................147
7.2 Trườ ng hợp m a tr ậ n đối xứng, xác địn h dươ ng . . . 152
8 Bài t ậ p .............................................................................................. 157
C h ư ơ n g 5 . P h é p n ô i s u y v à x ấ p x ỉ h à m .......................................... 161
1 Khái niệ m về nội s u y .................................................................... 161
1.1 Bài toán .............................................................................. 161
1.2 Sự duy n h ấ t củ a đa th ức nôi suy ................................. 163
2 Đ a th ứ c nội su y L a g r a n g e .......................................................... 163
2.1 Đa th ức nội suy L a g r a n g e .............................................. 163
2.2 Sai số của đa thức nôi suy L a g r a n g e .............................. 164
2.3 Chương trìn h M at L ab ................................................. 165
3 Đa th ức nội suy New ton có mốc cách đ ề u ................................. 166
3.1 Khái niệm về sai p h â n .................................................... 166
3.2 Đa thứ c nội suy New ton tiến có mốc nội suy cách đều 168
3.3 Đa thứ c nội suy Ne wton lùi có mốc nội suy cách đều 169
3.4 Sai s ố ..................................................................................... 170
3.5 Chương trìn h M a t L ab ................................................. 172
4 Phép nội suy n g ư ợ c ....................................................................... 173
4.1 Sử dụ ng đa th ức nội suy L a g r a n g e ..................................173
4.2 Trườ ng hợp các mốc nội suy cách đ ề u .......................... 174
4.3 Chương trìn h Ma t Lab ................................................. 174
5 Phư ơn g pháp bìn h ph ươn g tối th iể u ............................................ 175
5.1 Khái niệm về sai số trung bình p h ư ơ n g ........................ 175
5.2 Bài to án .............................................................................. 176
5.3 Xây dự ng phươn g pháp t í n h ...............................................177
5.4 Sai số của phư ơng pháp ................................................. 179
5.5 Trư ờn g hợp { a (x')} a.=õ77 là hệ trự c c h u ẩ n .....................180
MỤC LỤC 5

5.6 Trương hợp hệ cơ bàn là hệ đại s ố .....................................181


5.7 T rưòn g hơp hệ cơ bàn là hệ lương g i á c ........................... 182
5.8 Chương trìn h Mat L ab .................................................... 185
6 Tìm hàm thưc nghiệm theo phương pháp bình phương tối thiể ul8 5
6.1 H àm thực nghiệm dang y = ae1>x. (a > 0 ) ...................... 186
6.2 H àm thự c nghiệm dang y = ax1’, (a > 0, X > 0) . . 187
6.3 Chương trìn h M a t L ab .................................................... 189
7 Bài t ậ p ............................................................................................... 189
C h ư ơ ng 6 . Đ ạo h àm , tíc h p h â n v àp h ươ n g tr ìn h v i p h â n . . . 193
1 Tín h dạo h à m .................................................................................. 193
1.1 Tính đao hàm nhờ đa thức nôi suy Lagrange . . . . 193
1.2 Trưò ng hơp các mốc nôi suy cách đề u n h a u ...................194
1.3 Trư òng hợp n = 2 .................................................................194
1.4 Trư ồng hơp n = 3 .................................................................195
2 Tính gần đúng tích phân xác định ................................................ 197
2.1 Mỏ đ ầ u .................................................................................. 197
2.2 Công thức hìn h th a n g ...........................................................197
2.3 Công thức S im p s o n ..............................................................202
2.4 Chương trìn h M a t Lab ....................................................205
3 Giải gần đú ng phương trìn h VIphản (bài toán Cauchy) . . 205
3.1 Mỏ đ ầ u ....................................................................................205
3.2 Bài to án C a u c h y ....................................................................206
3.3 Phương pháp giải bài toán Câuehy ............................ 206
3.4 Chương trìn h M a t L ab .................................................... 21 6
4 Giải phương trìn h vi ph ân cấp cao và hê phư ơng trìn h vi phân 217
4.1 Bài to án .................................................................................217
4.2 Công thức E u l e r .................................................................... 218
4.3 Công thức dạn g R u n g e -K u tt a ...........................................218
4.4 Chương trìn h M at Lab .................................................... 219
5 Bài t ậ p ................................................................................................. 220

Tài liệu tham k h ả o ......................................................223


6 MỤC LU C
CHƯƠNG 1
S ai sồ

§1. SỐ XẤP XỈ, SAI SỐ

T
rong tín h to án, t a phả i làm việc với các giá trị g ần đún g của một
đại lượng, vì vậy luôn có sai số. Việc hiểu rõ sai số đó là rất cần
thiết. Giả sử A là đại lương cần ng hiên cứu, nh ưn g thưc tế ta chỉ
thu được đại lượng gần đúng với nó, ký hiệu là a. Khi đó, ta nói a là số
xấp xỉ của A và ký hiệu a. « A.

1.1 Sai số tuy ệt đối


Đại lượng A = |a - A\ được gọi là sai số tuyệt đối của số xấp xỉ o. Do
A nói chung không biết nên không thể biết được A. Vì vậy, người ta đưa

ra càn trên của A và goi là sai số tuyệt đối giới han cho phép của a.

D inh n g h ĩa 1.1. Sai số tuy ệt đối giới han cho phép của số gần đ úng a là
số A„ > 0 th ỏ a m ãn

a — A I< Aa hay a —A a < A < a + A„. ( 1 . 1)

T ất nh iên, ta luôn m ong tìm đươc A(1 càng nh ỏ càng tốt. K hi đó, bất
đẳng thức (1.1) cũng có thể đươc thay thế bởi đẳng thức

Ia - A\ - A„ hay A = a± Aa.

7
8 Chương 1. Sai NO

1.2 Sai số tươ ng đối


Để mô tả chất lương của viêc xấp xỉ, người ta goi ỏa = (a ■ 0)
|«|
là sai số tương đối của đai lương a. Sai số tương đối ổ„ thường cỉươc tính
theo tỷ lệ phần trăm (%), nghĩa là

ỏ, = 7 7 X 100%.
M

1.3 Chữ số có nghĩa


Để thống nhất việc biểu diễn các số thập phân trong giáo trình, ta
đưa ra quy ước sau.
Q uy ưó c: Với dạng số thậ p phâ n a — ± *** Oio0.o_i ***, từ đày về sau ta
hiểu dấu "chấm" chính là dấu "phẩy" để phân biệt phần nguyên và phần
thâp phân của số đó. Ví du khi ta viết 2.5 chính là 2,5 như cách viết tay
thông thường.
Trong tính toán cũng như trong máy tính thường sử dụng số trong dang
chữ số thập phân do 10 ký tự 0,1,2,..., 9 tạo nên. Trong một số có nhiều
chữ số, người ta quy ước những chữ số có nghĩa tron g số đó là nhữ ng chữ
số kể từ chữ số khác "0" đầu tiên tính từ trái qua phải.
Ví d ụ 1.1. Số 0.003042 có 4 chữ số có ng hĩa là 3, 0. 4, 2.
Xét m ột ví dụ khá c, số 3600 = 360 X 10 chi có 3 ch ữ số có ng hĩa. Mcăt khác,
nếu viết 3600 = 36 X 102 thì chi có 2 chữ số có nghĩa. Như vậy, thừa số 10*
trong số đó không đươc tính vào chữ số có nghĩa. Cũng với số trên, để có
5 chữ số có ngh ĩa t h ì ta viết 3600 = 36000 X 10“ 1.

1.4 Chữ số tin tưởng, chữ số khả ngh i trong môt số


Định nghĩa 1.2. Giả sử số « — ±a„ ... a^aião, a_ia _2 ... íỉ-n ... có sai số
tu yệt đối giới hạn là Aa. Khi đó, nế u 0 < A„ < 0.5 X 10* th ì ta nói chữ số
as là chữ số tin tưởng] ngược lại (Aa > 0.5 X 10*) thì chữ số as dươc gọi là
chữ số khả nghi.

Từ định nghĩa trên ta dễ dàng suy ra, nếu chữ số as là chữ số tin tường
thì moi chữ số đứng trưóc nó đều là chữ số tin tưởng, nế u as là chữ số khà
2. Các phép tính về sai số 9

nghi thì mọi chữ số đứng sau nó đều là chữ số khả nghi.
Ví dụ 1.2. Giả sử số a — 2.5785030 có sai số tuyệt đối là Aa = 0.0043.
Do Aa 0.43 X 10 2 < 0.5 X 10 2 nê n chữ số th ứ h ai sau dấ u ch ấm là
chữ số tin tưởng. Vây số a có 3 chữ số tin tường là 2,5, 7 còn các chữ số
8. 5, 0, 3,0 là các chữ số khả nghi.

1.5 Sa i số qu y tròn và quy tròn số


Trong tính toán, ta tính đươc số n có nhiều chữ số, thường phải ngắt
bớt và chỉ giữ lai một số chữ số trong số đó và th u được số ã để tín h tiếp.
Việc thay a bởi ã đươc gọi là sự quy tròn số và đại lượng tía = Ia —ã I đươc
gọi là sai số quy tròn.
Quy ước: Nếu chữ số dầu tiên (kể từ trái sang phải) trong các số bị bỏ
di của số a lớn hơn hoặc bằng 5 thì chữ số cuối cùng được giữ lại liền kề
trước nó được tăng lên một đơn vị, ngược lại thì giữ nguyên.
Ví dụ 1.3. 1. Hãy quy tròn số a = 237.542457 để được số ã có 2 số lẻ
thàp phân. Theo quy ước trên thì ã — 237.54.

2. Cho số h — 237865. Hãy quy tròn số h để thu đươc số ỉ) chỉ gồm 4 chữ
số. Theo quy ưóc trên ta có h — 2379 X 102.

1.6 Cách viết số xấp xỉ


Giả sử A là số cần tính, ta ehỉ tính được và Aulà sai số tuyệt đối giới
(1

hạn cho phép. Ta viết A — n ± A„ để biểu diễn kết quả tính toán. Còn
cách viết .4 ~ n (xấp xỉ) là cách viết chì gồm các chữ số có nghĩa (thưồng
là số tin tưởng như trong bảng tính, bảng logarit, bảng giá tri các hàm
số lương giác,...).

§2. CÁC phép tính VỀ SAI số

2.1 Các phé p tính


Giả sử đại lương / có sai số tuyệt đối giới h ạ n là A ; và sai số tương
đối là Ố/. Ta đả biết A / - |A /| (A / là số gia của đai lượng /). Khi đó:
10 Chương 1. Sai số

1. Nếu u = X + y + z thì Au = A x 4- Ay + Aj, (.T. y.z > 0).

2. Nếu XI — X — X) thì ốu — (.T, y > 0).


F - yI
3. Nếu u — X 1J Z thì ốu — ốx + ổy + ¿2, ( x , y , z > 0 ) .

4. Nếu u — — thì ốu — óx + óy, (x, y > 0).

Chứng minh. Ta sẽ chứng minh cho trường hợp 2 và 3 còn các trường
hợp 1 và 4 được chứng m inh tương tự.

2 . Vói =>■ A?í —A.r —A y =>■ |A?/| < |A.r| 4- |Ay|


u —X —y
Ax + Ay
hay Au < Ar + Ay => -ị-Ỵ <
M \x-y\
Ax 4 Ay
l*-y| ’
3. Ta có

u —xyz = > ln u — ln X + ln y + ln í
==> A(ln u) = A(ln x) + A(ln y) + A(ln z).

M ặt khác, A(lntt) ~ (ỈClnu) = — ~ . Tương tự ta củng có


XI. u

A ( l n .r ) w — ; A ( l n y ) ^ = ^ ; A(ln z) « — .
X y z
Khi đó
Au A.r Ay Az
u X y z
Au Ax Ay Az
+ +
XI. X V

hay
A u A x Ay A-
ổ„ — -—- — 7 + T—7 + -Ị—Ị- — Óx + Ốy + ổ2.
ỉi I y \z\

Chú ý 1.1. Trong công thức hiệu, nếu \x —y\ quá bé thì sai số sẽ lớn. Vì
vậy, trong tính toán ngưòi ta tìm cách tránh phép trừ các số khá gần
nhau khi tính sai số tương đối của hiệu hai số.
2. Các phép tính về sai số 11

2.2 Công thứ c tổn g quát về sai số


Giả sử u - / (:t'i, X'2, . . . , £•„) với / là hàm kh ả vi liên tục thì

df
A„ = Ẻ dxị A,.. ( 1.2 )
1
= 1

và nếu / > 0 th ì ta có:


dln/
ỏ u = t dxị A, (1.3)
1=1

Chứng minh. Bằn g cách sử dụng công thức số gia hà m số


n Qf
An ~ du = > - - A x ị ,
Ế í dxi
ta có
|An| < ¿
df
1=1
dXị |A.r,l
hay
n df
A„ = Ẻ dXị Ax,
1=1

Còn
df
s' = v r m ị Ở X ị
1 ớ/ ỡln/
n

ÌỊ A - T ' Ax..
1=1 / i=1 dx.ị

Dây chính là điều phải chứ ng minh.

Ví dụ 1.4. Tìm sai số tuyệt đối và sai số tương đối giỏi hạn của thể tích
hình cầu V = ^7rá3, nếu đường kính d = 3.7±0.05 (cm) và 7T= 3.14±0.0016.
6

Giải: Xem H và 7Tlà các đối số của hàm V, ta có:

ĩ - ỉ ' ■ ỉ ' « - - «
= I ttíÌ2 = i(3.14)(3.7)2 = 21.5.
12 Chương 1. Sai số

Theo công thức (1.2) ta được sai số tuyệt đối giói hạn
dv dv
Av - An I A,i = 8.44 X 0.0016 I 21.5 X 0.05
dn dd
= 1.088 a» 1.1 (cms).

Vậy V = - Tĩd3 = --(3.14)(3.7)3 ± 1.1 = 27.4 ± l.l (c m 3).


„ . X 3 . Av 1.088
Sai số tương đối ổv — 7777 — - ” « 0.04 = 4%.
IV I 27.4

2.3 Bãi toán ngư ợc về sai số


Trong phần trước ta đã tính sai số của hàm số tùy thuộc vào sai số
của đối số. Bây giờ ta xét trường hợp cho sai số của hàm thì giới han sai
số của đối số cần cho phép là bao nhiêu?

Bài toán: Cho hàm số u = f (xi, X2, ..., :/:„). Hỏi sai số tuyệt đối (hay
tương đối) giới hạn của mỗi đối số là bao nhiêu để sai số tuyệt đối (hay
tương đối) giới hạn của hàm số không vượt quá một số dương cho trước
(số dương này được gọi là sai số cho phép)?
Để giải quyết vấn đề đã đặt ra, có hai cách thường được sử dung.
1. Cách giải quy ết theo n guy ên tắc sai số của các đối số ng an g bằng
nhau.
Theo công thức (1.2) ta có:
df\
A
i—\ dxị I Z| •
Ta xem ảnh hưởng của mọi thàn h phần như n hau , tức là
d f Ar - à f Ar - ■■■- d ĩ A r_
dxi Í-3X1 dl2 dxn
df
Au ttìxị A,
df
—n A r..
=

i—1 dxị
Từ đó ta có công thức sai số tuyệt đối giới hạn cho phép của mỗi
thành phần:
A =-
L*Xl A ¿ = 1. 2, .. ., «. (1.4)
df
dxị
2. Các phép tính về sai số 13

Ví dụ 1.5. Cho hình trụ đứng, hán kính R — 2(m); chiều cao
II 3(m). Hỏi sai số tu y ệt đối của R và II là bao nhiêu để thể tích
V ttR2H của hình tru đat sai số tuyệt đối giới han là 0.1 (m3).

Giải: Ta có

V - 7r/?2//, Ay = 0.1(ra3), R = 2(ra), u = 3(m)

và số 7T= 3.14 th ì khi đó:


¿>v
= /?2// = 22 X 3 = 12;
Ớ7T
6>v
= 7r/?2 = 3.14 X 22 = 12.6;
<97/
ỠV
= 2tĩRII = 2 x 3.14 X 2 X 3 = 37.7.

ỏ đây u = 3, theo nguyên tắc ngang bằng nhau ta thu đươc:
0.1
A„ < 0.003;
3 X 12
0.1
An < 0.001;
3 X 12.6
0.1
A// = < 0.003
3 X 37.7
là các sai số của mỗi thành phần để V có sai số tuyệt đôi giới hạn
kh ôn g vượ t qu á 0.1(m3).

2. Phươ ng phá p điều chinh


Trong thưc tế, khi sai số của thành phần nào đó tính theo nguyên
tắc ngang bằng nhau là không phù hơp (không thực hiện được) ta
phải điề u chin h th à n h phần đó. Chẳng hạn đối vói bài toán sau:

Ví dụ 1.6. Hỏi phải đo bán kính R — 30.5(cm) có sai số tối đa là bao


n h iêu và số 7Tlấy là bao nh iêu để đươc hìn h tr òn có diện tích đạt sai
số tương đối không quá 1%?

Giải: Ta có diện tích h ình tròn s = ĩĩR2, nên ln s = ln7T + 2 ln R, suy


ra sai số tương đối

Ss = % = -A „ + j - A R = 1% = 0.01.
s 7T R
14 Chương 1. Sai số

Theo nguyên tắc ngang bằng nhau (có hai thành phần) thì
A* —0 _
Afí 0.01
= 0.005.
n “ R
Từ đó suy ra

• A* — 7T X 0.005 < 0.0016 vói 7T= 3.14;


• A r = — X 0.005 < 0.07(cm) với R = 30.5(cm).

Rõ ràng đối vói R khó thực hiện được vì Alì quá nhỏ, do đó cần phài
t ă n g A r lên. Đo tổng cả hai thà n h phầ n là 0.01 nên khi A r tăng thi
A* phải giảm, nghĩa là cần phải lấy thêm chữ số thâp phân trong
số n.
", , , 3.142-3.1416 T„ , ,
C hẳ ng ha n, lấy 7T= 3.142 th ì —- — ----- ------ :------ —0.00013. Khi đó
7r 3.142
2 = ^ = 0.01 - 0.00013 = 0.00983, suy ra
0.00983
Ar = X 30.5 < 0.15(cm).
2

Ta th ấy yêu cầu của độ chính xác này có th ể thư c hiệ n được.


Q ua ví dụ trê n ta thấy, việc điều chỉnh là tùy thuộc công việc, không
theo nguyên tắc chung nên chúng tôi chi nêu ví dụ để cùng suy
ngẫm khi thực hiện công việc mà thực tế đặt ra.

2.4 Sai số phư ơn g phá p, sai số tính toá n và sự ổn định


2.4.1. Sa i số ph ươ ng phá p và sai số tính toán

Giả sử cần tính đại lượng .4 mà không có khả năng tính dúng. Bằng
cách nào đó ta tính gần đúng được con số là a, thì Aa = \A —ri| là sai số
phương pháp. Trong quá trìn h tín h toán ta cũng không th u được số (I mà
chỉ thu được số ã do phải quy tròn số. Ta gọi 6a = I(I —õ| là sai số tính
toán . Số gầ n đú ng cuối cùng th u được là ã « .4, khi đó sai số tuy ệt dối
giới hạ n của A (bao gồm sai số phương pháp và sai số tính toán) sẽ là

Aa = lỏ —A\ < |õ —n\ + ịa— A\ — 0a + Aa.

N hư vậy, nếu chọn phương pháp tín h đúng thì sai số phương pháp A„ - 0,
số gần đúng thu được chi là do quy tròn số trong quá trình tính toán.
2, Các phép tính ưề sai số 15

Ví dụ 1.7. Tính A = ( y / 2 - l)10.

Giải: Ta đã biết (theo khai triển nhị thức Newton):

{ V 2 - l ) 10 = A = 3363 - 2378>/2.

Do v/2 = 1.414213563 *-*, kế t qu ả tín h theo bê n trá i, bên p hả i của A (đều


là các phương ph áp tín h đúng) được cho trong bả ng sau:
v/2 vế t r á i của A vế phải của yl

1.4 0.0001048576 33.8


1.41 0.00013422659 10.2
1.414 0.00147912 0.508
1.41421 0.00014866399 0.00862
1.414213563 0.00014867678 0.0001472

Bảng 1.1

Nhìn vào bảng 1.1 ta th ấy, cùng là phương pháp tín h đúng nhưng hai
bên trá i, phải của A k ết quả sai khác nha u quá nh iều, nguyên n hâ n là do
sự quy tròn số sinh ra. Chọn cách tính này hay tính khác phải luôn luôn
kiểm n ghiệm theo th ưc tế vì (\/2 - l) 10 không th ể lớn hơn 1!

Vi dụ 1.8. Hãy tinh đại lượng


n—1
+ •+ (- »
11=1
sao cho sai sồ tu y ệt đối kh ôn g vươt qu á 4 X 10~3

Giải: T a có |5 —5'nl = +• chính là sai số của


(n + 1)2 (n + 2)2
1
phương pháp. Theo lý th u y ết chuỗi đan dấu th ì |S —¿>„1 < 2.
Sai số cuối cùng là tổng của sai số phương pháp và sai số tính toán (do
quy tròn số). Vì vậy, trước hết cần xác định số số hạng (/í) cụ thể sao
cho sai số phương pháp |5 —5n| bé hơn nhiều so vói 4 X 10-3, chảng han
|S’ - Snị < 3 X 10~3, phần còn lại là 10-3 dành cho sai số tính toán. Vậy n
sẽ được chọn sao cho
1
\ s - s n\ < < 3 X 10- n = 6.
(n + 1)2
16 Ch ương 1. S a i số

Khi đó
_Ị_ _ J_ _Ị_ J_ _Ị_ _Ị_
‘i ’6 — 12 — 2 2 ^ 3 2 ” 4 2 ^ 5 2 ” 62

= 1.000 - 0.125 + (0.0037 ± 1 0 '4) - (0.0016 ± 4 X 1 0 '4) I 0.008


- (0.005 ± 4 X 10"4)
= 0.899 ± 9 X 10"4 = s 6 ± 9 X 10-4.

Vậy nếu xem s K s 6 — 0.899 thì ta có đánh giá

ịs - sti\=\s - 0.899 1 < \s - S b| + \stì - ¿ s | <3 X 10”3 + 9 X 10' 1 =


= (3 + 0.9) X 10'3 < 4 X 10"3.

Điều này đảm bảo yêu cầu đăt ra ban đầu.

2.4.2. Sự ổn dịnh của quá trình tính

Dể tính môt đai lượng thườ ng phải lặp đi lạp lai nhiều lần. Q uá trình
tính goi là ổn đinh nếu sai số tính toán (quy tròn số) tích lũy lai không
tăng ra vô han. Ngươc lai quá trình tính đó goi là không ổn đinh.
Thông thường ngưồi ta xét sai số ở một bước tính. Giả sử sau môt số bưóc
tính ta clươc con số, xem số đó là đúng, ta tính một số bước nữa thấy sai
số tăng không đáng kể thì quá trình tính là ổn đinh, ngược lại là không
ổn định. Nói chung, đây là một vấn đề khó, cần được nghiên cứu tiếp.
CHƯƠNG

Ma t L a b c ơ b ả n

HÔNG thưòng, để giải một bài toán thực tế bằ ng m áy tính, ta phải


lần lượt thưc hiện m ột số bưóc sau:

1. Từ các số liệu t h u được tron g quá trì n h thự c ngh iệm , đo đạc,..., xây
dưng mô hình toán học cho bài toán thưc tế đặt ra.

2. Ph ân tích m ô hình, tín h tương thích của mô hìn h to án hoc vói hiên
tương thự c tế (sự tồn tại nghiêm, tính duy n h ất nghiệm,...).

3. Rồi rac hóa mô hìn h để đưa việc tìm lời giải trên miền liên tục của
đối sỏ thành bài toán có số ẩn hữu han trên miền của đối số ròi rạc.

4. Xây dựng thuật toán. Trong bưóc này cần chú ý đến độ phức tạp
của thuât toán, tính hôi tụ, sư ổn đinh của phương pháp giải bài
toán.

5. Cài đặt th u ậ t toán trên máy.

Để thuận tiện cho việc giải số các bài toán, trong giáo trình này chúng
tôi giới thiệu ngôn ngữ lập trình được sử dụng rộng rãi trong môi trường
khoa học và công nghệ - ngôn ngữ lâp trình tính toán M a t La b . D o khuôn
khổ có hạn, trong phạm vi giáo trình này chúng tôi chỉ giới thiệu những
phần cơ bản nhất về M at L a b , đặc biệt là ứng dụng để xây dựng các
chương trìn h min h họa cho các thuật toán trong phần phương pháp tính.

17
18 Chương 2. M atLab cơ bản

Để tìm hiểu thêm về M at L ab cũng như ứng dụng nó vào các lĩnh vực
khác nhau, bạn đọc có thể tìm hiểu thêm tại các tài liêu tham khảo [8, 91.

§1. K h ở i đ ộ n g M a t L a b

Mat Lab (viết tắ t của cụm từ tiến g Anh "MATrix LABoratory") được
th iế t kế bỏi công ty M ath Works, là m ột ngôn n gữ lập tr ìn h bâc cao,
chuyên sử dụng cho các tính toán kỹ thuật, đặc biệt là các bài toán có
dạng ma trận hoặc vector. Mat L ab tích hơp các phép tính toán, đồ họa
và lập trình trong một môi trường thân thiện, cho phép thể hiện các bài
toán cũng như nghiệm của chúng dưới dạng các ký hiệu toán hoc quen
thuộc.
Sau khi cài đặt, cách đơn giản n h ấ t đê khởi đông M at L ab là kích đ úp vào
biể u tư ơng của nó trê n m àn h ìn h Deskto p. Giao diệ n cơ b ản cùa Mat LAH
phiê n bản 7.10.0 (R 2010a) (xem hình 2.1) bao gồm các phần sau:

• C ur ren t Folder: th ư m ục hiện thời. Khi muốn thực thi môt tâp tin
".m", người dùng ph ải chắc chắn rằn g tập tin đó được chứa tron g thư
muc này.

• Command Window: Cửa sổ dòng lệnh thao tác trưc tiếp. Ỏ chế
độ này, sau khi gõ câu lệnh và thực thi (nhấn Enter), kết quả sẽ
được hiển thị ngay trong cửa sổ lệnh. Nếu không muốn in kết quà
ta thêm dấu vào cuối cảu lệnh đó.

• Editor: Soạn thảo chương trình do ngưòi dùng lập ra.

• Workspace: C hứa da nh sách các biến đã đươc kha i báo và sử dung


trong chương trình. Tại đây, ta có thể xem được tên, giá trị, kích
thưóc và có thể sửa giá trị của biến.•

• Command History: Chứa tất cả các câu lênh đã đươc thực thi
trong Command Window. Người dùng có thể kích đúp vào các câu
lệnh bất kỳ để thực thi lại hoặc tạo các "m-files".
2. Biểu thức M at L ab : hiến, số, toán tử, hàm 19

-■ « «M -o» «
#ti *
u
!IH'!

“a * ■
■.- 1: !*•.“ -
HO 1251
b*d-2
ề.*b
0 -I 5 35 d*b

âns ■

Hình 2 . 1 : Giao diện Ma t L ab

§2. B iể u thức MatLa b: biến , s ố, TOÁN TỬ, HÀM

2.1 Biến
Một điều thú vi trong Ma t L ab khác với các ngôn ngữ lâp trình quen
thuộc (Pascal, c,...) đó là Ma t L ab không yêu cầu phải kha i báo trước tên
biến củng n h ư kích thước của nó. Trong Ma t L a b , một biến đươc kha i báo
và khỏi tạo thông qua lênh gán, ví du:

>> num = 98
num =
98
>> pi = 3.1415926535897931
pi =
3.1416
>> msg = 'Hello World'
msg =
Hello World
20 Chương 2. Mat L ab cơ bản

Trong Ma t L ab tên biến có th ể bao gồm các ký tự chữ, số và ký hiệu gach


dưói nhưng p h ả i b ắ t đầ u bằ n g ký tự ch ữ và có độ dài tùy thích.
Tuy nhiên, Ma t L a b chi sử dung N ký tự đầu tiên đươc tính bằng lênh

>> N = namelengthmax
N =
63

Ma t L ab phân biệt chữ hoa và chữ thưòng. Bo đó A và a là các biến khác


nhau. Khi Ma t L a b gặp một tên biến mói, nó sẽ tự động tạo ra và lưu
biến đó trong bộ nhó. Nếu biến đó đã tồn tại, Ma t L ab sẽ thay đổi giá trị
và nếu cần, cấp phát bộ nhớ mối.

2.2 Số
sử dung ký hiệu số thâp phân theo qui ưóc vói số chữ số tùy
M a t L ab

chọn và các dấu +, - cho các số. Ký hiệu khoa học sử dung chữ cái e cho
lũy thừa của 10. số phức sử dung các chữ i hoặc j cho đơn vi ào. Môt số
ví dụ:

3 -99 0.0001
9.6397238 1.60210e-20 6.02252e23
li -3.14159J 3e5i

Tất cả các số được lưu trữ bên trong bằng cách sử dụng long format
theo chuẩn dấu chấm động IEEE (Institute of Electrical and Electronics
Engineers). Các số dưỏi dạng dấu chấm đông có đô chính xác hữu han
vói 16 chữ số thập phân có nghĩa và nằm trong khoảng (ÌO-308,10+308).

2.3 Toán tử
Các biểu thức Ma t L ab sử dụng các toán tử quen thuộc được liệt kê
trong bảng dưới đây theo thứ tự ưu tiên (từ dưói lên trên).
2. Biểu thức Ma t L ab ,- biến, số, toán tủ, hàm 21

Phép toán Ý ng hĩa


Cộng
- T rừ
N h ân
/ Ch ia thông thường
\ Chia trái
A
Lũy thừ a
/
C huy ển vị, chuyển vị liên hợp phức
( ) Xác định th ứ tự ưu tiên của các phép toá n

2.4 Hàm
Mat Lab cung cấp một số lượng rất phong phú các hàm toán hoc sơ
cấp (elementary mathematical functions), ví dụ abs, sqrt, exp, sin,...
Để hiển thị danh sách các hàm toán hoc sơ cấp, nhập vào lệnh

>> help elfun

MatLab cũng đồng thòi cung cấp rất nhiều các hàm toán học nâng cao
(advanced mathematical functions), ví dụ các hàm Bessel và gamma.
H ầu h ết các hàm này chấp n hậ n đối số phức Để liệt kẻ dan h sách các
hàm toán học nâng cao và hàm xử lý m a trận ta dùng các lệnh

>> help specfun

>> help elmat

Một số các hàm như sqrt, sin được cài đă t sẵ n (b uilt-in fun ctions). Các
hàm này là một phần của nhân MatLab nên chúng rất hiệu quả, nhưng
ta không biết được các tính toán chi tiết trong đó. Các hàm khác, ví dụ
bessel được lập trình dưói dạng "m-files". Có một số sự khác biệt giữa
các hàm được cài đăt sẵn và các hàm khác. Đó là, vói các hàm "built-in",
ta khô ng th ể xem m ã, còn đối với các hàm khác ta có th ể xem m ã và thậm
chí sửa đổi nếu m uốn. K iểm chứng điều này bằng các lệnh

>> type sqrt


>> type bessel
22 Chương 2. Mat Lab cơ bán

Nhiều hàm đặc biệt trong Mat L ab cho ta giá trị của các hằng số hữu
ích, được liệt kê trong bảng dưói đây:

pi 3.14159265...
i/ j Đơn vị ảo, \ / - ĩ
eps Sai số tương đối dang dấu chấm động, £
realmin Số thực nhỏ nhất, 2.2251e —308
realmax Số thực lớn nhất, 1.7977e + 308
Inf oc
NaN N ot-a-num ber
Trong đó,

• inf được tạo bỏi phép chia một số khác 0 cho 0, hoặc việc tính giá
tri của một biểu thức toán hoc đúng đắn mà bị tràn bộ nhỏ, tức là
vượt quá realmax.

• NaN được tạo ra khi tín h giá trị củ a m ột biểu thức dạn g vô địn h
hoặc 00 —00.

Ta có th ể gá n cho các h ằn g giá tr i mới, ví dụ:

>> eps = l.e-6

và sử dụng giá trị này cho môt dãy tính toán. Giá trị ban đầu của nó sẽ
được phuc hồi vỏi lệnh

>> clear eps;

§3. CÁC dạng dử liệu cơ bản trong M at L ab

3.1 Vector
3.1.1. Khởi tạo ve cto r

Vector là một ma trận có một hàng hoặc một cột. Để khỏi tạo vector
hà ng ch ứa các giá trị rời rạc, các ph ần tử trong vector phải nằm tron g cặp
ngoặc vuông [ ] và được ng ăn cách bỏi dấu phẩy hoặc kho ảng trắng .
3. Các dang dữ liệu cơ bản trong Mat L ab 23

Ví du:

>> arrl = [ 1 2 3 ]
a rr 1 =
1 2 3
>> arr2 = [0,-5]
arr2 =
0 -5
>> arr3 = [arrl arr2]
arr3 =
1 2 3 0 -5

Để khỏi tao vector hàng chứa các giá trị liên tiếp hoặc cách nhau môt giá
tri nhất đinh (bước nhảy), MatLab sử dụng toán tử và khi đó, giá trị
dầu và cuối của vector không cần thiết phải đặt trong dấu ngoặc vuông
[]. Ví dụ:

>> arrl = 1:5


arrl =
1 2 3 4 5
» arr2 = [1 :0 -5 :2]
arr2 =
1.0000 1.5000 2.0000
>> arr3 = 10 :-1:6
ar r3 =
10 9 8 7 6
>> 0: pi/4: pi
ans =
0 0.7854 1.5708 2.3562 3.1416

Ngược lại, để tạo vecto r cột, ta cần chuyển vị vecto r hàng bằng các h dùng
toán tử " hoăc dùn g dấ u để ngàn cách các ph ần tử. Ví dụ:

>> col_arr=[1:3]'
col_arr
1
24 Chương 2. Mat L ab cơ bản

2
3
>> col_arr=[ 1 ; 2 ; 3 ]
col_arr =
1
2
3

Để tạo vector rỗng (không chứa phầ n tử nào) ta khai báo như sau:

>> emp_arr = []
emp_arr =
(]

3.1.2. Chỉ số
Giá trị của một phần tử tại một vị trí bất kỳ trong vector được ti uy
xuất thông qua chi số. Trong M at La b , chi số luôn bắ t đầ u từ 1 và có
th ể là một giá trị đơn hoặc một mảng. S au đây là qui tắc tru y câp đến các
phần tử của m ảng X thông qua chi số.

• Trích phần tử thứ i: X ( i )

• Trích nh iều ph ần tử: X ( [danh sách các vị tri])

>> arr = 10 : - 1 : 3
arr =
10 9 8 7 6 5 4 3
>> arr( 5 )
ans =
6
>> arr([ 4 , 5 , 8 ])
ans =
7 6 3

Để xóa các ph ần tử tron g vector, ta gán ch ún g vói vector rỗng:


3. Các dạng dữ liệu cơ bản trong Mat L ab 25

>> a r r ( [ 2 5 ]) = []
arr =
10 8 7 5 4 3

Biểu thức logic cho phép ta truy xuất một cách linh hoạt đến các thành
phần của một vecto r hay m a trận . Ví dụ:

>> X = [-1 0 2 3 5 6 7 4 9 ];
>> x>0
ans =
0 0 1 1 1 1 1 1 1
>> X (x> 0 )

ans
2 3 5 6 7 4 9
>> X (x>2 & x<=5)
ans =
3 5 4
>> x>2
ans =
0 0 0 1 1 1 1 1 1

Biểu thức logic thường được sử dụng cùng vói các hàm an y, a l l và
f i n d , được mô tả chi tiết dưới đây.

• any: Kiểm tra xem có tồn tại một phầ n từ cùa vector thỏa m an điều
kiên nào đó không. Nếu có thì trả về 1, ngược lại là 0. Ví dụ:

>> x=[-l 2 3];


>> ar.ỵ (x >0)
ans =
1

• a l l : Kiểm tra xem tấ t cả các phần tử của vector thỏa m ãn điều kiện
nào đó không. Ví dụ:

>> a l l ( x<0 )
26 Chương 2. Ma t L ab cơ bản

ans =
0

* find: trả về các chi số của môt vector thỏa mãn môt điều kiên nào
đó. Ví du:

>> A = [4 3 6 5 7 9] ;
>> find(isprime(A))
% trả về các vị trí có giá trị là một số nguyên tố
ans =
2 4 5

3 .1 .3 . C á c p h é p t o á n c ờ b ả n t r ê n v e c t o r

Giả sử a,b là hai vector có cùng kích thước. Khi đó ta có các phép
toán cơ bản nh ư sau:

a.*b; % nhân từng từ


a.Ab % trả về vector dạng (a_lA( b _ l a _ n A(b_n} )
a.An; % lũy thừa từng từ
a.\b; % chia trái từng từ
a./b; % chia phải từng tù
a & b; % phép hội từng từ
a Ị b; % phép tuyển từng từ
~a; % phủ định
sort(a) ; sort (a,'descend' );
% sắp xếp mảng theo thứ tự tăng, giảm dần
arrayfun(@fn,a);
% tính giá trị hàm fn tại tùng thành phần của a
isequal(a,b); % Đúng nếu a==b
ismember (a,b);
% đúng khi moi phần tử của a đều là phần tủ của b
intersect(a,b); % phép giao 2 tập hợp
union(a,b); % phép hợp 2 tập hợp
setdiff(a,b); % hiệu 2 tập họp
3. Các dạng dữ liệu cơ bản trong MatLab 27

setxor(a,b) ;
% các phần tử không thuộc phần chung của a và b

3.2 Đa thức
Môt đa thứ c bao giò cũn g có dạn g f(x) - anxn + an- i x n 1-ị------f aiX- + a0,
trong đó nếu an Ỷ b thì n là bậc của đa thức và an. an- 1 ,...,ao là các hệ
số. Trong Mat Lab , một đa thức được biểu diễn bỏi một vector hàng có
các t h à n h p h ần là các hệ số theo thứ tư bậc giảm d ần, kể cả hệ số 0. Việc
biểu diễ n này có ưu thế là rấ t gọn nhẹ và cũng th u â n tiệ n cho việc th ực
hiện các phép toán đối vói đa thức sau này. Ví du:

• p= [ 8 5 ] biểu diễn đa thức 8.r + 5;

• h= [ 6 0 -1 5 0 ] biểu diễn đa thủc 6.T2 - 150.

Sa u đây, chúng ta xét một số phép toán cơ bản về đa thức trong MatLab .

1. Tí nh giá trị của đa thức


Để tín h giá trị của m ột đa thức tai điểm X ta sử dung hàm

polỵval(p,x) ;

trong đó,
• p là ve ctor biểu d iễn hệ số đa thức;
• X là một số, biến hoăc biểu thức.

Ví dụ:

>> p = [5 6 -7 3] ;
>> x=2;
>> y=polyval(p,x)
ỵ =
53
28 Chương 2. Mat L ab cơ bản

2. Tìm nghiệm của da thức


Nhắc lại rằng nghiêm của đa thức là các giá tri của biến sao cho giá
tri của đa thức tại đó bằng 0. MatLab có thể tìm các nghiêm của
một đa thức bằng lệnh

r = r o o t3 ( p ) ;

trong đó,

• D là vector biểu diễn đa thức;


• r là vector cột chứa các nghiệm của đa thức.

3. Tìm đa thức khi biết trước các nghiệm


Cho trước các nghiêm của một đa thức, MatLab có thể tính các hệ
số của đa thức đó bằng lệnh

p=polỵ(r);

trong đó,

• r là vector hàng hoặc cột chứa các nghiệm của đa thức;


• p là vector hàng chứa các hệ số của đa thức.

4. Cộng đa thức
Đ ể cộng, trừ hai đa thức trong Mat L ab thì các vector hệ số cần
phải cùng kích cd, do đó vector có độ dài ngắn hơn phái dưdc thêm
các phần tử 0 vào phía bên trái. Ví dụ, để công hai đa thức /i(.r)
3.T6 + 15z5 —10.T3 —3.T2 + 15.T —40 và / ( ?) = 3.T3 —2z —6 ta thưc hiên
2 3

như sau:

» p l = [3 15 0 - 1 0 - 3 15 - 4 0 ] ;
» p 2 = [0 0 0 3 0 - 2 - 6 ] ;
>> p=pl+p2
p =
3 15 0 - 7 -3 13 -46

Đa thức kết quả f ( x) = 3x6 + 15x5 —7x3 — ‘ + 13x —46.


Ằx2
3. Cäc dang dü lieu cö bän trong MatL ab 29

5. N h ä n d a th ü c
Cü phäp:

c=conv(a,b);

trong dö,

• a vä b lä cäc vector he so cüa cäc da thüc

• c lä vector he so cüa tich

6. Chia da thüc
Cü phäp:

[ q , r ] = d e c o n v ( u, v) ;

trong dö,

• u lä vector he so cüa cäc da thüc bi chia;

• v lä vector he so cüa cäc da thüc chia;

• q lä vector he so cüa thiiöng;

• r lä vector he so cüa phan du.

7. Dao h ä m cüa d a th üc
Mat Lab cö the tinh dao häm cüa da thüc böi lenh

k.-polyder (p );

trong dö,

• p lä vector he so cüa da thüc;

• k lä vector he so cüa dao häm.

Vi du:

» p = [3 -2 4];
>> k=polyder(p)
k =
6 -2
30 Chương 2. Mat L ab cơ bản

8. N guyên h à m của đa th ức
M a t L a b có thể tính nguyên hàm của đa thức bởi lênh

g=polỵint(h,k);

tron g đó,

• h là vector hê số của đa thức;


• g là vector hệ số của nguyên hàm;
• k là hằ ng số tích phâ n, mặc định là 0.

3.3 Ma trận
3.3.1. N hập m a trận

Khi nhập m a trâ n trong môi trường dòng lệnh, ta phải tu ân theo các
qui định sau:

• Ngăn cách các phầ n tử trên môt hàn g của m a trậ n bời dấu hay
khoảng trắng;

• Dùng dấu để kết thúc môt hàng;

• Bao các ph ần tử của m a trậ n bời cặp dấu [ ].

Ví dụ:

» A = [ 1 63 2 1 3 ; 51 01 18 ; 9 6 7 1 2 ; 4 15 14 1]
A =
16 3 2 13

5 10 11 8

9 6 7 12

4 15 14 1

Khi muốn nhâp một ma trận có kích thước lỏn thì cách nhâp trưc tiếp tư
cửa sổ lệnh là không phù hợp, ta thưòng sử dụng hàm l o a d hoặc tao một
"m-íìle". Hàm l o a d đọc một file văn bản chứa các dữ liệu số. File văn bản
phải được tổ chức như là môt bảng chữ nhật của các số, cách nhau bời
3. Các dang dữ liệu cơ bản trong Mat L ab 31

các khoả ng trắn g, mỗi hà ng trên mỗt dòng và số ph ần tử trên mỗi hàng
là như nh au . Ví dụ, ta tạo file m atrix.dat có nôi du ng sau:

16.0 3.0 2.0 13.0


5.0 10.0 11.0 8.0
9.0 6.0 7.0 12.0
4.0 15.0 14.0 1.0

Khi đó, lệnh

>> load matrix.dat

sẽ doc file và tạo ra một biến matrix chứa các phần tử như trên.
Ta có thể tạo ra các ma trận bằng cách sử dụng các file văn bản chứa
mã Mat Lab C’m-files"). Sử dụng trình soạn thảo Matlab Editor hoặc
môt trình soan thảo bất kỳ tao ra mót file chứa các lênh giống như dùng
trong môi trường dòng lệnh MatLab , sau đó lưu file này dưới dạng ”.m”.
Ví dụ, tạo ra một file chứa 5 dòng sau:

A = [ ...
16.0 3.0 2.0 13.0

5.0 10.0 11.0 8.0


9.0 6.0 7.0 12 .0

4.0 15. 0 14. 0 1.0 ];

Lưu file trên dưới tên matrix.m. Khi đó lệnh

>> matrix

sẽ đọc file và tạo ra một biến A có các phần tử như trên.


Ngoài ra, Mat Lab củng cung cấp các hàm đê tạo các ma trận cơ bản,
được liệt kê trong bảng sau:
32 Chương 2. Mat Lab cơ bả.n

zeros Tấ t cả các phầ n tử bằng 0


ones Tấ t cả các phần tử bằng 1
rand Các ph ần tử có ph ân bố đều tr ê n [0,1]
randn Các phầ n tử có ph ân bố chu ẩn
magic(n) Tạo ra m a trận cấp n gồm các số nguyên từ 1 đến n2
với tổng các h àn g b ằng tổng các cột n > 3
pascal(n) Tạo ra m a trậ n có các phầ n tử lấy từ tam giác Pascal
eye(n) Tạo ma t rậ n đơn vị cấp n

Sau đây là môt số ví dụ:

>> Z = z e r o s ( 2 , 4 )
z =
0 0 0 0
0 0 0 0
>> F=5* o n es ( 3)
F =
5 5 5
5 5 5
5 5 5
>> R=randn(4)
R =
0.5377 0.3188 3.5784 0.7254
1.8339 -1.3077 2.7694 -0.0631
-2.2588 -0.4336 -1.3499 0.7147
0.8622 0.3426 3.0349 -0.2050

3.3.2. C hỉ số

Sau đây là quy tắc truy cập đến các phần tử của ma trân thông qua
chỉ số.

• Phầ n tử ỏ hàng i , cột j của m a trậ n (cỡ ni X n) A là A ( i , j ) .

• Ta cũng có th ể tha m chiếu tói ph ần tử của m ảng n hò m ột chì số. Ví


dụ phần tử A ( i , j ) ứng với A(k) vói k = i + ( j — 1)rn (duyệt theo cột,
3. Các dạng dữ liệu cơ bản trong Mat Lab 33

từ trên xuống dưới, từ trái qua phải). Để chuyển từ chì số ma trân


san g chỉ số m ảng mót chiều dùng lênh

>> k = s u b 2 i n d ( s i z e (A),i , j ) ;

Ngược lai, để chuyển từ chỉ số m ảng môt chiề u sang chỉ số m a trậ n ,
ta dùng hàm ind 2 su b như sau:

>> [ i , j ] = i n d 2 s u b (s i z e (A), k ) ;

• Trong M a t L a b , chi số cuối cùng của h àng ha y cột của m a trậ n hoặc
vector có thể thay thế bỏi end. Ví dụ:

>> x = [ l 2 3; 4 5 6] ;
>> y =x ( 1 : e n d , 1 : e n d - 1 )
ỵ =
1 2
4 5

Dể xác đinh kích thưỏc của môt ma trân ta có thể dùng lênh le n g th (trả
về kích thước lớn nh ất) hay lệnh s i z e (số hàng và cột). Ví dụ:

>> c = [1234; 5678];

>> l e n g t h (c )
ans =
4
>> [m, n] = s i z e ( c )
m =
2
n =
4

Các lệnh tí n h kích thước của m a tr ậ n được liệt kê dưới bảng sau:
34 Chuang 2. Mat L ab ca ban

whos Hien thi cac bien trong khong gian lam viec
cung kich cd tiidng ufng
s = size(A) Tra ve la vector hang s, s(l) - so hang va s(2) - so cot
[r, c] = size(A) Tra ve hai so r, c dng vdi so hang va so cot
r = size(A,1 ) T ra ve so h a n g cua A
c = size(A,2) Tra ve so cot cua A
n = length(A) Tra ve max (size (A) ) khi A khac []

Cac bieu thuc chi so co the tha m chieu den m ot ph an cua m a tran . Vi du,
viet A ( 1 : k, j ) la tham chieu den k phan tii dau tien cua cot j cua ma
tra n . Ngoai ra toa n tOt th am chieu tdi t a t ca c a c p h a n t i i trong m ot
hang hay mot cot. Vi du:

>> A(:,3) % Tra ve cot thu 3 cua ma tran


ans =
2
11

7
14

va:

>> A (3,:) % Tra ve hang thu 3 cua ma tran

ans =
9 6 7 12

Viet B = A ( : , [ 1 3 2 4 ] ) se tao ra ma tran B bang each doi thii tii


cac cot tit [ 1 2 3 4 ] thanh [1 3 2 4]

>> B=A(:, [1 3 2 4 ] )
B =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
3. Các dạng dữ liệu cơ bản trong Mat Lab 35

3.3.3. Ph ép ghé p nối các ma trận

Trong Ma t L a b ta có thể ghép nối các ma trận nhỏ để tạo thành các
ma trận lón hơn một cách rất đơn giản. Cụ thể, vói hai ma trận A, B, ta
có thể có các cách ghép nối như sau:

• c= [A B] (vói điều kiện các ma trận A, B phải có cùng số hàng);

• D= [A; B] (vói điều kiện các ma trân A, B phải có cùng số cột).

Ví dụ:

>> A=ones (3)


A =
1 1 1
1 1 1
1 1 1
[A A+3; A+4 A+6 ]

1 1 1 4 4 4
1 1 1 4 4 4
1 1 ] 4 4 4
5 5 5 7 7 7
5 5 5 7 7 7
5 5 5 7 7 7

Ta có thể xóa hàng và cột của ma trận bằng cách gán cho chúng giá trị
[ ]. Ví dụ:

» A=[ l 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> X=A;
36 Chương 2. Mat L ab cơ bàn

Để xóa cột thứ 2 của X, dùng lệnh:

» X(:,2) = u
X =
1 3
4 6
7 9

3.3.4. Môt số lện h xử lý ma trận

Cộng X = A + B
T rừ X = A - B
N h ân m a trậ n X = A * B
N hân các p h ần tử tư ơng ứng vói n h au X = A.*B
Chia X = A / B , khi đó X*A = B
Chia trái X = A\B, khi đó A*X =
Chia các p hầ n tử tương ứng cho nh au X = A. / B
Lũy thừa X = AA2
Lũy thừa từng từ X = A.A2
Chuyển vi X = A'
(liên hơp đối vói ma trân phức)
Chuyển vi (không liên hợp) X = A. '
Nghịch đảo X = inv(A)
Dinh thức d ■ det (A)
Hệ đại số tuyến tính Ax = b N ghiệ m X = A\b
Phân tích Cholesky R = c h o i (A)
Phân tích LƯ [L,Ư]= lu(A)
Ph ân tích QR [Q,R] = qr(A)
Giá tri riêng, vector riêng e i g ( A), [d,r ] = e i g (A)
Quay ma trận B = r o t 9 0 (A)
Đảo m a trận từ trái sang phải c = f l i p l r (A)
Đảo ma trậ n từ trên xuống dưới D = flipud(A)
Định dạng lại ma trận A r e s h a p e (A,m,n)
với số hàng mỏi m và số cột mỏi n
4. Vẽ dồ thị trong Mat L ab 37

Lấy các p hầ n tử trê n đường chéo chính d i a g (A)


và lưu th àn h mộ t vector
Chọn dư ờng chéo tùy theo giá trị của k diag(A,k)
k= 0 chon đường chéo chính;
k >0 chon đường chéo th ứ k phía trên
đường chéo chính ;
k<0 chọn đường chéo th ứ k phía dưới
đường chéo chính ;

§4. VẼ Đồ THỊ TRONG MATLAB

4.1 Đồ th ị 2D
Lệnh cơ bản để vẽ đồ thị một hàm số trong không gian hai chiều:

>> p lo t (x, f (x) )

tron g đó, X là vector chứa miền xác định của hàm có biểu thức là f ( x ) .

Ví dụ 2.1. Vẽ đồ thị hàm số y - sin(.r) với X biế n th iên tron g khoảng


[0,2*]:

X = 0:pi/100: 2*pi;
ỵ = sin ( X ) ;
plot(x, y);

Ta có thể chú thích thêm cho đồ thị bằng cách dùng các lệnh trong bảng
dưới đây.
38 Chuong 2. Ma t LAB co ban

0.8

0.6

0.4

0.2

0
- 0.2

-0.4

- 0.6

- 0.8

-1
0 1 2 3 4 5 6 7

Hinh 2.2: Do thi ham y — sin(a)

t e x t (x , y, D at chu th ic h len do thi ta i to a do (x , y)


gtext Dat chu thich len do thi,
vi tri dildc xac dinh bdi click chuot
t i t l e ( '. : ) Tieu de cua do thi
legend ) Them chu giai cho do thi
xlabel Ghi nhan cho true Ox
ylabel Ghi nhan cho true Oy
\b f Font in dam
\ it Font in nghieng
\rm Font chii th iid ng
h o ld o n / o f f B at/ta t che do cho phep ve nh ie u do thi
trong cung mot he true toa do

Ta co th e chon cac tiiy chinh ne t ve, da u va m au sac bang len h

>> plot(x,y,'color_style_marker' );
4. Vẽ dồ thị trong Mat L ab 39

Trong đó:

• M àu sắc (color): 'c '-c y a n , 'm '-tím (m agenta), 'y '-v à n g (yellow),
' r ' -đỏ (red), ' g' -xanh lá cây (green), ' b' -xanh nước biển (blue),
'w' -trắn g (white) và ' k' -đen (black).

• Nét vẽ (style): ' : nét liền, ' — ': nét đứt, ' : ' : chấm chấm, ' - . ' :
gạch chấm.

• Dấu (m arker): 'o', '*' và 'x' ;'s':□, ’d’:♦ ,'A': A, 'v'


▼, 'p': , 'h':ngôi sao 6 canh.

Các tùy ch ỉnh m àu sắc và độ rộng của nét vẽ___________


LineWidth Độ rộng của nét vẽ, tính bằng pt
MarkerEdgecolor M àu sắc của đưồng viền dấu
MarkerFacecolor M àu bên trong dấu
Markersize Độ lổn của dấu, tính bằng pt
Ví dụ 2.2. X = -pi : pi/ 10 : pi ;
y = tan(sin(x)) - sin (tan (x) );
plot(x,y,,-rs' LineWidth' ,2 / MarkerEdgecolor' ,' k' , . ..
'MarkerFacecolor',' g', 'Markersize' ,10)

Hình 2.3:
40 Chương 2. Mat L ab lơ hàn

Để xác đinh tọa độ, tùy chỉnh các kiểu tọa độ, ta có thể dùng các lênh
sau:

a x i s ( [ xmi n xmax ỵ m in ỵ m a x ] )
xlim([xmin xmax])
ỵlim([ỵmin ymax])
axis on/off/auto
axis normal/square/equal/tight
axis ij/xy
grid on/off

Để vẽ nh iều đồ th ị tron g cùng m ột cửa sổ, ta có th ể d ùn g lệnh:

>> s u b p l o t (m, n, p ) ;

Lệnh trên sẽ tạo ra một m a trận m hàng, n cót chứa rn X II đồ thị, u là vi


tr í của từ ng đồ thị, thứ tự từ trên xuống dưới.

V í d ụ 2.3. Vẽ 6 đồ thị tro ng cù ng một cửa sổ.

>> t=0:0.1:2*pi;
>> yl= sin(t) ; y 2 = c o s ( t ); ỵ3=tan(t);
>> y4= yl+ ỵ2; y5=y2+y3; ỵ6=y l+y3;
>> su bp lot (2,3,1 )
>> p lo t ( t , ỵ l )
>> t i t l e ('yl' )
>> su b p lot (2,3,2)
>> p l o t ( t , ỵ2)
>> t i t l e (' ỵ2 ' )
>> subplot(2,3,3)
>> p lo t (t,y3)
>> t i t l e (' y 3' )
>> s u b p l o t (2, 3, 4)
>> plot(t,y4)
>> title ('ỵ4')
>> subplot(2,3,5)
4. Vẽ đồ thị trong M at L a B

>> plot (t,y5)


>> t it le ('y5' )
>> subplot(2,3,6)
>> plot (t,ỵ6)
title ('y6' )

y1 y2 y3

Hình 2.4:

4.2 Đồ thị 3D
Lênh cờ bản

>> plot3 (x, y, z)

Trong plot3, ta cần xác định các vector (x. ụ, z). Để vẽ mặt z — f(x, ụ) ta
thường sử dụ ng lệnh

>> meshgrid(x,y)
42 Chương 2. M a t L a b cơ bản

Ví d u 2.4. (hình 2.5)

>> t = 0:0.02*pi:25*pi;
>> X = sin(t); y = cos(t);

>> z = t;
>> plot3 (x,ỵ,z);

Hình 2.5:

Ví dụ 2.5. Vẽ măt z(x, y) = x2ye *2 y2 vói —4 < X < 4; —4 < y < 4 (hình
2.6) .

[ x , ỵ l = m e s h g r i d ( [ —4 : 0 . 1 : 4 1 ) ;
z =x . * x . * ỵ . * e x p ( - X . A 2 - ỵ . A 2 ) ;
plot3 (X /ỵ ,z)

Bạn đọc có th ể th am khảo mộ t số lệnh khá c (đoc help!).

• c o n t o u r / c o n t o u r f / c o n t o u r3

mesh / meshc / meshz


5. Lâp trình vói Mat L ab 43

0 2-,

Hình 2.6:

surf / surfe

waterfall

bar3 / bar3h

pie3 / fill3

• comet3 / scatter3 / Stem3

Để in và xu ất đồ thị dưới các định dạng khác nh au , cách thôn g dụ ng n hấ t


là dùn g Plo tting Tools .

§5. LẬP TRÌNH VÓI MATLAB


Cũ ng giống như các ngôn ngữ lâp trình khác, một thủ tuc chu ẩn của
việc sử dụng lập trình M a t LAB để giải quyết một bài toán kỹ thuật bao
gồm các bước:

1. P h ân tích bài toá n và xác định sơ đồ giải (trê n giấy);


44 Chương 2. Mat Lab cơ bàn

2. Phá c thả o các công thức tín h to án (trê n giấy);

3. Viết chương trình M at L ab ("m-files") sử dụng MATLAR Edi-


tor/Debugger;

4. Kiểm ngh iệm và sửa lỗi;

5. K hai thác chương trìn h để giải bài toán.

Các chương trình Ma t La b được chứa trong các ”m-files” (phải có duôi
là các file văn bản thông thường, không phải file nhị phân và
phải được đặt tron g đưòng dẫn hiệ n thời trong cửa sổ C om m and W in 
dow. Có hai loại chương trình Ma t Lab là thủ tục (script) và hàm (func
tion). M a t L ab quản lý đường dẫn trong của nó. Môt chương trình có
thể tồn tai và không có lỗi nhưng có thể vẫn không chay nếu Ma t Lab
không tìm thấy nó. Ta có thể thay đổi đưồng dẫn bằng cách dùng các
lênh p a t h , a d d p a t h và rmpath.

5.1 Thủ tụ c (Scr ipt)


Các thủ tục không thưc sự là các chương trình bởi vì chúng không có
các dữ liệu inpu ưo utp ut. về bản chất, th ủ tuc bao gồm m ôt khối các câu
lệnh được thưc hiện một cách tuầ n tự khi ta gọi tên th ù tục dó. Một điều
cần lưu ý khi sử dụng thủ tục, đó là các biến đươc dùng trong thủ tuc
là môt phần của không gian làm việc. Các thủ tục trong M at Lab luôn
tạo ra các tác dụng phu, lý do là bởi tất cả các biến đươc tạo ra trong thủ
tục sẽ được thêm vào không gian làm việc mà không đưa ra khuyến cáo
nào cả. Điều này sẽ có ản h h ưởng đá ng k ể bởi vì các biến đ ã tồn ta i trong
khô ng gia n làm việc có thể bị viết chồng lên.

Ví du 2.6. Xét thủ tục e a s ỵ p l o t :

% Load
D=lo ad( ' x ỵ .d a t' ) ; %D is a m a t r i x w i t h t wo c olu m n s
X=D(:,1); % X is the first column,
y= D( :,2) ; % y is s ec o n d one
p lo t( x ,y ) % G e n e r a te t h e p l o t and l a b e l it
5. Lập trình vối Mat L ab 45

xlabel( ' X axis')


ỵlabel('ỵ axis')
title('Plot of generic x-y data set')

Thủ tue easyplot kh i được được thực


thực thi sẽ tác động lên
lên kh ôn g gian làm việc
việc
bằ
b ằ n g c á c h t a o r a b a b iế n D, X v à y. Cụ thể:

>> clear
>> who
(Không có biến nào trong Workspace trước khi chạy thủ tục.)
>> easỵplot
>> who
Your variables are:
D X y

Trong M a t L ab thì các hàm có rất nhiều tiện ích so vói các thủ tục, do đó
các
các chuyên gia đều k hu yến cáo
cáo rằng luôn luôn
luôn sử
sử dụn g hàm thay cho
cho thủ
tục.

5.2
5.2 H àm "m
"m-fil
-files"
es" (F u n ctio n )

Trong M a t L ab thì bat buọc tẻn hàm phải irung vói tén cùa file có
đuôi ”.m”. Hcàm là môt chương trình sử dung các tham số đầu vào/ra để
kết hơp ch ún g vối
vối các hà m khác và các
các lênh trong C om m and Wind
Window.
ow. Các
Các
b iếnn (ỉươc s ử dung trong hàm là các biến đĩa phưnng
biế phưnng (local variables), chì
tồn tai khi hàm đang thưc thi. Các biến địa phương này đươc phân biêt
với các biến trùng tên trong không gian làm việc hoặc của các hàm khác.
Các dử liệu đầu vào của hàm cho phép cùng một thủ tục tính toán (cùng
thuật toán) có thê được áp dụng với các dử liệu khác nhau. Do đó, các
hàm "m-files" có thể dùng lại nhiều lần. Trong M a t L ab thì các hàm có
thổ gọi
gọi các
các hà m kh ác đồng thời
thời các
các thủ tue riêng có
có th ể gói
gói vào tron g m ột
hàm. Các tiếp cận này cho phép phát triển lời giải cấu trúc của các bài
toán phức tap.
về cú ph áp , dò ng d ầu tiên của h àm ”m-file”
m-file” bao
bao gi
giờ cũn g có
có dạng:

function [outArgs]=funName(inArgs)
46 Chương 2. Mat Lab cơ bàn
bà n

tron g đó outArgs là dan h sách các các biến đầu ra , đư


được
ợc đ ặ t tron g [ ], cách
cách
n ha u bỏi dấ u Nếu chi có một tha m sốsố đầu ra th ì dấ u t ] là tùy chon.
chon.
Hàm mà không có outArgs vẫn là hơp lệ. Trong khi đó, danh sách các
biế
b iế n đ ầ u vào
và o inArgs được đ ặt trong ( ), cáchcách nh au bởi dấu H àm mà
khô ng có inArgs vẫn là hợp hợp lệ.
lệ. Có th ể kiểm tra tín h hơp lệ lệ của tên
tên hàm
bằ
b ằ n g c ách
ác h d ù n g lệ n h
>> isvarname funName

Xét ví dụ v ề c á c h a m : __________________
______________________________________
____________________ __
twosum.m: two inputs, no output

function twosum(x,y)
% twosum
two sum Add two matrices
matri ces and print the result
x+y

threesum.m: three inputs, one output

funct
fu nction
ion s=threes
s=th reesum(x
um(x,, y, z)
% threesum
thre esum Add three matrices and return the result
s=x+y+z;

addmult.m: two inputs, two outputs

function [s,p]=addmult(x,y)
% addmult Compute sum
sum and product of
of two matrices

s=x+y;

p - x * y ; ________________________
________________________________________________
_____________________________________
_____________
Bây giò, ta xét cách thưc thi hàm twosum:

>> twosum(2,2)
ans =
4
>> x=[
x=[ll 2]
2];
; y=[
=[33 4] ;
>> twosum(x,ỵ)
ans =
4 6
5. Lập trình vói Ma t Lab 47

>> A = [1 2 ; 3 4] ; B = [5
[ 5 6;
6; 7 8 ] ;
>> two su m (A, B) ;

ans =

6 8

10 12

>> clear

>> X = 4; y = - 2;

>> two
tw o sum
su m (1,
(1,2)

ans =

3
>> x+y
ans =

2
>> di sp([x ỵ])
4 -2

>> who

Your variables are:


ans X ỵ

Trong ví dụ trên, các biến X và y được khai báo trong không gian làm
việc khác với các biến X, ỵ được xác định trong hàm twosum. Các biến
X, ỵ trong twosum là các
các biến
biến địa phương tron g h àm này.
này.
Có thể tom tắt về các tham số Input va Output và việc quản lý chúng
trong
trong hàm như sau:
sa u:

• Các giá tr ị được


được kết hơp thông qu a các
các dữ liệu
liệu in p u t và ou tput.

• Các biến đươc


đươc đinh ng hĩa tron
tron g môt hàm là biến
biến đia phương. Các Các
hà m kh ác và môi trưò
trưò ng cửa sổ lênh sẽ khô ng ’’’’n h ìn ” đư
đươc
ơc chúng.

• Khi goi
goi hà m để thực
thực th i thì số
số lượng các
các biến trả về nê n trù n g vớ
với
số lượng
lượng các biến ou tpu t trong
trong hàm .•

• Mỗi hàm có các biến nội tại bao gồm nargin (number of input ar-
gum ents) và nargout (number of ou tput argum ents);
48 Chương 2. Mat Lab cơ bân

• Sử dụ ng giá trị nargin trong p hần đầu c ủa hàm để xác


xác định có
có bao
bao
nhiêu biến đầu vào sẽ đươc sử dung.

• Sử dụn g giá giá tri nargout trong phần cuối của hàm để xác định số
biế
b iếnn đ ầ u r a m o n g m u ố n .
Lợi ích của công việc trên là cho phép môt chương trình đơn có thể thực
hiện nhiều công việc liên quan, đồng thời cho phép các hàm đặt các giá
tri mặc đinh của một số biến đầu vào, do đó làm đơn giản việc sử dụng
hàm trong m ột số
số trườn
trườn g hợp.
hợp.
Ví dụ 2.7. Xét hàm plot:

Câu lệnh gọi hàm nargin nargout


p lo t (x,ỵ) 2 0
p l o t ( x , ỵ , ' s' ) 3 0
p lo t ( x , y , ' s ' ) 3 0
p lo t ( x l , y l , ' s ' , x 2 , y 2 , ' o ' ) 6 0
h= plo t(x ,y) 2 1
Các giá trị cùa nargin v à nargout được xác đinh khi hàm plot đươc
gọi ra.

5.3
5.3 N hập , xu ất dữ liệu
Tiếp theo, chúng ta sẽ xét cách
cách nhâp , xu ất dữ liêu
liêu tron g Ma t L a b . Để
nhâ p dữ liêu
liêu từ bàn phím ta có
c ó thể dù ng hàm input, ví du:
>> x = i n p u t ('Enter your age:
age:')
') % nhập một số
>> s = i n p u t ('Enter your name:',
name:','s')
's') % nhập một
một xâu

Tuy nhiên cách nhập các dữ liệu như là tham số đầu vào của các hàm
đươc
đư ơc ưa d ùn g hơn.
Các hàm xuất dữ liệu thông dung trong M a t L ab bao b ao gồ
gồmm h à m disp
v à fprintf. Trong khi hàm disp thường được sử dụng dể xuất dữ liệu
tron g cửa sổ lệnh và chi
chi dù ng cho
cho các
các kết quả đơn giản thì hàm fp fpri
rint
nt f
sử dụ ng cho các
các dữ liệu
liệu đinh dạn g trước.
trước. Hơn nữa, khi muốn ghi dữ liệuliệu
vào file thì bắt buộc phải dùng hàm fprintf.
5. Lập trình ưói Mat L ab 49

5.3.1. Hàm d is p

Cii phâp hàm disp nhii sau:

>> disp(outMatrix)

tron g dô, outMatrix cô thé là m a trân sô hoàc xâu.

V i d u 2 . 8 . >> disp (5)


5
>> x = 1:3; disp(x)
1 2 3
>> y = 3-x; d isp([x; y])
1 2 3
2 1 0

>> disp ([x y])


1 2 3 2 1 0
>> disp([x' y])
??? Error using ==> horzcat
CAT arguments dimensions are not consistent.

Vi du 2.9. >> disp ('Hello World!')


Hello World!
>> s='Have a nice day'; disp(s)
Have a nice day

>> t='You are using Matlab 7.10.0';


>> disp ([s;t ])
??? Error using ==> vertcat
CAT arguments dimensions are not consistent.

>> disp(char(s,t))
Have a nice day
You are using Matlab 7.10.0
50 Chương 2. Mat L ab cơ bản

Chú ý 2.1. Trong ví dụ trên, lệnh d i s p ( [ s; t ] ) x u ất hiện lỗi bởi vì s có


ít ký tự hơn t . H à m c h a r tạo một ma trân xâu bằng cách đăt mỗi input
trên một dòng riêng và chèn thêm các khoảng trắn g nếu cần.

>> s = c h ar ( s , t );
>> l e n g t h ( s ) , len gth (t ), l e n g t h (S ( 1, : ) )
ans =
15
ans =
27
ans =
27

Để tạo ra dữ liệu đầu ra được gán nh ãn của một giá trị số, ta thường kết
hợp hàm d i s p với hàm num2str. Cụ thể, lệnh

stringValue=num2str(numericValue)

sẽ chuyển n u m e r i c V a l u e th à n h một xâu b iểu diễn giá trị số đó. Xét các
ví dụ:

Ví dụ 2.10. >> num2s t r ( p i )


ans =
3.1416

Ví dụ 2.11. >> A=e ỵe (3 )


A =
1 0 0

0 1 0

0 0 1
>> S=num2str (A)
s =
1 0 0

0 1 0
0 0 1
5. Lập trình với M at L ab 51

Măc dù A và s có vẻ chứ a cùng các giá trị, c hú ng k hô ng tươ ng đương.


A là một ma trận số còn s là ma trận xâu. Do đó, các phép toán ma trận

đối vói A và s là khô ng thự c h iện đươc. Ví dụ:

>> A-S
??? Error using ==> minus
Matrix dimensions must agree.

Tiếp theo, ta xét ví dụ về việc sử dụng num2str kết hơp vói disp:

>> x=sqrt (2) ;


>> outString=['x= ',num2str(x)] ;
>> disp(outstring)
X = 1 . 4 1 4 2

hoặc

>> disp(['X = ' ,num2str(x)])


X = 1 . 4 1 4 2

Chú ý 2.2. Cấu trúc

disp ( ['x=',num2str (x)1)

chỉ làm việc khi X là m ột m a trậ n hàn g còn với ma t râ n cột thì không. Ví
du:

>> y = l : 4;
>> z=ỵ' ;
>> d isp(['z=',num2str(z)])
??? Error using ==> horzcat
CAT arguments dimensions are not consistent.

Thay vào đó, ta có thể sử dụng hai lệnh disp để hiển thị cột của các
vector hay m a trậ n , ví dụ:

>> disp('z-'); disp(z)

1
52 Chương 2. Mat LAB cơ bán

3
4

hoặc đơn giản là nh ập vào tên của biến m à kh ông có dấu cuối dòng

>> z
z =
1
2
3
4

Ta có th ể dùn g hàm f o r m a t điều chinh độ chín h xác của dữ liệu in ra, ví


dụ:

>> format short


>> disp(pi)
3.1416
>> format long
>> disp(pi)
3.141592653589793

Ngoài ra, thông số th ứ hai của hàm n u m 2 s t r cũng có th ể dùng với muc
đích trôn:

>> d i s p ([ ' p i = ' , n u m 2 s t r ( p i , 2 ) ] )


p i = 3 .1
>> d i s p ( [ ' p i = ' , n um 2s tr ( p i , 4 )] )
pi=3.442
>> d i s p ( [ ' p i = ' , n u m 2 s t r ( p i , 8 ) ] )
p i = 3 . 1415927

5.3.2. H àm f p r i n t f

Quay trỏ lại hàm f p r i n t f , cú pháp của hàm này như sau:
5. Lập trình với M at L ab 53

fprintf(outFormat, outVariables) ;
fprintf(fileHandle, outFormat, outvariables);

Hàm fprintf sử dụng outFormat để chuyển outVariables thành các


xâu được in ra. Trong dạng đầu tiên, kết quả sẽ hiển thị trong cửa sổ
lệnh. Trong dạng thứ hai, kết quả sẽ đươc lưu vào íìle được tham chiếu
bòi fileHandle. Ví dụ:

>> x=3;
>> íprintf(' Square root of %g is %8.6f\n',X,sqrt (x))
Square root of 3 is 1.732051

T h à n h p h ầ n outFormat định rõ cách các outVariables được chuyển


thành và hiển thị. Xâu outFormat có thể chứa bất kỳ một ký tự nào.
Nó cũng phải chứa m ột m ã chuyển đổi cho mỗi outVariables. Các mã
chuyển đổi cơ bản được cho dưới bảng sau:

Mã D ang
%s Dạng xâu
%d Dạng số nguyên
%f Dạng dấu chấm động
%e Dạn g dấu chấm động trong ký hiệu kh oa học
%g Dạng gon n h ất của %f hoăc %e
\n Chèn một dòng mối sau xấu kết quả
\t Chèn một tab sau xâu kết quả

Ta có thể điều ch ỉnh độ rộng và độ chính xác của k ết qu ả bằn g các


cú pháp:

% wd
% w.pf
% w.pe

tro n g đó w là số ký tự tro ng độ rộng của kết qu ả cuối cùng và p là số chữ


số sa u dấ u sẽ được hiể n thị. Một số ví dụ
54 Chương 2. Matlab cơ bản

Giá trị %8 .4 f %12.3e %10g %8d


2 2.0000 2.000e+00 2 2
sqrt(2) 1.4142 1.414e+00 1.41421 1.414214e+00
sqrt(2e-ll) 0.0000 4.472e-06 4.47214e-06 4.472136e-06
sqrt(2ell) 447213.5955 4.472e+05 447214 4.472136e+05

Có thể dùng f p r i n t f để in vector hoặc ma trận dưới dang ngắn gon


Điều này có th ể d ẫn tói các kết quả k hông n hư mo ng muốn. Ví du

>> x = l : 4 ; ỵ = s q r t ( x ) ;
>> f p r i n t f ( ' %9. 4 f \ n ' , ỵ)
1.0000

1.4142
1.7321
2.0000

0 đây, định d ạn g %9 . 4f được sử dụn g lại cho mỗi th àn h p hầ n của y.


Điều này có th ể sẽ khôn g cho kết quả n hư m ong muốn:

>> f p r i n t f ( 'ỵ=%9 . 4 f \ n ' , y)


y= 1.0000
y= 1.4142
ỵ= 1.7321
y= 2.0000

Hàm f p r i n t f duyệt các ou tV a ria b le s theo các cột. Điều này cũng có
thể dẫn đến các kết quả k hông như m ong muốn:

» A= [l 2 3; 4 5 6; 7 8 9]

1 2 3
4 5 6

7 8 9
5. Lập trinh với Mat L ab 55

fprintf (' %8 .
.2f % 8 ,
.2f %
1.00 4 .00 7 .00
2.00 5..00 8..00
3.00 6..00 9..00

ỉ)ể ghi dữ liệu ra file cần phải tạo ra một fileHandle với lệnh fopen.
Khi đó, tấ t cả tác d ụn g của các đinh dạng cũng nh ư vector hóa (xem mục
5.5) đều có thể được áp dụng.

Ví d u 2.12. Lưu các th à n h ph ần của môt vector vào một file.

X=1:10;

fout = fopen ('out.dat','wt' ) ;


fprintf (fout,' k x(k)\n');
for k=l:length(x)
fprintf(tout,'%4d % 5.2f\n',k,X(k));
en d
fclose(fout)

5.4 Đ iều kh iển luồn g


Để có thể thực thi một thuật toán, một ngôn ngữ lập trình cần có các
cấu trúc điều khiển bao gồm:

• C ấu trúc tu ần tự (Seque ntial structure);

• C ấu trúc lặp (Looping or Iteration struc ture);

• C ấu trúc điều kiện: rẽ nh án h (Branching structure).

5 .4 .1 . S o s á n h ( C o m p a r i s o n )

Khi sử dụng các cấu trúc điều kiện, ta thường gặp các phép so sánh.
Sụ so sá nh được th ể hiện qua các tcán tử qu an hệ (R elational Operators).
Các toán tử này được dùng để kiểm tra hai giá trị bằng nhau, nhỏ hơn,
lớn hơn, cu thể:
56 Chương 2. M at Lab cơ bản

Toán tử Ý ng hĩa
< <
<= <
> >
>= >

~= Ỷ

Khi áp dụng các toán tử quan hệ thì kết quả sẽ là một giá trị logic, tức
là True hoặc False. Trong M a t L a b , các giá trị khác 0, bao gồm cả môt
xâu khác rỗng là tương đương với True. Chỉ có giá trị (}là tương đương
vổi False.

C h ú ý 2.3. Tro ng các toá n tử q ua n h ệ <=, >= và ~= th ì ký hiệu " = "


phải đứng sau. Điề u này có nghĩa =<, => và =~ là không hơp lệ.

Trong phép so sánh ta đặc biệt quan tâm đến hai loại toán tử là toán từ
qu an hệ và toá n tử logic. Kết qu ả của một phép toán qua n hệ là True (1 )
hoặc False (0), ví dụ:

>> a=3; b=5;


>> aIsSmaller=a<b
alsSmaller =
1
>> bisSmaller=b<a
bisSmaller =
0
>> x = l : 5 ; ỵ = 5 : - l : l ;

>> z=x>y
z =
0 0 0 1 1

Các to án tử logic được sử dụ ng để kế t hợp các biểu th ức logic (vói ’'an d ”


và ”or”) hoặc thay đổi giá trị logic vói ”not”.
5. Lập trình vói Mat L ab 57

Toán tử Ý n gh ĩa
&& and
11 or
~ not

Ví du 2.13. >> a=3; b=5;


>> aIsSmaller=a<b; bIsSmaller=b<a;
>> bothTrue=aIsSmaller && blsSmaller
bothTrue =
0
>> eitherTrue=aIsSmaller IỊ blsSmaller
eitherTrue =
1
>> -eitherTrue
ans =
0

Ta có thể tóm tắt về các phép toán so sánh như sau:

• Các toán tử q uan hệ liên quan đến các phép so sánh của hai giá tri.

• K ét qu ả u ỉa một phép toá n qua n hệ là mội, giá trị logic (Tiu e (1)
hoăc False (0)).

• Các toá n t ử logic kế t hơp (hoặc phủ định ) các giá tr i logic tạo ra các
giá trị logic mói.

• Luô n có nh iều hơn một cách thể hiện cùng một phép so sánh.

Từ đó có môt lòi khuyên đối vói ngưòi dùng, đó là để bắt đầu, nên tập
trung vào các so sánh đơn giản.

5.4.2. C ấ u t r ú c đ i ề u k i ệ n h o ặ c r ẽ n h á n h

Dựa vào kết quả của một phép so sánh, hoặc của phép kiểm tra logic,
các khối m ã chương trìn h đã chọn sẽ được thự c thi hoặc bỏ qua. Các cấu
trúc điều kiện bao gồm: if, if. ..else, if. ..elseif và cấu trúc
switch. Có 3 dạng của cấu trúc if là:
58 Chương 2. Mat L ab cơ ban

1. i f

2. i f . . . e l s e

3. i f . . . e l s e i f
Cú pháp của cấu trúc i f như sau:
if expression
b l o c k o f s ta t e m e n ts
en d
N guyên tắc h o ạt động của cấu trúc trê n có th ể hiểu m ột cách đơn giản,
đó là k hố i b l o c k o f s t a t e m e n t s chỉ đươc th ưc th i n ế u e x p r e s s i o n
nhậ n giá trị True.
V í d ụ 2 .1 4. i f a< 0
d i s p ( ' a i s n e g a t iv e ' );
end
Nếu m uốn viế t các câu lệ nh trê n trê n cùng một dòng th ì sau
i f e x p r e s s i o n c ần có d ấu ví dụ:
i f a<0, d i s p l ' a i s n e g a t i v e ' ) ; en d
C ấu trú c i f . . . e l s e :
if x<0
e r r o r ( ' x i s n e g a ti v e ; s q r t (x) i s i m a g i n a r y ' ) ;
else
r=sqrt (x);
en d
và cấu trú c i f . . . e l s e i f :
if x>0
disp i'x is positive');
elseif x<0
disp('x is negative');
else
dispi'x is exactly zero');
end
5. Lập trình vói Mat L a B 59

Câu lệnh switch rất hữu dụng khi tâp giá trị của các biến kiểm tra là
rời rac (có thể là số nguyên hay xâu ký tự). Cú pháp của câu lệnh này
như sau:

switch expression
case valuel
b lo c k o f s ta t e m e n t s
case value2
b lo c k o f s ta t e m e n ts

otherwise
b lo c k o f s t a t e m e n ts
end

Vi d u 2.15. c o l o r = i n p u t ( ' E n t er y ou r f a v o r i t e c o l o r :
% c o lo r i s a s t r i n g
switch color
case 'red'
disp('Your color is red');
case 'blue'
disp('Your color is blue');
case 'green'
disp('Your color is green');
otherwise
d i s p ( ' Y o u r c o l o r i s n ot r e d , b l u e o r g r e e n ' ) ;
end

5.4.3. Cấu trú c lặp fo r

Cú pháp:

for index=expression
block of statem ents
end
60 Chươn g 2. M a t L a b cơ bàn

Ví dụ 2.16. Tính tổng các thành phần của một vector

x=l:5; % create a row vector


sumx=0; % initialize the sum
for k=l:length (x)
sumx=sumx+x(k);
end

Ví dụ 2.17. Vòng lặp for với chỉ số tăng theo mức 2 đơn vi:

for k=l:2:n
block of statements
end

Ví dụ 2.18. Vòng lặp for với chỉ số giảm dần:

for k=n:-1:1
block of statements
end

Ví dụ 2.19. Vòng lặp for với chi số không phải là số nguyên:

for x=0:pi/15:pi
fprintf('%8.2f %8.5f\n',X,sin(x));
end

Chú ý 2.4. Trong ví dụ trên, X là m ột đại lương vô hưó ng tro ng vòng lặp.
Mỗi lần lặp, X được gán với một trong các cột của 0:pi/15:pi.

5.4.4. Cấu trú c lặp w h ile

Cú pháp:

while expression
block of statements
end

Mô tả:
5. Lập trình với Mat L ab 61

• Khối lệnh block of statements được thực thi nếu điều kiện
expression vẫn là True.

• Để trá n h tình tra n g lăp vô han, nên đặt giới h ạn trê n cho số lần
lặp.

5.4.5. Các câu lệnh break và return

• Các câu lệnh break và return là các cách khác n h au để tho át khỏi
một cấu trú c lặp. Cả hai lệnh này đều có th ể d ùng cho cấu trú c for
và while.

• break được sử dụng để thoát khỏi phạm vi của vòng lặp hiện thời
for hoặc while, chương trình sẽ tiếp tục sau đó.

• return được dùng để thoát khỏi một hàm hiện thòi. Điều này sẽ
ảnh hưởng đến việc thoát khỏi một vòng lặp. Bất kỳ một câu lệnh
nào tiếp theo vòng lặp trong hàm đều bị bỏ qua.

5.5 V ector h óa (Vectorization)

Vector hóa là việc sử dụng các phép toán vector để xử lý toàn bộ các
phần tử của một vecto r hay m a trận . T hật ra các biểu thức vector hóa là
tương đương với phép lặp trên các phần từ của ma trận hay vector. Tuy
nhiên, biểu thức vector hóa sẽ ngắn gon và thực thi nhanh hơn các biểu
thức lặp th ôn g thường . Một số chú ý khi sử dụ ng phép to án vector hóa:

• Sử du ng các ph ép to án vector thay cho vòng lăp k hi có thể;

• Tiền cấp p h á t bô nhớ cho các vector hay m a trận ;

• Sử dụ ng việc đá n h chi mục vector hóa và các hàm logic ;

• Mã k hô ng s ử dụ n g vector hóa gọi là m ã vó hướ ng (sca lar code) bỏi vì


các phé p to án được thực hiện trên các ph ần tử vô hưóng của vector
hay m a trâ n thay vì toàn bộ.
62 Chương 2. Mat L ab cơ bán

Chương trình tuy chậm mà chính xác còn hơn chương trình nhanh mà
không chính xác. Do đó, có một lồi khuyên vói ngưòi dùng là nên bắt đí\u
vói các mã vô hưống, sau đó vector hóa nếu cần. Tiếp theo ta xét môt ví
du dùng vector hóa khi thay thế vòng lặp bỏi các phép toán vector.

Ví d ụ 2.20. Xét đoan m ã vô hướng:

x=. . .
for k=l:length(x)
y ( k ) = s i n (X ( k ) ) ;
en d

Mã vector hóa tươ ng đương:

x=. . .
ỵ=sin(X);

Khi sử dụ ng phép toá n v ector hóa thì việc tiền cấp ph át bộ nhớ là rấ t cần
thiết. N hắc lại là tron g M a t L ab các biến củng n h ư số chiều của chún g là
không cần kh ai báo trước, M a t L a B sẽ tự động điều chỉnh th ôn g qua giá
trị của các biến này. Ví dụ, vòng lặp sau sẽ tăng chiều của s sau mỗi lần
lặp:

y=[4 -1 9 0];
for j=l:length(y)
i f y ( j ) >0
s ( j ) = s q r t (y ( j ) ) ;
else
s ( j ) =0;
en d
en d

Để tiền cấp phát cho s trước khi gán các giá trị cho các thành phần, ta
làm như sau:

y=[4 -1 9 0];
s = z e r o s (s i z e (y) ) ;
). Láp trình với Mat L ab 63

for j= l :length(y)
if y (j)>0
s (j)=sqrt (y(j));
end
end

Việc vector hóa mã hoàn toàn đòi hỏi sử dụng việc đánh chỉ số mảng
(array indexing) và đánh chi số logic (logical indexing). Xét ví dụ đánh
chỉ số mảng:

>> x=sqrt (0:4:20)


X =

0 2.0000 2.8284 3.4641 4.0000 4.4721


» i=[l 2 51;
» y=x(i)

ỵ =
0 2 4

Biểu thức y=x ( i ) tư ơng đương với đoạn m ã vô hướng:

k=0;
for i = [1 2 5]
k=k+l;
y (k )= x ( i ) ;
end

Để dùng chi số logic ta làm như sau:

>> x=sqrt (0:4:20)


X =

0 2.0000 2.8284 3.4641 4.0000 4.4721


>> j=fi nd(rem(x,2)==0 )

j =
1 2 5
» z=x(j)
z =
0 2 4
64 Chương 2. Mat L ab cơ bản

Ví dụ 2.21. Vector hóa m ã vô hướng.


Xét đoan mã:

y=. . .

s = z e r o s ( s i z e ( y ) );
for j=l:length(y)
i f y ( j ) >0
s ( j ) = s q r t ( y ( j ) );
end
en d

Thưc ra, có th ể thay thế to àn bô vòng lặp b ằng cách sử d un g đ án h chỉ số


logic hoặc đánh chỉ số mảng, cụ thể:

y=. . .
s = z e r o s (s i z e ( ỵ ) ) ;
i=find(y>0);
s ( i ) = s q r t (ỵ ( i ) );

hoặc gọn hơn:

y=. • •
s = z e r o s ( s i z e ( y ) );
s (y> 0)= sq rt (y (ỵ>0 ));

Tiếp theo, ta xét ví dụ sử dụn g vector hoa tron g cac phep sao chep.
Xét ví du việc sao chép toà n bộ các cột (hàng ) củ a m a tr ậ n A:

Mã vô hư ớng Mã vecto r hóa

[ m, n ] = s i z e (A) ; B ( : , 1 ) = A( : , 1 ) ;
for i = l :m
B (i , 1 ) = A(i / 1 ) ;
end

Để sao chép và chuyển vị các m a trận con, ta thực hiện nh ư sau:


5. Lập trình với Mat L ab 65

Mã vô hưỏ ng Mã ve ctor h óa

for j=2:3 B (1,2 :3)= A (2 :3,3);

B(l, j) =A(j, 3) ;
end

Một số ví dụ k hác
1. Để xóa các th à n h ph ần không phải là số (NaN) hoặc giá trị vô cùng
(inf) của một mảng X, ta có thể dùng đoan mã sử dụng đánh chỉ số
mảng:

i=find(isnan (x) I isinf(x) ); % Find bad elements


x(i)=[]; % and delete them

hay m ôt cách khác:

i=find(-isnan(x) & -isinf(x) ); % Find good elements


x=x(i); % Keep those elements

Ta có thể thay đổi các đoan mã trên bằng cách sử dụng chỉ số logic
như sau:

x(isnan(x) 1 isinf(x))= Ị]; % Delete bad elements

hoăc

x=x(~isnan (x) & ~ìsìnf(x)); I Keep good elements

2. H à m từ n g k h ú c (P iecew is e fu n ction s)

sin(.r)/.T, .r/0
Hàm sinc được định nghĩa bời sinc(x) =
1, X = Ü.
So sánh đoạn m ã sử dụng lênh find:

function ỵ=sinc(x)
ỵ=ones(size(x)); % Set ỵ to%all ones, sinc(0)=l;
i=find(x~=0); % Find nonzero X values

ỵ (i)=sin(x (i)) ./x ( i ) ; % Compute sine when X ~=0


end
66 Chương 2. Ma t Lab cơ bản

và môt cách viết thú vị khác:

y=(sin(x) + (x==0)) ./ (x+(x==0) );

5.6 Tính giá tri hàm một cách gián tiếp


Khi lập trìn h ma t La b , đặc biệt là trong phương pháp tính, ta thường
phải tín h giá trị của m ột hàm số tại một điểm nào đó. Hàm feval thường
được sử dụn g trong trư ờn g hợp này vì nó rấ t th u ậ n lợi. Th ứ n hấ t, nó cho
phép các chương trìn h đã được viết xử lý m ột hàm f( x ) bất kỳ. Hàm này
cũng đồng thời giúp ta có thể chia nhỏ một thuật toán phức tạp bằng
cách sử dụn g các đoạn m ã riêng.

Ví dụ 2.22. function s=fsum (fun, a, b, n)


x=linspace (a,b,n);
ỵ=feval(fun,x);
s=sum ( y );
end

>> fsum('sin' ,0, pi ,5)


ans =
2.4142
>> fsum('cos',0,pi,5)
ans ■
0

5.7 Chú thích


• Cú p h á p :% Matlab comment line.

• Các chú thích đặc biệt: Các khối comment liền nhau trong hàm
m-file ngay sau dòng đầu tiên chính là phần help của m-file
đó. Phần này sẽ đươc hiển thị khi ta nhập lệnh:

>> help filename


5. Lâp trình với M at L ab 67

= > Khi viết một hàm m-f ile, cố gắng thêm các chú thích để mô tả
muc đích của hàm, yêu cầu về các biến input và định dang của các
biến o u tp u t.

5.8 Gõ lỗi
MatLab hỗ trơ một trình gỡ lỗi tương tác, bao gồm các câu lệnh sau:

• Các lệnh type và dbtype hiển thị toàn bộ nôi dung của một "m-
fìle";

• Lệnh error hiển thị một lời nhắn trên màn hình và dừng hẳn
chương trình;

• Hàm warning hiển thị một lòi nhăn lên màn hình tuy nhiên không
dừng chương trình;

• Các lệnh pause hoặc keyboard có thể dùng để tạm dừng


chương trình. Để thoát khỏi chế độ gỡ lỗi (debug-mode) và
tiếp tục chạy chương trình, ta có thể dùng một trong các lệnh
return, dbcont, dbquit.

Ví du sử dụn g lệnh keyboard

function r = quadroot(a, b, c)
% quadroot Roots of quadratic equation and demo of keyboard
% command
% Synopsis: r = quadroot(a, b, c)
%
% Input: a,b,c = coefficients of a*x^2 + b*x + c = 0
%
% Output: r^column vector containing real or complex roots
d = b A2 - 4 *a *c;
if d<0
fprintf ('Warning in function QtiADROOT:\n' ) ;
fprintf('\tNegative discriminant\n\t...
Type "return" to continue\n') ;
68 Chương 2. M at Lab cơ bản

keyboard;
end
q = -0.5* ( b + sign (b) *sqrt (b/'2 - 4*a*c) );
r = [q/a; c/q]; % store roots in a column vector

5.9 Phâ n tích một chương trình sử dụ ng 'Th e


Profiler"

phiên bản 5.0 hoặc mới hơn cung cấp môt công cu gọi là
M a t L ab

"profiler" hỗ trợ việc xác định các đoạn tắc nghẽn (bottlenecks) trong
chương trình. Xét chương trình
function result=examplel(Count)
for k=l:Count
result(k)=sin(k/50);
if result (k) < -0.9
result(k)=gammaln(k);
end
end
end

Để phân tích chương trình, trước hết dùng các lệnh sau để khỏi đông
"profiler" và xóa tất cả các dữ liệu cũ:
>> profile on
>> profile clear

Bây giò, chạy th ử chương trình:


>> example1 (50000);

Sau đó, nhập vào lệnh


>> profile report;

Profiler tạo một thôn g báo dạng HTML về chương trìn h và khỏi tạo môt
cửa sổ trình duyệt. Tùy theo từng hệ thống máy tính mà các kết quả có
thể h iển thị ỏ các dạng k hác nh au.
Trong các chương tiếp theo, ta sẽ nêu các th u ậ t toán thườ ng được sử dung
trong kỹ th u ậ t và các chương trìn h m inh họa cụ thể.
6. Bài tập 69

+•*a > H
ym IM <c 4« r hT' t 46If(
0 * «*>4

Pf0fli8Summary
C * -J f -X Ỉ >'4 > J? ««-V c;*.
IuuvỊkiinuil
ooo: * 0002 t

0001» 00P1«
•ÍOS*
%
0000»
fcata MkMfcdmihMtedigi 0001 0 X 1 1
«4>A»'i»'fcỌ‘*5r3 !ii.!Jê fcie Mit '<!1 OOUI t 00011
0 011 «00»!
00ẼI 0 0211
0000 I 0002»
.■4H..ii>.iiầ{^j:4<sfLĩiSilu; 0005 » 0061 »
0 004 » 0 004 »
ow* 0306»
0« 0000*
00M« oaw*
008- ỉ 0G2I t
ocr?»

Hình 2.7:

§6. BÀI TẬP


Hài tập 2.1. T ính bằn g tay các biểu thức sau rồi th ử lại bằng M atL a b.

1. 10/2\5 - 3 + 2*4 5. 2+ floor (6/11)/2-3

2. 3A2/4
6. 2+ceil (-6/9)-3
3. 3A2 A2

4. 2 +round (6/9 + 3*2)/2-3 7. fix (-4/9)+fix (3* (5/6) )

Hài tập 2.2. Cho a = 36. b - 15. Tính bằng tay các biểu th ức sa u rồi thử
lại bằng M a t L a b .

1. mod(a,b) 3. gcd(a,b)

2. rem(a,b) 4. lcm(a,b)

Th ử lại vói các cặp giá tr ị ( n , b) khác.

Bài tập 2.3. Dự đoán kết quả những phép toán sau, giải thích và kiểm
tra lại bằng M a tL a b .
70 Chương 2. M a t Lab cơ bán

^ I )
1. 1 & -1 4 o AI o N A II o

2. 1 3 & ( -6 ) 5. 5 > 4 > 3

3. 0 < - 2 0 6. 2 > 3 & 1

Bài tập 2.4. Nhâp vào vector X = [ 3 1 5 7 9 2 6], dư đoán kết quả
các dòng lệnh sau và thừ lại bằng M at L a b .

1. X (3) 5. X ( 6 : - 2 : 1 )

2. X ( ì : 7)
6. X ( [1 6 2 1 1] )
3. X (1: end)

4. X ( 1 : end-1 ) 7. sum (x) , min ( x ) , max ( x ) .

Bài tập 2.5. Cho X = [ 1 5 2 8 9 0 1] và y = [ 5 2 2 6 0 0 2


giải thích kết quả các dòng lệnh sau:
X A>
! 6. X 1 ỵ

2. ỵ<x 7. x &ỵ
0 I 1 <
0 X 1 * 8. x& ( - y )

4. x < = y 9. ( x > y ) 1 ( y < x )

5. ỵ>=x 10. ( x > ỵ ) & ( ỵ < x )

Bài tập 2.6. Cho hai vector a = [1 0 2] v à b = [0 2 2 ], xác đinh


giá trị các biểu thức sau, giải thích, sau đó kiểm tra lại bằng M a t La b .

1. a=b 5. a 1 (a)

2. a<b 6. b& (b)

3. a<b<a
7. a=b==a (xác định giá trị cuối
4. a<b<b của a)

Bài tập 2.7. Cho X = 1 : 1 0 và y = [ 3 1 5 6 8 2 9 4 7 0 ] , d ự


đoán kết quả các dòng lệnh sau, giải thích và thử lại bằng Ma t La b .
6. Bài tập 71

1. (x>3) & (x<8) 4. X ((x<2 ) 1 (x>=8) )

2. X (x> 5 ) 5. y ( (x<2 ) 1 (x>=8 ) )

3. y ( x<=4 ) 6. X (ỵ < 0 )

Bài tập 2.8. Cho X = [1 4 8], y = [2 1 5], và


A = [2797 ; 3 1 5 6 ; 8 1 2 5 ] . Xét xem dòng lệnh nào hợp
lệ, dư đoán kết quả, giải thích và thử lại bằng M a t L a b .

1. [x;y' ] 5. A (:)

2. [X;y ] 6. [A; A (end, :) ]

3. A(:, [1 4] ) 7. A (1 :3, :)

4. A( [2 3] , [3 1] ) 8. [A; A (1; 2, :) ]

Bài tập 2.9. Cho X = [ 2 - 5 1 6]. Viết các lệnh thực hiện:

1. Công thê m 16 vào tấ t cả các phần tử.

2. Công thê m 3 vào tấ t cả các phần tử ở vi tr í lẻ.

3. Lấy căn bâc hai c ủa tấ t cả các phầ n tử có giá tr ị dương.

4. Tín h b ình phư ơng tấ t cả các phần tử.

Bài tập 2.10. Tao vector x=randperm ( 35) (tao ngẫu nhiên 1 hoán vi
từ 1 đến 35). Viết các lênh để tính giá trị hàm sau sử dung chi số logic:
'
9 nếu X < 6

v(x) = X- - 4, nếu 6 < X < 20


36 — X , nếu 20 < X < 35

Bài tập 2.11. Cho X = [3, 15, 9, 12, -1, 0, -12, 9, 6, 1]

1. Viết lệnh thự c h iện c huyển các giá trị dương th à n h giá trị 0.

2. C hu yển các bội số của 3 th à n h số 3.


12 Chương 2. Mat L ab cơ hàn

3. N hâ n các giá trị c hẵ n cho 5.

4. G án cho vector y các giá tr ị lớn hơn 10 của X.

5. Chu yển các giá trị nhỏ hơn tru n g bình cộng th àn h g iá tri 0.

Bài tập 2.12. Cho X, y là các vector cột


X = [3 2 6 8]', ỵ = [4 1 3 5]'. Viết các lênh thực hiện:

1. Lấy tổng các ph ần tử củ a X thêm vào từng p hần tử của y.

2. Lũy thừ a mỗi ph ần tử của X vói số mũ là các phần tử của y.

3. Chia các phần tử của tương ứng của y và X.

4. N hân các p hần tử tư ơng ứng của X và ỵ, gán kết quả cho vector z.

5. Tín h tổn g các ph ần tử c ủa z, gán kế t qu ả cho w.

6. Tính X . *y-w.

7. Tín h tích vô hướng của X và y.

Bài tập 2.13. Cho X = [ 1 4 8 ], y = [2 1 5 ]


vàA = [3 1 6 ; 5 2 7 ). Xét xem dòng lệnh nào hơp lệ, dự đoán kết
quả, giải thích rồi thử lại bằng Ma t La b .

1. X + y 4. A - [x ' y ' ]

2. X + A

3. x' + y 5. A - 3

Bài tập 2.14. Cho A = [ 2 7 9 7 ; 3 1 5 6 ; 8 1 2 5 ], dư đoán


kết quả các lênh, giải thích rồi thử lai bằng Ma t La b .

1. A' 3. sum (A' )

2. sum(A) 4. sum(A, 2)

5. [ [A; sum(A)] [sum(A, 2); sum(A(:))]]


6. Bài tập

Bài tập 2.15. Tạo ma trận A cỡ 4 X 4 có giá trị nguyên ngẫu nhiên nằm
trong khoảng [—10,10], sau đó:

1. Công thêm 10 vào các phần tử ở (ỉòng 1 và dòng 2, gá n kết quả cho
B.

2. Cộng th êm 10 vào các ph ần tử ở cột 1 và cột 4, gá n k ết qu ả cho c.

3. Tín h ng hich đảo của mọi phần tử khác 0, gá n k ết quả cho D.

4. Lấy căn bậc hai m ọi ph ần tử dương, gán kết q uả cho E.

Bài tập 2.16. Cho m a trận A = [2 4 1 ; 6 7 2 ; 3 5 9 ], viết các


lênh Ma t La b thực hiện:

1. Gán cho vector X dòng thứ n hất của A.

2. Gán cho ỵ hai dòng còn lại của A.

3. Tìm phần tử lớn nhất và nhỏ nhất của ma trận A.

4. Tính tổng tấ t cả các phần tử cùa A.

Bài tập 2.17. N hâp vào 2 m a trậ n


’2 1 0 ' '3 1 2
A = —2 5 -1 ; n = -1 3 —2
3 4 9 3 4 5

Viết các lệnh thực hiện:

1. Tìm ma trân X sao cho X*B = A.

2. Tìm ma trận X sao cho X*A = B.

3. Xóa cột th ứ hai của m a trận A.

4. Thêm cột thứ nh ất của ma trận B vào sau cột cuối của ma trận A.

B ài tậ p 2.18. 1. Vẽ đồ th ị của ham số y = X + sin X theo đối X, trong


đó X — - 7 T : 0.1 : 7T. Sau đó thêm tiêu đề cho đồ thị và gán nhãn cho
các truc toa đô.
74 Ch ương 2. Ma t L ab cơ bàn

2. Vẽ đồ th ị của h àm số y —X2sin Xtheo đối X, tron g đó X— - 7 T : 0.1 : 7T.


Sau đó thêm tiêu đề cho đồ thi và gán nhãn cho các true toa đô.

Bài tập 2.19. N hập vào các lệ nh sau đê định ng h ĩa và vẽ đồ thi hàm
q(x) = exp(x):
sỵms X
g = exp(x)
ezplot(g)
Sau đó chỉnh lại miền xác đinh bằng cách nhập: e z p l o t ( g , [ - 2 , 2 ] )

Bài tập 2.20. Vẽ đồ thị các hàm y — sin(.r),y — sin (,T + V2) •?y
sin (r + */3) trên cùng một hệ true toa đô vối vector
X = 1 i n space(0,2*pi).

Bài tập 2.21. 1. N hâ p vào lệnh sau và xem kế t quả:


sỵms X y;
ezmesh (sin(x)*cos(ỵ), [0,10,0,10])

2. Kích vào Tools , sa u đó kích vào Rotate 3D . Trỏ vào đồ th ị, dùn g


chuột trái giữ và quay ản h theo ý muốn.

3. Sử dung lệnh ezmesh vẽ đồ thị hàm f { x , y ) = X2 — V2 với X e


1-2.21, Ị/ € 1 -2 ,2 ],

4. Vẽ đồ thị hàm f ( x , ụ) — sin(i-5) * cos y sử dụng miền mặc định.

Bài tập 2.22. 1. Nhâp vào các lệnh sau


[X,Y] = meshgrid (-1:.2:1);
z = X.A2 - Y.A2;
con tour (z)
N h ận xét về n h ã n của các tru e to a độ. Thử lai bằng lệnh:
contour (X, Y, Z)

2. Thử các lện h sa u và cho biết kết quả:


contourf(X, Y, Z)
contour(X, z, Y, 10)
contour(X, Y, z , 20)
contourf(X, Y, z , 20)
6. Bài tập 75

Bài tập 2.23 . 1. Tao mô t th ủ tục M a tL aB với tên ’te s tl .m ’ thưc hiên
các công việc sau :

(a) Xóa tấ t cả các biến trong bó nhó;


(b) Tao môt vector hàng X=1:0 . 1 : 10;
(c) Tính y — sin (x) —cos(x);
(d) Vẽ đồ thi của y theo đối X.

2. Viết thê m các chú thích và lưu chương trình của bạn tron g thư mục
làm việc. Sau đó:

(a) Kiểm tr a và gỡ lỗi nế u có.


(b) H iển thị các chú thích bằng lệnh

>> help testl

Bài tập 2.24 . 1. Tạo m ột hà m M a t L ab tê n ’te st2 .m ’ vói biến đầ u vào


(input) X và biến đầu ra y , tính toán và hiển thị lên mà n hình.

(a) Tính ụ —sin(x) —cus(x);


(b) Vẽ đồ thi của y theo đối X.

2. Viết thêm các chú thích và lưu chương trình của bạ n tron g thư mục
làm việc. Sau đó:

(a) Kiểm tra chương trìn h với X=1: 0 . 1 : 1 0 , gỡ lỗi nếu có;
(b) H iển thi các chú thích trong chương trìn h bởi lê n h .

>> help test2

3. Giải thích sự khá c n ha u giữa thủ tuc và hàm.

Bài tập 2.25. T ính gầ n đú ng số 7Tsử dụng kết quả

6 ~ h i n2'
Muốn sai số là le - 12 thì cần ít nhất bao nhiêu số hạng?
76 Chương 2. M at L ab cơ bản

Bài tập 2.26. Có một th u ậ t toán khác để tính gần đú ng số 7Tnh ư sau:
1. Đ ặ t a = 1 ; b = l / s q r t ( 2 ) ; t = 1 / 4 ; và X = 1;

2. Lặp lại các phé p tín h sau:

y = a;
a = (a + b) /2 ;
b = sqrt(b*y);
t = t - X* (y - a ) A2;
X = 2*x;

cho đến khi |a —b\ < e vói sai số £ cho trước.

3. Từ các giá trị a, b, t, ước lư ợng giá tr ị 7r bởi

P i _ e s t = ( (a + b ) A2 ) / ( 4 * t ) ;

Hãy viết chương trìn h M a t L ab thể hiện thu ật toán trên, c ầ n bao nhiêu
bước lặ p để sai số là le —8, le —12? So sán h vói th u ậ t to á n tron g bài tập
2.25.

Bài tập 2.27. Viết các chương trìn h tính n!, (2 n —1)!!. (2n)!!.

Bài tập 2.28. Dãy Fibonacci là dãy số được xác định như sau:
Fi = Fỉ = 1; F„ = F „ _ 1 + F„_ 2 , n > 3.

Viết các chương trình MatL a b:

1. T ính 10 số h ạn g đầu tiên của dãy Fibonacci.

2. Vói 50 số h a n g đ ầu tiê n của dãy, tín h tỷ số


Fn

Ngưòi ta chứng m in h được rằn g tỷ số này dần tói tỷ lệ vàng


p= — ■Kiểm định điều này qua kết quả của ban.
2
6. Bài tập 77

Bài tập 2.29. Đa thức Legendre pn(x) đươc định nghĩa theo công thức
truy hồi sau:

{n + l)P„+i(.r) - (2n + l)xPn(x) + nPn-i{x) = 0.


3r2 —1
với / n(x) = 1, Pì{x) = X và p2(x) — --------- . Lập chương trình tính đa
thức Legendre bậc n, k ết q uả lưu dưới dạng vector hệ số.

Bài tập 2.30. Đa thức Chebyshev Tn(x) đươc định nghĩa theo công thức
truy hồi sau:
Tn+i(x) = 2xTn{x) - Tn_i(x),
vói 7o(.r) — 1, Tị(x) — X. Lập chương trình tính đa thức Chebyshev bậc
n, kết quả lưu dưới dạng vector hệ số.

B ài tập 2.31.Viết chương trình tính tiền điện cho một gia đình, biết
rằn g nếu số Kwh sử dụng («):
• n < 100 thì giá 1 Kwh là 500đ;

• 100 < n < 200 th ì giá 1 Kwh là 700đ;

• 200 < n < 500 thì giá 1 Kwh là ìooođ;

• n > 500 thì giá 1 Kwh là 1200đ.

Đồng thời:

• Nếu n < 0 thì in ra : "khô ng họp lê"

• Nếu n > 500 thì sau dòng in tổng số tiền ghi kèm thêm câu: "Hạn
chế sử dụng điện!"

Bài tập 2.32. Viết chương trình giải và biện luận phương trình bậc hai
ax2 + bx + c = 0. Áp dụng để giải các phương trình X2 —3x + 2 = 0 và
X2 + 2x - 1 — 0. Kiểm tra lại kết quả bằng cách tính bằng tay hoặc sử
d u ng h àm r o o t s củ a M a t L a b .

Bài tập 2.33. Viết chương trình vói input là một số nguyên dương n và
n n’1 * 2012 1
ou tpu t là 2 SÔ Si, S 2 , trong đó Si — T k. s 2 = 53 Ap du ng tín h Yl -T,
k=i Jk=1 k=\ Kđ
sử dụng form at lo n g để in kết quả.
78 Chương 2. M at Lab cơ bản

Bài tập 2.34. Viết chương trìn h tính gần đú ng căn bậc hai sfã với sai số
£ cho trước the o công thứ c lãp N ewton.

• Chọn Xx =

• Sử dun g công thức lăp: Xn +1 = ~(.Tn + — );


2 T„

•En+l 3Cjị
• Điều kiện dừng: < e.

Bài tập 2.35. Viết chương trình tính gần đúng căn bậc ba <ỵã với sai số
£ cho trước the o công thứ c lặp Newton.

• Chọn Xi =

• Sử dun g công thức lăp: Xn+ 1 = -(-^- + 2x„);


3 xị

Điều kiện dưng: •En+l < £.


Xn
' * n 1
Bài tâp 2.36. Viêt chương trình Ma t L ab tính tông Yl ■, băng cách sử
Í=1 r
dụn g m ã vô hướng và m ã vector hóa. So sánh thò i gian chạy của hai cách
trê n bằng cách sử dụn g lệnh profile.
CHƯƠNG

G iải gần đủng phương trình

T
rong kỹ thuật, ta thường gặp bài toán: Tìm nghiệm thực của
phương trìn h /(x ) —0 (đại số hoặc siêu việt). Nói chung, nghiệm
của nó khó có thể tìm đươc trong dang nghiệm đúng. Ngay cả
tron g trườ ng hợp ng hiệm đú ng được tìm trong dcạng số th âp ph ân vô hạ n
(vô tỷ h ay h ữu tỷ tu ầ n hoàn) thì trong máy tính củn g gặp sư quy tròn số.
Khi đó ta cũng chỉ có được nghiệm gần đúng mà thôi.
Dể tìm nghiêm gần đúng (thưc) của phương trình f( x ) = 0, ta thưdng
phải tiến h à n h theo các bước sau:

1. K hẳ ng đ inh p hươn g trìn h có nghiêm trong m ột kho ảng nào đó;

2. Chọn xấp xỉ đầu Xo, xcm đó là nghiêm gần đúng đầu tiên thuộc
kho ảng đ ang xét;

3. Điều chỉn h dần Xo sao cho càng gần tới nghiệm đú ng càn g tốt, ngh ĩa
là xây dưng th u ậ t toán;

4. Đ án h giá sai số của ng hiệm gầ n đúng tìm được so với ngh iệm đ úng.

Để ho àn th à n h các công việc đề ra ta lần lượt xét các vấn đề sau.

79
HO Chương 3. Giải gần đúng phương trìn h

§1. T ì m k h o ả n g p h â n ly n g h i ệ m

1.1 K hoả ng ph ân ly ng hiêm

Xét phương trìn h


/(*) = 0. (3.1)

Giả sử ry là một. nghiệm của phương trình (3.1). Ta


Đ ị n h n g h ĩ a 3 .1 .
nói (n, b) là khoảng phân ly nghiệm n của phương trình (3.1) nếu trong
khoảng đó phương trình (3.1) chỉ có môt nghiêm thực n duy nhất.

Để tìm khoảng phân ly nghiệm, ta dựa vào các kết quả đã có trong giải
tích:

Đ inh lý 3.1, Giả sử f(x) là hàm số liên tục trên tập D c K. K h i dỏ


(«, b) c D là một khoảng phân ly nghiêm của phương trình (3.1) nếu
f [a). f (b ) < 0 và f(x) đơn điệu trên Ịa, 6].

Đ ịnh lý 3.2. Với giả thiết của định lý 3.1 thì (o, h) là kh oả ng ph àn ly
nghiêm a của phư ơn g trình (3.1) nếu < 0 và tồn tại f'(x) đồng
thời f'(x) giữ nguyên m ột dấu v.r 6 [a, b}.

Từ định lý ta suy ra, nếu (d, b) là khoảng phân ly nghiệm Q của phương
trình (3.1) thì mọi khoảng (c, d) c (a,ò), sao cho f{ c ).f(d ) < 0 cũng là
khoảng phân ly nghiệm của phương trình trên (thu hep khoảng chứa
nghiệm). Khi đã có khoảng phân ly nghiệm thì tuỳ theo từng phương
pháp có th ể chon điể m Xo € [n, b} làm xấp xi đầu.

1.2 Phư ơng pháp hình học tìm kho ản g phân ly


nghiêm

Giả thiế t f ( x ) là hàm số liên tục trên tập D c R . Để tìm khoảng phân
ly nghiệm, ta có th ể tiến h àn h như sau:
1. Tìm khoảng phân ly nghiệm HI

1. Khảo sá t, vẽ đồ thị hàm số y f'x ). Giao điểm của đồ th ị VÓI trục


hoành là điểm To 6 D. N ế u / (ro) — 0 thì X0 = a là nghiêm của
phương trìn h . Nếu / (.To) ^ 0 thì khoảng p hân ly nghiê m a của
phương trìn h (3.1) đươc chon là lân cân về hai ph ía của To, nghĩa là
khoảng (a. l>) sao cho n < T0 < b, nhưng phải kiểm tra lại điều kiện
của đinh lý 3.1 hoặc 3.2 (để khẳn g định sự duy n h ấ t của nghiệm).

2. Trường hợp y = f ( x ) kh ó vẽ, ta viết lại phương tr ìn h (3.1) dưới dạ ng

h(x) —g(x).

Khảo sát vẽ đồ thị các hàm y = h(x) và y = q(x) trên cùng một hệ
truc tọa độ, hoành độ giao điểm của hai đồ thị là T0.
Nếu /¿(.To) = 7 (2.0) thì To = o là nghiệm của phương trình. Nếu
h ( t 0 ) ỷ 7 ( x o ) thì lân cận về hai phía của Xo sẽ là khoảng phân ly

nghiệm nẻu thỏ a m ãn điều kiện của định lý 3.1 hoặc 3.2.

Ví d ụ 3.1. D ùng phương pháp hình hoc tìm kh oảng phâ n ly nghiệm của
phương trìn h 2X+ X - 4 = 0.

Hình 3.1
82 Chương 3. G iải gần đ ún g phương trình

Giải: Viết lại phương trình đã cho dưổi dang

2* = -X + 4.

Áp dụng phương pháp hình học ta thu được phương trình đả cho có một
nghiệm trong khoảng (1.2) (xem hình 3.1). Dễ dàng kiểm tra khoảng
phản ly nghiệ m (1.2) th ỏ a m ãn điều kiệ n của đinh lý 3.2.

§2. P hương p h á f lặp đơn

2.1 Nội d un g ph ướ ng pháp


Giả sử (u, b) là khoảng phân ly nghiệm a của phương trình (3.1), tức
là / (tt) = 0, a e ( a , b).
Viết lại phương trình (3.1) trong dang

X = q(x), (3.2)

trong đó g(x) là hàm số liên tục trên \n,b}.


Chon X o là điểm bất kỳ thuôc [n, b\ và tín h dãy lăp theo công thức

Xn = g(xn-i) . / 1 = 1, 2, .. . (3.3)

Công thức (3.3) được gọi là quá trình lặp, n được gọi là thứ của phép làp.

2.2 Sự hội tụ củ a phư ơng pháp


Q uá trìn h lăp (3.3) được gọi là hội tụ, n ếu dãy
Đ ị n h n g h ĩ a 3 .2 . } tinh
theo (3.3) hội tụ , tức là tồn tại nlim
->TC
xn =X.

Đ ịnh lý 3.3.

N ếu quá trình lạp (3.3) hội tụ, nghĩa là II—lim
>oo
x„ X thì
X- fì là ng hiệm cỉúng của phươ ng trình (3.1).
Chứng m inh. Do q(x) là h àm liên tuc n ên ta có

X = nlim
—K X
x n = nlim
—ĩoo
g (.Tn_i) = g \n-¥
( limoo
x„-i)/ = g ( x ) .

Vậy X — (X là nghiệm đú ng của phương trình (3.1).


2. Phương pháp lặp đơn 83

Vấn đề đ ăt ra là điều kiện nào để qu á trìn h lăp (3.3) hội tụ Ta công nhâ n
dinh lý sau (chi tiết có thể xem trong tài liệu tham khảo).

Định lý 3.4. Giả sử q{r) là hàm liên tuc và có dao hàm g'(x) liên tuc
V.T 6 [n, h]. Giả thiết tồn tai số q > 0 sao cho

|ỡ'(r)l < <7< 1 (3.4)

và ./•„ = g € [a, 6], V« = 1, 2 __ với x0 € [a, 6] bất k ỳ là xấp xì ban


đằu. Khi đó, quá trình lặp (3.3) hôi tụ.

M inh họa h ình hoc của phương pháp lặp đơn được mô tả như trong hình
dưới đây.

Hình 3.2
84 Chương 3. Giải gần đúng phương trình

Vói điều kiện của định lý 3.4 và theo định lý 3.3 thì quá trình lặp (3.3)
hội tu tói nghiêm đúng nt của phương trình (3.1). Khi tính toán thi quá
trìn h lặp không thể kéo dài ra vô han mà phải dừng ỏ bưóc thứ n; ta xem
xn « a , tức là có sai số.

2.3 Sai số
Giả sử a là nghiệm đúng củ a phương trìn h (3.1) và x„ là nghiêm gần
đún g tín h th ec công thức (3.3). Khi đó sai số tuy ệt dối củ a ng hiệm |j:„ - tt|
được đánh giá theo các công thức

l-rìi - n t\ < — Ị.-ri - Toi (3 .5 )


1- q

hoặc
kn - < r-^— kn - rìì-il • (3.6)
1- q

(Phần chứng minh chi tiết các bất đẳng thức trên có thể xem trong tài
liệu tham khảo.)

C h ú ý 3.1. Công thức (3.5) th uâ n lợi trong việc tìm nghiêm gần đún g x n
đạt sai số £ > 0 cho trước. Cụ thể, từ đánh giá

qn
Fn - u < , — Fi - £o < e
1- q

ta suy ra cần chon số n nhỏ nh ất thỏa m ãn n > logy ~ h a y


Fi - arol

n = [log g(l - 7) + 1.
|ti —To|

Trong khi đó, công thức (3.6) thuận lợi khi tính trên máy. Muốn nghiêm
gần đúng x„ đat sai số e, ta chỉ cần kiểm tr a điều kiện dừng-

-(1 - q)
|T"n x n—1 1<c ổ —
2. Ph ương phá p lap đơn 85

Tóm tắt thuật toán:


Giả sử (a .h) là kh oản g p hân ly nghiêm tì của phương trìn h f ( x ) = 0.

• Bước 1: Viết f{x) = 0 trong dạn g X = g{x)\

• Bước 2: Kiểm tra điều kiện |</(.t )| < q < 1;

• Bước 3: Chọn xấp xỉ đầu X'0 6 Ịa, 0] và tính

xn = g { xn-i), n = 1,2,...

Sau Ẳlần lặp, được Xk ~ tt là nghiệm gần đúng của phương trình.
Sai số được đánh giá theo các công thức (3.5) hoặc (3.6).

2.4 Chương trình Mat L ab

function [x, k] =lapdon (g, q, x0,. epsilon, maxit)


% Hàm lapdon minh họa thuật toán
% lặp đon giải phương trình x=g(x)
% Input: _ g là hàm vế phải
% _ q là cận trên của đạo hàm g' (x) (0<q<l)
% _ xO là xấp xỉ ban đầu
% _ epsilon là sai số tuyệt đối
% _ maxit là số phép lặp tối đa
% Output: _ k là số lần lặp cẩn thiết
% _ X là nghiệm gần đúng thứ k

if nargin<5
maxit=le+3;
end
if nargin<4
epsilon=le-5;
end
delta=epsilon*(1-q)/q;
k=l; x=feval(g,xO);
while (abs(x-xO)>=delta) && (kcmaxit)
86 Chương 3. Giải gần đúng phương trình

x=fe val (g,xO);


k=k+l;
end
end

C h ú ý 3.2. Trong chương trìn h trê n thì hàm g được sử dung như là đầu
vào của hàm lapdon. Thông thường, có hai cách khai báo hàm g để có
thể chạy thử chương trình la p d o n như sau:

1. Tạo file "g.m", khi goi hàm lapdon thì hàm này nhất thiết phải
nhâp dưỏi dang xâu ’g*.

2. Tron g cửa sổ lệnh n hậ p vào

>> g=@ (x) b iể u t h ứ c củ a g,

và khi gọi chương trình lapdon thì chỉ cần nhâp q dưới dang tên
nguyên bản, khônỊ. lãl ’ rong dấ u nhá y đơn như trườ ng hơp trên.

Ví d ụ 3.2. Giả sử ta muuii chạy chương trình la p d o n để tìm nghiệm


X r2
gân đúng của phương trìn h r — ợ(.r), trong đó q(x) = 1 f T —— trên đoan
í 1.3]. Dễ thấ y (1,3) là kh oả ng ph ân ly ngh iêm a — 2 củ a phư ơng trìn h
trên, đồng thòi ta có đánh giá

ị = : q < \ . V.T 6 (1,3)

Ta sẽ lần lươt thưc hiên theo hai cách đã nêu trong chú ý 3.2:

1. Tạo hàm g.m với nội dung:

function temp=g(x)
t e m p = l + x - x . A2 / 4 ;
end

sau đó gọi thủ tục lapdon dưới dang

>> [x,k]=lapdon('g',q,xO,le-5,100)
3. Phương pháp Newton (phương pháp tiếp tuyến) 87

2. N hâ p các lệnh sau:

>> g=@ (X) l+x-xA2/4;


>> [X, k ] =lapdon ( g , q , xO,le-5,100)

Ban đoc hãy tư thực hiện theo cả hai cách trên và kiểm t ra kết quả.

§3. P hương piiáp N ewton


(PHƯƠNG PHÁP TIẾP TUYẾN)

3.1 Nội du ng phương pháp


Giả th iế t là kho ảng phâ n ly nghiệm tt của phươ ng trì n h (3.1),
đồ ng thò i /(./:) là hà m liên tục và có đao hàm hên tục tr ê n [a, /<]. Như vậy
AB là cu ng trơ n với A(a. /(«)) và Bự). /(/;)).
Thay cung AB bởi đường tiếp tuyến tại A hoăc tại B (hình 3.3). Hoành
clô giao điểm của tiếp tuyến của đồ thị hàm f{x) tại A (hoăc B) vói trục
hoành Ox đươc gọi là nghiệm gần đúng thứ nhất X \ cùa phương trình
(3.1) nếu XI e {n.h). Khi đó ta có điểm M \ { x ị , /(.T])). Lặp lại quá trình
trên đối vói M ị ...
Bâv giờ ta xây dưng thuật toán. Lập phương trình tiếp tuyến tai A hoăc
B, chẳng han tại B(b. f(h)).
Đầt .tq b làm xấp xi thì B (.r0. /(.T0)) vầ phương trình tiếp tuyến tai /?:

y — / (■'■()) + j ' ( X(| ) (x —X o ) ■

Cho y — ơ (tìm hoà nh đô giao điểm của tiếp tuyế n trê n với tru c hoà nh) ta
được
„ = ,... _ / M
1 J;° Ỉ U Y
Nếu Xj e {a.h) ta có điểm M\{x , f[x.\)). Lặp lại quá trình trên với điểm
1

M] ta đươc
..
2 1 /'(*! )1" '
88 Chương 3. Giải gần đúng phương trình

H ì n h 3 .3
Tổng quát ta có
/ (•£»»—1) _ l o /Q r7\
•Tn — r n—1” 777 7’ ^ — 1)2,... (3.7)

Công thức (3.7) được gọi là quá trình lặp Newton (hay tiếp tuyến).

3.2 Sư hôi tu của phư ơng pháp N ew ton


Định lý 3.5. Giả sử (a.b) là kho ản g phân ly ngh iệm « của phư ơng trình
(3.1), f ( x) là hàm số liền tụ c và có đạo hàm liên tụ c đến cấp hai; dồng
thời /'(.; ), /"(./•) giữ nguyên dấu \fx G {(I,b\. x ấ p x ỉ ban dầu Xo dược chon
là a (hoặc b) sao cho
f (ro) f"(r) > 0 V.T e [n, b\ . (3.8)
K hi đó dãy {x„} tính theo công thức (3.7) sẽ hội tụ dơn điệu tới nghiệm
dúngcí của phư ơng trình (3.1).
Cụ th ể hơn, nếu f' (x), ĩ "(x ) cùn g dấu thì dược dã y [x n) dơn diệu giảm tới
nghiệm dúngc t, còn nếu f' (x). f" ( x ) khác dấu thì được dãy {xn} dơn điệu
tăng tói nghiệm dú ng f\ cùa phư ơng trình (3.1).
Định lý này có th ể chứng m inh bằn g giải tích, ỏ đây ta chì mô tả hìn h hoc
(hình 3.4).
:ì. P hương p h á p N ew ton (phương pháp tiếp tuyến) 89

3.3 Sai số
Xem x„ « a thì |xn —a\ là sai số tuyêt đối của nghiệm gần đúng x„
của phương tr ìn h (3.1)
3.1)..
Với các điều kiện của định lý 3.5 thì ta có đánh giá

|*n (3.9)

trong đó 0 < m 1 < |/'( z ) | Vx G ịa.


ịa. 6], hoặc

|.x’n - (A < kn - 3:„_i|2


3:„_i|2 , (3.10)
(3.10 )
2m.\

với M2
M 2 > \ f "(x)
"( x)\\ V.T G \a,b}.
90 Chương
Chương 3. G iải gần đú ng p hươ ng trình
trình

Chứng minh chi tiết cốc đánh giá (3.9) và (3.10) có thê xem trong tài
liệu tham khảo.
Từ (3.10), ta thấy, để | r„ —(\\ < e thì cần

li <
/

C h ú ý 3.3. 1. B ất đẳn g thức (3.9


(3.9)) đúng với moi phương ph áp lặp,
lặp, chì
cần xem Xfí là nghiêm gần đú ng của phương trìn h (3.1)
3.1)..

2. Bất đẳng thức (3.10) cho thấy phương pháp Newton hội tu tới
ngh iệm đú ng cấp hai, nh an h hơn so
so với phương ph áp lăp đơn.
đơn.

Tóm tắt thuật toán:


Giả sử (u, b) là khoảng p hân ly nghiêm phương trìn h f{
nghiêm a của phương f { x ) = 0.

• Bưóc
Bư óc T. Tính f'
f ' (x)]
(x )] Ị "{x)
"{ x) và xét dấu của chúng.

• Bưóc
Bư óc 2: Chon Xu = a hoặc Xu = b sao cho thỏa mãn điều kiện

/ (zu)./ (x) > 0 Vx- e [a,6].


(zu)./

• Bước
Bướ c 3 : Từ xấp xi đầu Xo, tính

Sau k lần lăp ta thu dươc x k « n là nghiệm gần dũng của phương
trình. Sai số \xk - rv| dươc đánh giá theo công thức (3.10).

3.4
3.4 Chư ơng trình Ma t L ab

Chương
Chươn g trình M a t L ab minh hoa việc dùng thuât toán Newton (tiếp
tuyến) tìm
tìm nghiệm xấp xi xi của phương
phương trình /(;r)
/(;r) = 0 trong kho ảng p hân
ly nghiêm (a> fc), —

function
func tion [x, n]
n]=newton(fu
=newton(fun,dfu
n,dfun,ml,M
n,ml,M2,xO,
2,xO,err,ma
err,maxl)
xl)
% Hàm newt
n ewton
on tìm
t ìm nghiệm
nghi ệm gần đúng
đúng trên đoạn [a,b]
4 Phương phá p dây cung 91

% vói sai s ố t u y ệ t đ ố i e r r b ằ n g p h ư ơ n g p h á p N e w t o n .
% Input:
% _ f u n l à hàm v ế t r á i
% _ d f u n l à đ ạ o hàmhà m c ủ a hàm
hà m f u n
% _ xO l à Xấp XỈ b a n đ ầ u
% _ ml l à c ậ n d ư ớ i c ủ a đ ạ o h à m c ấ p mộ mộtt
% _ M2 l à c ậ n t r ê n c ủ a đ ạ o h à m c ấ p h a i
% _ e r r l à s a i số t u y ệ t đ ố i
% _ ma x l l à số p h é p l ặ p t ố i đ a
% Output:
% _ X là nghiệm xấp xỉ
% _ k là số phép lặp lặp cần
cần thiết
if nargin<7
maxl=le+3;
en d

if nargin<6
err=le-5;
end
del ta=sq rt(2* ml* err/M 2) ;
n = l ; x = x O - f e v a l ( f u n , x ũ ) / í e v a l ( d f u n , xO) ;
w h il e ab s (x -x O) >f=delta && n<m n< m axl
xO=x ;
x=xO-feval (fun,xO)/fẹval(dfun, xũ) ;
n=n + 1;
end
end

Bạn đoc hãy tự á p d un g để tính đến kết quả đối đối vói
vói bài toá n: T ìm nghiêm
gần dú ng của
củ a phương trình f ( x ) = X 1- 3.T2 1 75x—10000 = 0 trontron g kh oản g
(-11: —10). Chon điểm xuất phát Xo - -11, t ì m nghiệm nghi ệm x„ sao cho sai số
tuy
tu y ệt đối
đối kh ôn g vươt q uá 10 5.
92 Chương 3. Giải gần đúng phương trình

§4. P hương pháp dây


dâ y cung

4.1 Nội du ng phư ơng pháp

Giả sử (a. b) là kho ảng p hân ly nghiệm


nghiệm a c ủa p hươ ng trìn h (3.1) 3.1);; đồng
đồng
thời f(
f ( x ) là hàm số liên tục và có đạo hàm liên tục trên đoạn [a. ỉ)}. Trên
mặt phẳng toạ độ ta có hai điểm A (a, (a, f {a)
{a ) ) v à B (b, f{b
f {b))
)) (hình 3.5).

H ình 3.5
3.5
Dây cung qua A , B cắt truc hoành tại điểm có hoành độ là X \ . Xem Xi lcà
nghiệm
nghiệm gần đ úng của phương trình. Phương trìn h đường thẳn g qua A và
B:
B:
f{b
f {b)) - f ( a ) , \ I rf \
y = — f — ---- (X - a) 4- f ( a) .
b —a
Cho y = 0 ta suy ra
Xi
Xi = a - 2 7 7 -t / ( q)- (3.11)
- /(n)
Chọn Xo = a (hoăc Xo = b) thì d = b (hoặc d — a). Thay vào (3.11) ta có

X\
X\ - Xo
Xo-
f [ d)t -~ /J ì((x~T-/
f[ ~T-/
o) ( t o) (3 12)

Từ (3.12) ta có điểm
điểm A/i (xi,(xi, / (xi)) thuộ c cu ng AB.
AB . Lăp lại
l ại quá trình trên
đối vói đoạn [xi, d\ ;. .. ta đ ượ c quá trình lặp
lặp theo phương pháp dây cungc ung
4. Phương pháp dây cung 93

như sau:

n - 1.2,... (3.13)

4.2 Sự hội tụ của ph ương pháp dây cun g


n ịn h lý 3.6. Giả s ử [a. b) là kho ảng phân lv nghiệm tt của phư ơng trình
(3.1). Hàm số f[x) liên tụ c và có đao hàm f'(x). f"(x); đồng thời các đạo
hàm đó giữ nguyên dấu trên đoạn (I. b\. x ấ p x ì ban đầu Xo dược chọn sao
cho
/ ( x o ) ./ ( x )< 0 ;
(3.14)
f ( d ) . f ( x o)<0.
K hi dó dãy {x,,} tính theo công thức (3.13) sẽ đơn điệu hội tụ tói a khi
n —> CX3.
Cụ thể: nếu f '(x), f"(x) rù ng dấu thì được dãy {./•;,} dơn điệu tảng tới (ì
khi n —> oc và ngược lại, n ếu f ( x ) , f"{x) khác dấu thì dược dãy {x„} dơn
diệu giảm tới n k h i n —> oc.

Dịnh lý này có thể chứng minh bằng giải tích (đôc giả tự chứng minh
hoặc xem tài liệu tham khảo), ỏ đây ta chi mô tả hình vẽ cho một trường
hợp f ' > 0. f"{x) > 0 (xem hình vẽ 3.6).
y

3
m

X
o
/(«)

Hình 3.6
94 Chương 3. Giải gần đúng phương trình

4.3 Sai số
Q uá tr ìn h lặp (3.13) không thể kéo dài ra vô hạ n, dừ ng ở bước thứ lap
thứ n ta đươc x„ Rí o. Sai số đươc đánh giá theo công thức (có thể xem
chứng minh tron g tài liệu tham khảo):

|zn - ft| < — —— \xn - .T „-i|, (3.15)


Till
tron g đó,
0 < mi < Ị / (x)ị < A/ị. V.í;€ ịạ,b\
Từ (3.15) ta thấy, để \xn - o| < £ thì cần
T I Iị S

J 'n — ,X’n _ i < — ■


AI 1 —in 1
Tóm tắt thuật toán :
Giả sử (n, b) là k hoảng ph ân ly nghiêm a của phương trình f(x) 0.

• Bước 1: Tính f'{x). f"{x) và xét dấu của chúng.

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

/(*o) ./"(*) < 0


f (d ).f( x o ) < 0

để chọn xấp xi ban đ ầu .1.0 là a (hay h) thì (I —I) (hay a).

• Bước 3 : Từ xấp xi đầu To, tính

•»'0-1 •■/ V -^ n -l 7 *■• “ ! • • •


f[d) - /( x „ _ i)
J . n r/ J\ [ ! \ I "

Sau k bước lăp ta đươc x k ~ n là nghiệm gần đ ún g cần tìm . Sai số


\xk —a| được đánh giá theo công thức (3.15).

4.4 Ch ươn g trình Ma t L ab

function [X,n]=secant (fun,ml,Ml,xO,xl,err,maxl)


% Hàm secant tìm nghiệm gần đúng trên đoạn [a,b]

% vói sai số tuyệt đối err bằng phưong pháp dây cung.
4. Phương pháp dây cung 95

% Input:
% fun is the object funtion
% xO, xl are two starting points
% (initial approximation to a zero)
% ml, Ml are lower bound and upper bound
% of the derivative f'(x)
% _ err is the tolerance
% maxi is the maximum of number of iterations
% Output:
% X is the zero
% n is the number of iterations
if nargin<7
maxl=le+3;
end
if nargin < 6
err=le-5;
end
n= 0 ;
delta=ml*err/(Ml-ml);
while abs(xl-xO)>=delta && n<maxl
x2=x0;
xO=x 1 ;
xl=xl+(xl-x2)/ (fevâl (fun,x2)/feval(fun,xl)-1) ;
n=n+l;
end
x=xl ;
end

C h ú ý 3.4. Q ua hai phương pháp Newton và dây cung đã xét trong các
tiết §3 và §4, ta thấy, trong cùng điều kiện của hàm /(.r) là hàm số liên
tuc và có đao hàm liên tuc đến cấp hai trên khoản g phâ n ly nghiêm (ì của
phương trìn h (3.1) th ì:
96 Chương 3. Giải gần đ ú n g phương trình

• N ếu / \ f " cùng dấu thì tính theo phương pháp Newton sẽ thu đươc
dãy đơn điêu giảm tỏi nghiệm dũng n còn theo phương pháp dày
cung sẽ đươc dãy đơn điêu tăng tới (ì.

• N ếu / \ f " trái dấu sẽ cho ta kết quả ngược lại.

Vì vậy, ta có thể tính đồng thòi theo cả hai phương pháp trong cùng diều
kiện (gọi là sự phối hợp của các phương pháp lặp). N ghiêm gần dúng sau
k phép lặp ta được Xk là nghiệm gần đ ún g theo phương ph áp Newton, còn
Xk là ng hiệm gần đú ng theo phương pháp dây cung. Khi đó, nghiêm gần
đúng Xk có thể lấy Xk — — - — sẽ đ ạt kết quả tố t hơn.

§5. P h ư ơ n g TRÌNH ĐA TIIÚC BẬC lì

Xét phương trình đa thức bâc n:

p{x) = 0 . (3.16)

tron g đó, p(x) —ao-Tn + <ïiÆ"-1 d


------ han_i.T + nri vỏi n0 / 0. n, € R. / - 0, n.

5.1 M iền chứ a nghiệm của đa thức


Ta đã biết phương trình đa thức dang (3.16) có đủ n nghiêm cả thưc
lẫn phức (đối với nghiệm phức luôn là căp nghiệm phức liên hơp). Tập
hợp các nghiệm đó chi có trong miền dược cho trong đinh lý sau:

Đ ịnh lý 3.7. Đặt A — max{|rti| ....... |an|} —max |o,| thì cac nghiêm (thưc
1 —1,
n
hoặc phức ) của phươ ng trình (3.16) thỏa mãn

|.r| <14- -Ị—ị. (3.17)


l«o|
Nghĩa là các nghiệ m của phương trìn h nằm trọn trong hình tron tàm
s s A * ,
0(0,0), hán kín h R - 1 ± —— trong rpặt ph ăn g phức.
~~ " . ĩ^õĩ
Từ đinh lý trên ta thấy nghiệm thực Xcủa phương trình (3.16) luôn thỏa
mãn - R < X < R.
5. Phương trinh da thức bậc n 97

5.2 Sở đồ Ho rner tính giá trị của đa thức


Ta có

p{x) — (loXn + ũ\Xn * + • • • + ữn—iX -Ị- (ln

— ( « 0-T+ «i) xn_1 + a 2 .rn_1 -ị-----


(3.18)
= ((a0x + (Ii)x + a2 )xn _ 1 + a3x n~3 + •••

- (• • • + {((Ìox + ữ i) X + G2 ) X + • • ■+ Ũn—Ị ) X + ữn ■

Do đó, khi thay X = c ta tính dần

bo — Ooi

b\ = 60C+ O1 ;
b ‘ỉ — b ịC + «2 | (3.19)

bn b tì —\C + ữn .

Từ (3.18) ta suy ra p(c) = bn là giá trị của đa thức tại X = c. Quá trình
tính p(c) theo (3.19) goi là sơ đồ Horner, được mô tả trên bảng tính như
sau:

Hê số đa thức (lo (11 n2 . ^71—1 (ln


b0c í>lC bn- 2c bn—\C
c bo h bo£ . bn-ì bn = p(c)

Dễ dàng chì ra rằng các hê số «0 = b0,b ! __ , 6„ - 1 cũng là hệ số của đa


thức thương qix) = b o X n ~ l + />l x n _ 2 H----- 4 ỏn_2x + òn_i khi chia7?(x) cho nhị
thức X —c. Vậy khi tìm nghiệm gần đúng thực của phương trình đa thức
(3.16), ta tìm khoảng chứa nghiệm thực - R < X < R. Nhờ sơ đồ Horner
để phản ly nghiệm và áp dung các phương pháp đã xét trong §2, 3, 4.

5.3 Chương trình M a t L ab

Chương trình M a t L ab m inh hoa việc tính giá tri của m ột đa thứ c tai
mót điểm bằng cách áp dun g th u ật toán Horner.
98 Chương 3. Giải gần đúng phương trinh

function v=hornerl(a,c)
% Input: a là vector hệ số của đa thức;
% c là giá trị của biến
% Ouput: V là giá trị của đa thúc tại điểm x=c.
m=length (a);
v=a (1 ) ;
for i=2 :m
v=v*c+a (i);
end
end

Thử ng hiệm chương trình trên, tính giá trị của đa thức
p(x) = —X7 + 4x 5 — 2x-4 + 5x2+ 7 có vector biểu diễn hệ số tương ứng
a = [ - l 0 4 - 2 0 5 0 7 ], ta thu được giá tri p( 2) = —5. Chú ý rằ ng
ta hoàn toàn có thể thực hiện công việc trên bằng cách sử dung lệnh
M a t L ab như sau:

» a = [ - l 0 4 - 2 0 5 0 7] ;
>> v=polỵval(a, 2 )
V =

-5

§6. GIẢI g ầ n d ứ n g h ệ p h ư ơ n g t r ì n h
PHI TUYẾN

Trong tiết này ta mỏ rộng phương pháp Newton (tiếp tuyến) và


phương pháp lặp để tìm nghiệm gần đúng của hệ phương trìn h phi tu yến.
Để th u ậ n tiện cho việc trìn h bày, ta xét hệ hai phương trìn h hai ẩn

(3.20)

trong đó /, q là các hàm (phi tuyến) phụ thuộc vào hai biến X, y. Thuật
toán và kết quả có thể dễ dàng mỏ rộng cho hệ n phương trình n ẩn.
6. Giải gần dúng hệ phương trình phi tuyến 99

6.1
6.1 Ph ướ ng ph áp Nevv
Nevvtton
Bằng cách nào đó (chẳng hạn phương pháp đồ thị), ta chọn được điểm
xấp xi ban đầu A/ 0 (.To,
(.To, ỉ/o) . X uất ph át từ
từ điểm
điểm đó ta tìm
tìm M ị (.Ti, y i ) gần với
nghiêm hơn. Đặt
— Xo + ho
ho,, 1J\ — Vo + ^0
và giả thiết f(
f ( x , y ) , g ( x , y ) là nh ững hàm số khả vi đến cấp cần thiế t nào nào
đó. Áp dung khai triển Taylor các hàm f( f ( x , y) v à g(x. y) tai điểm I\í0 ta có

/ (i'0 + ho, yo + ko) = / (x'o, yo) + 7ỉo^—|a/0+


/0 + ko~õ~\Mo + ■' '
(3.21)
g (x'o + ho, yo + kữ)
kữ) = y (x q , yo) + ho — IA/0 + k ( ) IA/0 + •••

Vói ho. ko đủ bé, bỏ qua các số hạng từ hị, kồ trỏ đi trong (3.21) ta được
xấp xì; thay dấu "w" bỏi dấu "=" ta thu được hệ phương trình để xác định
ho, ko'.
f'x(Mo)h
f'x( Mo)hoo + f'y(Mo)ko = - f ( M 0ỵ
(3.22)
g'g'x {Mo)ho + gy{Mo)ko — —g(Mo
g( Mo).
).
Tron g hệ (3.22)
(3.22),, nếu định thức Jacobi
Jacobi
K(
K ( Mo ) f'y (M 0)
Jo = J(
J ( M 0) = 7^0
gx (Mo)
(Mo) ¿ ( M o)
thì hệ trên tồn tại duy n h ất nghiệm tính
tính bời công
công thức
1 Ị (Mo) f'y ( Mo) .
/iu =
J(
J ( Mo) 9 (Mo)
(Mo) g'y(Mo) 1
(3.23)
1 f'x (Mo) ĩ ( Mo) .
ko =
J(
J ( Mo) g'x(Mo)
g'x(Mo) g ( Mo)
Mo )
đồng thòi ta được điểm gần đúng thứ nhất tốt hơn gần đúng Mo(xo,Vo)
ba
ban đầu
Xi = To + ho, y\ = yo + ko-
Nế
N ế u đ iểm
iể m Mi(.Ti, yi) chưa đa t mong muốn,
muốn, ta thực hiện lặp lai quá trình
trên đối với điểm M\. Tổng qu á t ta cócó công
công thứ c lặp
■^n+l •— xn
x n T hn',
(3.24)
pn+
pn+l = Vn T k n,
100 Chương 3. Giải gần đúng phương trình

trong đó, /?„, k n được


được xác đ ịnh theo công thức

. = ____ Ị _ f(
f ( Mn ) fy( A / n ) .

J(M n) ỡ ( A /„ ) g ' y { M n)
n) '
(3.25)
f ( M n)
ì' n n = 0. 1 . . . .
J(A/n) g( Mn)
Mn) ’
Ngư
N gười
ời t a đ ã c h ứ n g m i n h được .To. y0)
đượ c r ằ n g , n ế u x ấ p xi đ ầ u A/o(.To y0) gần đúng
vói nghiệm của hệ (3.20) thì quá trình lăp theo công thức (3.24), (3.25) sẽ
hội tụ tới nghiêm đúng (.T*. ym y m) của hê (3.20) khi n —» oc (có t h ể xem t r o n g
tài liệu
li ệu tham khảo)
khả o)..

6.2 Ph ươ ng phá p lặp


lặp

Viết lại hệ (3.20) dưới dang

Ị* = F{x,y)
(3.26)
Ịy — y).

Chọn A/q(.t0, V o ) làm xấp xỉ ban đầu và tính

*1 = F { x 0,yo)
<
Vi =G{x0,yo).

Tổng
Tổng qu át
'
In = F{
F { x n-\
n- \ , y n-i
n- i ) , „
' , 2 ___
Tì. = 1 ,2 ___ (3.27)
í/n = G ( z n—Ị , yn —i ),

Điều kiện để quá trình lặp (3.27) hội tu, nghĩa là dãy M„ (x,,.//„) hôi tu
tới điểm M*
M* ( x * , y*
y*) là nghiệm đúng cù° (3.26) khi n —> oc dươ
(3.26) d ươcc cho
ch o bởi
định lý sau

3 . 8. Giả a ử M*
Đ ịnh lý 3. X * . ỳ * ) ĩà nghiệm dũn g của
của hệ (3.26) nằm trong
hình chữ nhật
= {a < X < b, c < y < d}.
6. Giải gần đúng hệ phương trình phi tuyến 1011
10

Giả thiết Mo(xo, yo) € & bất k ỳ ỉà ỉ à xấp xi ban đầu, ngoài ra cấc hàm số
F(
F ( x , y ) , G ( x , y ) liê
li ê n tục,
tục , có các đạo h à m riê
ri ê n g liê
li ê n t ụ c và thỏ
th ỏ a m ã n cấc
điều kiên
dF dG
+
dx dx
(3.28)
ÕF dG
+ 0 < <7 < 1.
dy dy
Kh
K h i dó, q u á tr ì n h lặp
lặ p (3.27) hội tụ tới nghiệm đúng M* (x*. y*)
y*) của
củ a h ệ
(3.26) khi n —> oc.

Nế bướ c t h ứ n, ta có x n sa X*. y n sa y * và sai


N ế u q u á t r ì n h lặ p t r ê n d ừ n g ỏ bước
số đươc đánh giá theo biểu thức

|x„ - x*\
x*\ + Iyn
y n - y*\
y*\ < qn {|f
{|fcc - n\ + \d - r|}
r|} . (3.29)
(3.29)

Chứng minh định lý 3.8 và đánh giá chi tiết có thể xem trong tài liệu
tham khảo.

6.3 Chư ơng trình Ma t L ab

Xét ví du tìm nghiêm gần đúng cùa hê bằng phương pháp Newton:

X + 3 lg X - ỹ1 =0
<
2x2
2x2 - xy - 5x + 1 = 0.

Xấp xỉ đầ u có th ể đươc
đươc chon sơ
sơ bô
bô theo
theo phương phá p h ình học nh ư sau:
Khảo sá t và vẽ đồ
đồ th ị các hàm

y2
y2 — X + 3 lg X , (x > 0); ■
2x 2 —5x + 1
y = ------ X------- ■
trên cùng một hệ trục tọa độ (hình 3.7), ta thu được hai giao điểm N và
M vối các
các lân c ận tươ ng ứn g

Dn = {1 < X < 2; -2 < y < —1} ;


Dm = {3 < X < 4;
4; 2 < y < 3}.
3} .
102 Chương
Chương 3.
3. G iải gần đú ng phương
phương trình

ở đây, ta tìm nghiệm trong lân cận


cận của M vói Xo = 3.4; ^0 = 2.2.
Thủ tục tính
tính hàm F:
function F=F(X)
F=zeros(2,1);
F (1)=x( 1)+3*logl0( X(1)) -X(2)*x
-X(2)*x (2
(2);
F(2)=2*X(1)*X(1)-X(1)*X(2)-5*X(1)+1;
end

và thủ tục tín


tí n h ma trậ n Jaco
Jacobi
bi JF :

function JF=JF(X)
X =x (1); y=x(2);
J F = [1 + 3 / (x*lo
(x*log(1
g(10)
0) ), -2*y;
-2*y; 4*x-y-5, -X] ;
end

.........................................§7. BÀI T Ậ P
Các bài tập sau đây đều sử dụng phương pháp tính theo công thức và
lập
lập trìn h tính theo
the o chươ
ch ương
ng trình M a t L ab để kiểm tra lai.
7. Bài tập 103

B à i t ậ p 3.1. Tìm kho ảng p hân ly nghiệm cùa các phương trìn h sau:

1. f ( x ) = X3 —6x + 2 = 0;

2. f ( x) = 2* - 5x - 3 = 0;

3. f (x) = lg(10 + x) —X —6 = Ü;

4. / (x) = lg 3; + X2 —6 = 0.

Bài t ậ p 3.2. Bằng phương pháp lăp đơn, phương pháp Newton, và
phương ph áp dây cung tìm nghiệm gần đúng của các phương trìn h sau
sao cho đat sai số tuyệt đối < 0 .0 1 .

1. X3 - Ì2x - 5 = 0; 5. sinX + cos X = Ax\

2. X-3 - 2x2 - 4x + 7 = 0; 6 . X = sin3x;

3. .T2 —10 lg x = 2; 7. X4 + 3.r = 2.0;

4. (x - l )2 = ị r x ; 8 . X4 —'3x + 1 = \).

Bài t ậ p 3.3. Cho phương trình

v/Ĩ65x 3 + 1.12xa + 14.3ỖX - 12.75 = 0.

Chứng tỏ rằng khoảng (0.5; 1.5) là một khoảng phân ly nghiêm cùa
phương trìn h trên. Kiểm tra sự hội tụ của các phương pháp lặp; phương
pháp Newton (tiếp tu yến). Tính đến phép lặ p th ứ ba X3 bằng các phương
pháp trên. Đ ánh giá sai số của X3 theo từng phương pháp.

B ài tậ p 3.4. Cho đa thức

pn{x) = a0xn + OiXn _ 1 + •■•+ n„_1.T+ n„, (rto ^ 0).

Tìm công thứ c tí n h đạo h àm F (<c)(x), k = 0,1,2,... theo sơ đồ Horner. Áp


dụng tính
p 7(x) = X7 — 6 x5 + 7x4 — 8 x3 + 6 x + 7

tại điểm X = —3.


104 Chương 3. Giải gần đúng phương trinh

B ài tậ p 3.5. Tìm nghiêm dương của hê phương trình sau:

X2 + y2 = 1
«
X3 — y —0

bằng các phương pháp lă p và phương pháp Newton (khi tính to án lấy 7
chữ số sau dấu phẩy).
CHƯƠNG

P hương pháp số t r o n g
ĐẠI số TUYẾN TÍNH

§1. MỞ ĐẦU VỀ HỆ DẠI SÔ TUYẾN TÍNH

1.1 Đ ật vấn đề

T
rong thực tế, nhiều mô hình toán học dẫn đến việc tìm nghiệm
của hệ đại số tuyến tính:

+ ^ 12 ^2 + ' ■ 4" o.\nxn — Ol,n+l

Oỉl^l + CL22X2 + •• + ■ ữ2nxn = «2,71+1

Q m l^ l + Qm2%2 + • 4~ O-mn^n = ® m ,n + 1

trong đó a,j e R Vi, j là các số thực đã cho (hoặc tìm đươc tron g mô h ình
toán học hoặc có thể quan sát được).
N ghiêm của hệ (4.1) là một bô số th ực (hoặc phức) có th ứ tự sao cho khi
thay vào (4.1) được đồng nhất thức.
Hệ (4.1) có thể v iết dưói d ạng m a trận:

Ax —b, (4.2)

105
106 Chương 4. Phương pháp vSố trong đại số tuyến tính

trong đó,

Ơ11 «12 •• « in

A =
«2 1 «22 •• «2 n
e Rmxn là ma tràn hê số;

®ml «m2 •• «mn

• b = («!,„+!, «2,„+ 1 , •• + )‘ € Rm là vectơ (cột) vế phải;


71 1

• X = ( x \ , X 2 , ■■ x„y e Rn là vectơ nghiêm cần tìm.

Trường hợp m = n (số phương trình bằng số ẩn) thì A là ma trân


vuông cấp n. Trong giáo trình này ta chỉ đề cập đến trường hơp 77? - n
còn trườn g hợp m Ỷ n nếu có ta sẽ xét cụ thể.

1.2 Ph ươ ng ph áp Cramer
Xót hộ phương trì n h đai số tuyến tính:

Ax = b, (4.3)

trong đó A là ma trận vuông cấp n. Ta đã biết, điều kiên cần và đủ (lể


hệ (4.3) tồn tại duy nhất nghiêm đó là A là ma trân không suy biỗn
(dct A Ỷ 0). Khi đó, nghiệm duy nhất X* € R" được tín h bởi công thức

X* = A ~ l b, (4.4)

hoặc theo công thức C ram er (đã xét trong giáo trìn h đại số tuvến tính):

•r* = ậ , i = T7n; (4.5)

trong đó A = det A và A, là định thức của m a trậ n nh ân đươc từ A bằng


cách thay cột thứ i bởi cột b.
N hư vậy, m uốn giả i hệ phương trìn h (4.3) bằng phương pháp Cram er, ta
phải tín h 7 7 + 1 đinh thức cấp n. Mỗi định thức cấp n tính theo khai triển
La place cần n! — 1 ph ép cộng (trừ ) và 7?!(n - 1) ph ép nhân . Vây với hê n
phương trìn h n ẩn cần (n + l)(n! — 1 ) = (n + 1 )! —(n + 1 ) phép cộng và
n!(n 2 — 1 ) phép nhân, ngoài ra còn n phép chia để tìm nghiệm theo công
2. Phương pháp giải đúng và chương trình Mat Lab 107

thức (4.5). Sau đây ta nêu một vài bố liệu để thấy rằn g k hi n tăn g th ì so
phép tín h tă n g r â t n h an h tới mức không có khả năng tín h toán, ngay cả
khi sử dun g n hữ ng m áy tính h iện đai nh ất hiện nay (bản g 4.1).

a Số p h é p n h â n Số p h é p c ộ n g
4 360 115
5 2880 716
10 359,251,810 39.916,791

B ản g 4.1
Đổ khắc phục khối lượng tính toán, ta sẽ xét một vài phương pháp giải
đúng và giải gần đúng sau.

§2. P h ư ơ n g p h á p giải đ ú n g và

CHƯƠNG TRÌNH M a T L A B

Các phương pháp sau cho phép tìm nghiệm đúng. Nghiệm gần đúng
thu được là do sự quy tròn số sinh ra trong quá trìn h tính toán.

2.1 Ph ươ ng pháp Gauss


Nội dung của phương pháp là loại trừ ẩn, nhằm giả m khối lương tín h
toán. Phương pháp Gauss được thực hiện qua hai quá trình thuận và
nghịch để tìm nghiệm của hệ đại số tuyến tính,
p ể cách trìn h bày đươc đơn giả n, ta xét hê bốn phương trìn h bốn ẩn

OnXi + n 1 2X 2 + 0 1 3X 3 + 0 1 4X 4 = O i5

O21X1 + 0 2 2X 2 + O23X3 + 0 24 X4 = 025 .


« (4.6)
0 31 X1 + 0 3 2X 2 - f 0 33 X3 + 0 3 4 X4 = 0 35

0 41 X1 + 0 4 2 X 2 + 0 43 X3 + 0 4 4X 4 — 045

Ta luôn có th ể g iả thiết 0 n Ỷ 0. Trường hơp Oii =0, hệ (4.6) ắt phải có ít


nh ất một phần tử 0,1 Ỷ 0' (i = 2 ,3,4). Ch ẳng hạn 031 Ỷ 0, đổi chỗ phương
trình thứ ba cho phương trình đầu và đánh số lại ta được Oii 7^ 0 .
108 Chương 4. Phương pháp số trong đại số tuyến tính

2.1.1 Q u á t r ì n h t h u ậ n

Đưa hê (4.6) về dạng có m a tr ậ n hệ số dạng tam giác trên .

Bước 1: Giữ nguyên phương trìn h đầu của hệ (4.6). Từ phương trìn h
thứ hai trỏ đi, các hệ số, kể cả vế phải được biến đổi theo công thức:

(lil &lj , i — 2,3. 4; j — 2,3, 4,5


aịj1} = Oý (4.7)
ttll

còn
(1) O ii« n A n A
«à = 0 ,1 ---- ----- = 0 , I- 2 ,3,4;
ơn
nghĩa là, ẩn £i của hệ (4.6) được loại trừ ra khỏi các phương trình
th ứ h ai, ba và tư. K ết thúc bưóc một ta th u đươc hệ

o n £ ' i + 0 i2 £ '2 + 0 i 3 £ 3 + O14X4 — «15


(1) , (1) , (1) _ (1)
0 2 2X 2 + «2 3 £3 + O ụ X ị = 0-25
(4.8)
(1) , (1) . (1)
O32 «-'2 + O33 £3 + «34 £ 4
_ (1)
— «35
(1) , (1) , (1) _ (1)
a 42 x 2 + O43 £ 3 + 0 ^ 4 '£ 4 = « 45

• Bước 2: Loai trừ ẩn r 2 ra khỏi hệ (4.8) đối với phương trình thứ ba
và tư.
Với giả thiết «22* Ỷ 0, các hệ số của hai phương trình sau đươc biến
đổi theo công thức:

i(22)
ỈÍ 0. i = 3.4;
(4.9)
(2 ) ni2 -n2j
(1)
„ ( 1)
0 4
„ (1)
_ Q3 c
,i = « ò ------- 7n ’ i = 3,4; j = 3 , 4. 5.
««22
(1)

Kết thúc bưóc 2 ta được hệ

O lll l + a 12x 2 + Q 13£3 + « 1 4 ^ 4 — 0 [5


— fl( l)
«22^2 + 023 £ 3 + 0 2V j -4 — °25
O
M (4.10)
„(2)-. 4 _(2)T II «
3 M
O33 £ 3 + O34 £4
(2) . (2) _ ,,(2 )
«43 £3 + «44 £4 - O45
2. Phương ph áp giả i đú ng và chương trình Mat L ab 109

• Bước 3: Loại trừ ẩn ,r3 ra khỏi phương trình thứ tư của hệ (4.10).
G iả th iế t flg> / 0, các hệ số của phương trình thứ tư đươc biến đổi
như sau:

(4.11)

Kết thúc bước 3, ta được hệ

(4.12)

Hệ (4.12) là hệ có ma trận hệ số dang tam giác trên. Quá trình


thuậ n kết thúc.

2.1.2. Quá trình ngh ịch

Từ hệ (4.12), giải từ dưỏi lên ta được nghiệm của hệ (4.6) và đươc tính
theo công thức:

4
Xi

2.1.3. T hu ật toá n (Sơ đồ tính toán)

Quá trình thuận chuyển từ hệ (4.6) về dang (4.12) thực chất là biến
dổi hê số (kể cả vế phải). Ta có thể mô tả trên sơ đồ tính toán như sau:
110 Chương 4. Phương pháp số trong đại số tuyến tính

A B Các công thức tính


«11 «12 «13 «14 «1 5

H
(«)
O
«21 «22 «23 «24 «2 5
ĩ I Q

«31 «32 «33 «34 «3 5

«41 «42 «43 «44 «4 5


(1) (1) (1)
«22 «23 «24 «25
(b)
(1) (11 (1) (1) « i l----
« l j—
«32 «33 «34 «35 ilij —ỉằ'ij
0 — --
(1) (1) (1)
«42 «43 «44 «4 5 i = 2 ,3 ,4 ; j = 2 , 3 , 4 , 5
(2) (2)
«33 «34 ai>
„(1)„(1)
Ai (c) «(2)
uij = «(1)
uij " (1)
«22
(2) (2)
«43 «44 «45 *= 3,4; j = 3,4.5
WAĨ)
(3) (3) _ (2) «43_«3 j . 4 -
«44 «45 (d) «4 j «4i (2) ’ 3 «
___________________ «33 _______________

Các hàng a, b, c, d tạo nên hệ dạng (4.12). Quá trình thuận kết thúc.
Quá trình nghịch : Nghiêm X = (x\)x 2,X3 , x 4)t của hệ (4.6) được tinh như
sau:

• Từ (d) suy ra X4 = % r;
«14

Từ (c) suy ra x3 r (2) - . ( 2)


«34 X ị
'
«3 5

«3 3

• Từ (h) suy ra x 2 = - i y [«25 - «23*3 - «24*41;


«22

• Từ (a) suy r a .Ti = — [<7-15 - « 12*2 - « 13*3 - « 14* 4]-


«11
C h ú ý 4.1. 1. Vói hệ bốn phương trìn h, bốn ẩn, qu á trìn h thu ận được
tiến hành qua ba bước. Hoàn toàn có thể mỏ rông đối vói hệ n
phương trìn h , n ẩn (khi đó cần n - 1 bước).

2. T h u ậ t toán G au ss có th ể áp dụ ng được cả đối vói hệ vô địn h hoặc vô


nghiệm. Do đó, không cần phả i tính trưóc det A.
2. Phư ơng phá p giả i đ ún g và chương trình Mat Lab Ill

2.2 Chư ơng trìn h M a t L ab

Chương trình M at L a B m inh hoa thu ậ t toán giải hệ đại số tuyến tính
Ax — b bằng phương ph áp kh ử Gauss.

function X = gauss (A,b)


n = size(A,1);
b = b (:); % Đảm bảo vector b luôn ở dạng cột
nb = n+1; Ab = [A b] ; % ma tran mo rong
% Qua trinh thuan
for i = l:n-l
for j = i+l:n
Ab(j,i:nb) = Ab ( j , i : n b ) - A b ( j , i ) * A b ( i , i : n b ) / A b ( i , i ) ;
end
end
% Qua trinh nghich
x=zeros(n, 1 );
x(n) = Ab (n,nb)/Ab(n,n);
for i = n- 1 :-1 : 1
x(i) = (Ab(i,nb) - Ab (i, i+ 1 :n) *x (i+ 1 :n) )/Ab (i, i) ;
end
end

Ví d ụ 4.1. Áp dụn g chương trình trên, giải hệ phương trìn h

7.9xi + 5 . 6 1 2 + 5.7x 3 - 7.2x4 = 6.68

8.5xi - 4.8x 2 + 0 .8 x3 + 3.5x 4 = 9 95


<
4 .3 x i + 4 .2 X 2 - 3 . 2 X 3 + 9 .3 x 4 = 8 -6

3 .2 x i - 1 4 x 2 - 8.9X 3 + 3 .3 x 4 = 1 0

Nghiệm tín h th eo chương trìn h M a t L ab là:

X! - 0 .9 6 7 1 0 ; x 2 = 0 .12480; x3 = 0 .4 2 6 3 0 ; x4 - 0 .5 6 7 9 0 .

Từ thu ật toán G auss ta thấy, quá trình th uậ n luôn phải giả thiết

a í r 1} 7^ 0 , i — 1. 2, .. .
112 Chương 4. Phương pháp số trong đại số tuyến tính

Nếu gặp n « 0 thì theo công thức (4.13) sẽ gặp phép chia cho số "s= 0"
đó. K hi đó sai số sẽ lón, đó ch ính là điều b ấ t lợi của phư ơn g p há p G auss.
Để khắc phục điều đó, ta xét phương pháp dưới đây, gọi là phương pháp
tru tối đai (Gauss-Jordan).

»
2.3 Ph ươ ng phá p G auss-Jord an (trụ tôi đại)
Nội dung của phương pháp là loại trừ ẩn.
Xét hệ phương trình (4.3) (trường hơp 777 = TÌ). Do phương pháp là loai
trừ ẩn nên thực chất là biến đổi hệ số của hệ phương trình để đươc hẻ
tương đương sao cho trong một phương trình của hệ mới chỉ còn lại một
ẩn số Xk. Sự biến đổi của hệ số được mô tả trên bảng số của ma trân mở
rông
Oll • ■ dỊj ftlq Qln 1

CLị\ ■ [ÕĨ7| ■■• ttiq Qin ơi,n+1

[yl|fc] = ^ 0) =
dpi . a PJ (Ipq opn ơp,n+1

CLn\ •• fl'Tlj ••• ^ng ^nn * ln .n + l

Tro ng m a tr â n mở rông [yt|fc], h àn g th ứ 7 ứng với phương trình thứ 7 của hê


(4.3), nghĩa là £ ( l ị = ( l ị n+i, 7 —1 , 77; cột thứ j ứng vói ẩn :Tj (j 1 , 7»)
và cột vế phải a,ị „+ 1 , 7 = 1, 77.
Ta nói npq là phần tử trôi của m a trậ n .4 nếu

laP9Ỉ = |a y |.

P hầ n tử trội đó được gọi là ph ần tử giải, hàn g th ứ p đươc gọi là hàng giải


và cột th ứ q gọi là cột giải. Q uá tr ìn h loại ẩ n được tiến h àn h theo các bước
sau:

• Bước 1: Giả sử rỉpq là phần tử giải của ma trận .1(0). Đăt

à {1) = [aÿ] , i = ĨTn; j = l,n + T,


2. Phương pháp giải đúng và chương trình M atLab 113

trong đó Up- — aPj, j — 1 ,n + 1 , nghĩa là giữ nguyên hàng giải thứ


p. Các ph ần tử khác của A l; đươc biến đổi theo công thức:

a«j>= aij - , i - Tỡn, i / p, j = l, n + ĩ- (4.14)


ơp q

Từ (4.14), ta có với i = q thì


(1) _ ơpqũịq -
Ị-- . ,
aỴq = a-iq - = 0 . ỉ = 1, n , ? / p ,
(Ipq

nghĩa là các phần tử ỏ côt giải đều bằng 0 t r ừ (Ipq = của hàng
giải. T a có th ể mô tả cách tính các ph ần tử aiy của ma trận A " trừ
h àn g giải và cột giải (kể cả cột vế phải) theo sơ đồ hìn h chữ n hậ t:

Từ đó, ta thu được hệ mỏi có ma trận mở rông

(1 ) „(1)
11 0 an (1)
in “ 1,11+1
■ « í? .

(?)
»1 ■ a«;> . 0 a (1) aw
uj,n+l

(Ị)
pi . o ( 1)
w m
o ' 1) ịẫ/pn
a<0
a p,n+ 1
fl(l)

nì <p)
unj 0 ^nn
„(>)
a n ,n + l

• Bước 2:
Trong Ã(l\ chọn phần tử giải là aị}J với điều kiện r Ỷ V- s Ỷ Q- Giữ
nguyên hàng thứ r là h àng giải và đăt <4j) = <4*), s = 1, n. + T. Các
phần tử trê n côt giải s đều bằng 0 trừ phần tử giải, các ph ần tử khác
114 Chương 4. Phương pháp số trong đại số tuyến tính

được tín h theo quy tắc hìn h chữ nh ật (4.15). Dễ dàn g thấ y rằng, các
phần tử bằng "0" ở trong cột giải q ở bước trước vẫn bằng ”0”. Khi
đó, ta thu được A^2\

• Qu á trìn h trê n đươc lặp lại, sau n bưổc ta th u được hê phươn g trình
m à mỗi phương trìn h chì còn một ẩn số. Từ đó ta suy ra nghiêm cua
hệ (4.3).

về khối lương tính toán, đối với hệ n phương trìn h n ẩn, người ta dưa vào
các công thức tính để đếm các phép nhân, chia, số lượng các phép tính
cụ thể n hư sau:

• N hâ n và chia: N = —(n 2 + 3n - 1);


3

• Công và trừ: c = —6 (2 n 2 + 3n - 5).

Ta xét một vài trương hợp đê so sánh với phương pháp Cramer

n N c
3 17 11

4 36 26
5 65 50
10 430 375

B ảng 4.2

C h ú ý 4.2. 1. Nếu chon các ph ần từ giải chính là các ph ần tử trẽ n


đường chéo chính a|í n thì phương pháp trên dược gọi là phương
pháp G auss. Vì vậy, phương pháp G auss-Jordan trá n h đươc trư ờ ng
hợp «!,' n « 0 tro ng ph ép chia của công thứ c (4.14).

2. Tron g công thức (4.14), ta gặp phép chia cho ph ần tử giải apq, vì vậy
có th ể chọn nh ấn tử giải là số ”1 " để trán h được pháp ch ia (nếu có).

3. Phư ơng ph áp G au ss-Jo rda n áp dụ ng được kể cả vói hệ vô định,


vô nghiệm và hệ có số phương trình khác số ẩn.
2. Phương pháp giải đúng và chương trinh Mat Lab 115

Chương trình Ma t Lab

function A=gauss_jordan(A)
% gauss-jordan giải hệ Ax=b bằng phưong pháp Gauss-Jordan
% Input: A là ma trận mở rộng của hệ
% Output: A là ma trận mở rộng sau khi đ ã biến đổi
% cột cuối cùng của A chính là nghiệm X của hệ ban đ ầ u .
s=size(A);
n=min(s);
for i=l:n
%
[t,r]=max (abs (A (i:end,i) ));
t=A(r+i- 1 ,.);
A (r+i-1, :)= A (i, :);
A (i, :)=t;
% Elimination
A (i, [ 1 :i- 1 i+ 1 :end])= A (i, [ 1 :i- 1 i+ 1 :end])/A(i,i);
A (i,i)= 1 ;
s=A(i,i + 1 :end);
for j= [ 1 :i- 1 i+ 1 :n ]
A(j,i + l:end)= A (j, i+1 :end) -A (j, i) .*s;
end
A([l:i-1 i+ 1 :end],i)=0;
end

Ví dụ 4.2. Giải hệ phương trình

X\ -\- x 2 ~ 3x3 "1 2 x'4 - 6


Xi —2x2 - Xị = -6
x2 + x3 + 3 x'4 = 16
2xi —3x 2 + 2.
7:3 = 6

Sử dụng chương trình M at L a b , ta thu được kết quả nghiệm của hệ là


•Ti = 8 ; x2 = 6; x3 = 4: r 4 = 2.
116 Chương 4. Phương pháp số trong đại số tuyến tính

2.4 Ph ướn g pháp Ch olesky (khai căn)

Nội đung phương pháp là đưa việc giải hệ Ax = l) về việc giải liê n tiếp
hai hệ có m a trậ n dạn g tam giác trên , dưới. Để việc tính toá n dược th u ận
lơi, Cholesky xét lại hệ phương trình (4.3), trong đó A - [ajj], là m a trậ n
đối xứng, nghĩa là a,j = d j , , Vi, j = 1,71. Ta đã biết, nếu det A ^ 0 thì A
luôn ph ân tích được th àn h tích của một ma trậ n tam giác trê n và một ma
trận tam giác dưói:

A — P.Q. (4.16)

Đặc biệt, nếu A là ma trận đối xứng thì A — Q‘Q, trong đó ọ 1 p là m a


trậ n chuyển vị của

711 7l2 ■ q 1.

0 722 ■ ■• 72 ,

0 0 . ■■ 7 n

Từ Ax = b ta suy ra:

Q'Qx = b. (4.17)

Đăt:

Qx = y , (4.18)

thay vào (4.17) ta thu được:

Ợ y = b. (4.19)

Giải (4.19) ta có y, sau đó tha y vào (4.18) và giải hệ này ta có X là nghiêm


của hệ (4.3). Thuật toán của phương pháp được tiến hành qua các bước
sau:
2. Phương pháp giải đúng và chương trình Mat L ab 117

2 .3 .1 . P h â n t í c h A = Q l Q

Ta có:

«11 « 12 «ln 9n 0 . 0 9n 912 ■ • 9ln


«21 «22 ■ «271 921 922 • 0 0 922 • Q‘2n
=

1 «112 • «1171 9m 9n2 ' ^/nn 0 0 . Qrtĩì


n
=> <kj = J 2 (ỉkxQk], Vi < j
k=ì
hay

9n — \/«ĩ7; 9ij — —"> i —2, n;


911

?V
- ỉ^«li - V2-7 7fci
9li. — J ) i = % n; (4.20)

«ij ~ £ f c = l QkiQkj .
Qij ~ ' (* < j) ; 9.j = 0 (i > j) .
Qii
Côn g thức (4.20) luôn đươc thư c hiện vì

det /1 = det ọ*, det ọ = n 9i> n 7» = 1 1 ? « ^ °-


i=l 1=1 1=1

nên 7i, 7^ 0 . í - 1 , /í.

2 .3 .2 . G i ả i h ê d ạ n g (4 .19)

Từ Ọ'?/ = 6 ta có

9 11 0 0 91 '6 1 '
921 92 2 ■. 0 92 (>2
=

9nl 9ti2 9nn ỉ/n V

hay

9n9i = ¿1

9l29l + 92291 — &2

9ln9l + 927192 + • • • + 9nn9ii


118 Chương 4. Phương pháp số trong đại số tuyến tính

Từ đó, ta suy ra:

y =1
<1\1' (4.21)
bj - E U 1! 9ifcì/fc
Vi = ( Ỉ > 1 ).

2.3.3. G iải h ệ d ạ n g (4.18)

Từ Qx —y ta có
Ợ ll Ọl2 ••• (]ln Xl Vi
x2
0 <722 • ■■ Ợ2n
= m

0 0 ... Ọnn xn 'Jn


Từ đó suy ra:
Vn
%TI —
(Jnn1 n (4.22)
Vi - Ẹ 7«*-TJfc
= -------- —--------, (j < n).
<ln
T hu ật toán được thực h iện cụ thể như sau:
• Bước 1: Từ hệ phương trình Ax — b vói A là ma trân đối xứng, ta
phân tích A = QlQ, trong đó các phần tử q,j đươc tính theo công
thức (4.20).

• Bước 2; Giải hệ Qly - b với vector ỊJ - ( / / 1 , /72, . . . . ỤnỴ đươc tính theo
công thức (4.21).

• Bước 3: Giải hệ Qx — y, ta thu đươc vector nghiệm X đươc tìm th ('0


công thứ c (4.22).
C h ú ý 4.3. Trong qu á trìn h tính chỉ lấy dấu +v ^ và có th ể gặp số phức
(khi khai căn số âm) n hư ng kh ông ảnh hưởng đến kết quả.

Ví d ụ 4.3. Giải hệ phương trìn h Ax = b, tro n g đó:


. "S.
T 2 'ì 1
A - 2 5 1 , b = 1
1 1 3 1
2. Ph ương pháp giải đúng và chương trình Mat La B 119

Thưc h iện theo các bước của thu ậ t toán ta thu được:

• Bước 1: Ph ân tích A — Q'Q theo công thức (4.20) ta thu được:

711 712 713 Ì 2 r

0 722 723
= 0 1 -1

0 0 733 0 0 1

• Bước 2: Giải hệ Qly = b the o công thức (4.21) với

’l 2 1 " r

Q1- 0 1 - 1 , b= 1

0 0 1 1

ta th u được y = ( 1 , —1 , —l)t.

• Bước 3: Giải Qx = y theo công thức (4.22) ta được X — (6 . —2. - 1 )' là


nghiệm của hệ ban đầu.

2.3.4. Chư ơng trìn h MatL ab

function Q =c ho de c(A)
% Find the lower triangular matrix Q in Cholesky
% decomposition A=QAtQ
% Input: A is (often) positive definite and symmetric
% Output: Q
n=size(A,1);
Q=zeros(n,n);
for i=l:n
for j=i:n
if (j==l)
S=A(i,i);
else
S=A(i,j)-Q (1: i-1,i)'* Q(1:i-1,j);
end
if j>i
Q(i, j)=s/Q(i, i) ;
120 Chương 4. Phương pháp số trong đại số tuyến tính

else
Q(i, i)=sqrt (s);
end
end
end

function y=uptriag(Q,b)
% This function solves the upper triangular system Q Aty=t
% Input: upper triangular matrix Q; vector b
% Output: solution y of above system
n=size(Q,1);
y=zeros(n, 1 );
y (1)= b (1)/Q (1,1);
for i= 2 :n
s=b(i)-Q ( 1 : i- 1 ,i) ' *y (1 :i-1 );
y(i)=s/Q (i,i);
end
end

function x=lowtriag(Q,y)
% This function solves the lower triangular system Qx=y
% Input: lower triangular matrix Q; vector y
% Output: solution x of above system
n=size (Q,1);
x=zeros (n,1 );
x (n) =y (n) /Q (n, n) ;
for i=n-l:-1 : 1
s=y(i)-Q(i,i+l:n)*x(i+l:n);
x (i)=s/Q(i,i);
end
end
2. Phương pháp giải đúng và chương trình Mat L ab 121

2.5 Cô ng thức tru y đuổi giải hộ có m a trận d ạn g


ba đường chéo
Xét hê phương trìn h dang:

X'0 - m \ X \ = Hị

' ữịXị-1 - CịXị + bịXi+1 = i= \,N - ỉ (4.23)


—7/l2-t’N - l + XN = Ơ2 -

tron g đó:

a, > 0, bị > 0, Cị > a, + bị, i — 1, N —1


(4.24)
0< ĩ U ị <1; 0< /7?2 < 1; m\ + m 2 < 2.

2.4.1. C ôn g thức tru y đuổ i từ phải

Tìm nghiêm của hê (4.23) trong dạng

Xi = c*j+ia.'i+ i + Pi+I, i = N — 1. Ar —2 , . . . , 1,0, (4.25)

trong dó f t j , 0, là các hệ số cần xác định.


B ằng cách th ay (4.25) vào (4.23) và sử dung các điều kiệ n (4.24), ta được
công thứ c tín h nh ư dưới đây.
Đ ăt n-Ị = 771-1ĩ P\ ~ n \ tính

Oi+1 = ---- —---- : fti+i = n' 7= l , N - 1. (4.26)


Cị - a,a, c, - n,a,

7)2 + rn2 + Pn
XN — — ——— ;
xi — ơti+\Xi+i + 0i+i, i = N — 1, N — 2 , . . . , 1,0. (4 .2 7 )

Tóm lai, xuất phát từ 01,^1 tính rv1+i,/^1+i theo công thức (4.26). Sau đó,
tính X i (ì = N, N - 1 , __ 1.0) theo công thức (4.27). Quá trình tính theo
các công thức (4.26), (4.27) goi là công thức truy đuổi phải (vì các nghiêm
Xi đươc tính theo thứ tư từ phải qua trái).
122 Chương 4. Phương pháp số trong đại số tuyến tính

2.4.2. C ông thứ c tru y đuổi từ trái

Tìm nghiệm của hệ (4.23) trong dạng:

X,+1 = & + iX i + //,+!■ (4.28)

Khi đó ta có công thức tính:

= ™2\ Vn = n2;
_ (lị ' ft' _ ^ihi+1 T fi = N — l . N - 2 , .... 1.0:(4.29)
íi Cị íi+l^i Ci Ẹi-ị-lbi
ni 4- m i/ii
3-0 “T
1 - m ^i
£ !
X'j+ 1 = €i+iXi + Tìi+1, * = 0, 1, . . . , yv —1. (4.30)

Quá trình tìm nghiệm xuất phát từ :r0, gọi là công thức truy đuổi trái
(tính dần từ trái sang phải).

2.6 Chư ơng trình Ma t L ab

function x=forward_pursu in g(n,m,A,B,C,F)


% Solves a three diagonals system by using the
% forward pursuing method
% Input: n,m in R^2; A,B,C,F in R A{N-1}
% Output: X in R"(N+1}
x=zeros(N+l,1);
alpha = zeros (N+ l,1);
alpha (1 ) = m (1 );
beta = zeros (N+l,1);
beta (1 ) = n (1 );
for i = 1: N
alpha(i + l) = B(i)/ (C(i)-A(i)*alpha (i));
beta (i+ 1) = (A(i)*beta(i)+F(i)) / (C(i)-A(i)*alpha(i))
end
X (N+l) = (n(2)+ m (2)*beta(N+l))/(1 - m (2)*alpha(N +1));
for i = N :-1 : 1
x(i) = alpha (i+ 1 )*x (i+ 1 )+b eta(i+ 1 );
3. Phương pháp lặp đơn 123

end
end

Ví dụ 4.4. Áp du ng chương trình MatLab giải hệ

— 2xo + Xj = —1

' Xj_i - 'ẰXị + ,r1+i = -1. i = 1 ,9

X'9 — 2xio = —1

ta thu đươc nghiêm Xi = 1, i = 1.10.


C h ú ý 4.4. Ta có th ể áp dụn g đồng thòi cà hai công thứ c tru y đuổi phải,
trái rồi lấy nghiêm là trung bình công của chúng để đat được đô chính
xác cao hơn (do sai số quy tròn).
Các phương pháp giải hè đai số tuyến tính trong §2'là các phương pháp
giải đúng. Song kết quả vẫn có thể là gần đúng vì gảp sai số tính toán
sinh ra do sự quy trò n số tron g các phép tính.

§3. P hương pháp lặp đơ n

3.1 Chuẩn củ a ma trận và sự hôi tụ củ a dãy ma trận


Dinh nghĩa 4.1. Chuẩn của ma tràn A — Ị«ij]r x 6 RmX7ỉ ký hiệu bởi
11-4II là số thưc không âm thỏa mãn các điều kiên sau:

1. II,4II > 0, dấu xảy ra khi và chi khi .4 =- 0 (ma trận không);
2. \\kA\\ = |jb| \\A\\, fc-const;

3. ||4 + tf|| < IMII + ||fl||.


Một số ch uẩ n m a tr ậ n thưò ng đươc sử dung:

II4 II(00) = max Y , |n»j| <theo hàng);


m
||/ 1 ||(1) = m a x ^ |a ,j | (theo cột); (4.31)
nj=i
r m n_ 1 >/3
(2) Ẽ Ẻ K'ỉ (chuẩn Euclide).
i= 1 J=l
124 Chương 4. Phương pháp số trong đại số tuyến tnh

Dễ dàng kiểm tra ba dạng chuẩn trên thỏa mãn các điều kiện về chuẩn,
đồng thời

A.B\\ < \\A\\.\\B\\,


M I < \\A\\k ■

Xét trưòng hợp khi n = 1, ta có vector Amxi = X = (xi,x2, Xr „)' e RT"


và ta cũng có các chuẩn của vector X như sau:

m a x |.7
I<i<m
j| (clxuẩn cưc đai)
^(°°) <i<m
rn
®||(1) = |z»| (chuẩn tu y ệt đối) (4.32)
j=i
rn 1 1/2

^ ()=
1 11 2 ỂN
.¿=1
(chuẩn Euclide)

đồng thòi ta cũng có:

IM*II(P) < IMII(p) ■IMI(p). p = 0 0 ,1 ,2 .

Dãy ma trận A ^
Đ ị n h n g h ĩ a 4 .2 . . *= l.m; j = l . n j _
được gọi là hội tụ tới ma trận A — [ojj] x và ký hiệu là Ịim /l(t) — A, nếu

lim a\k^ — a,j Vi,j (hôi tu theo dãy ph ần từ)

hoặc

\\A^-A\ 0 khi Ả: —» oc (p — 00, 1 , 2 ) (hội tụ theo chuẩn)


(p)

Từ đây về sau ta sử dụng sự hội tụ của dãy ma trận /l(t) tới A theo nghĩa
hội tu theo c hu ẩn (hôi tu theo ch uẩn hay theo ph ần tử là tương đương).
Trưòn g hơp n = 1 ta có vecto r cột

1 — X — ( x j , x 2, • • • ) x m)

và cũng có khái niệm về sự hội tụ của dãy vector như dưới đây.
3. Phương pháp lặp đơn 125

Đ ịnh n g h ĩa 4.3. Dãy vector x(k) — (r ịk\x ỉ2k\ .. . , xịk)) được gọi là hội tụ
tói vector X — (xi, x 2 , . . . , xm)‘ khi Ả- —>oc và ký hiêu lim x (kì — X nếu
k—>oo
lim — X, Vi = 1. m
k-Võo
hoặc
||.T^
II
—.r||ll(p) —>• (} khi Ả: —>oc,’ p1 — 00, 1 , 2 .

3.2 Phương pháp lặp đơn (lăp cổ điển)


3-2.1. Nội dung phưdng pháp

Xét hệ (4.3). Viết lại hệ trên dưới dạng:

X= ơx + p, (4.33)
trong đó r> là m a trâ n vuông cấp n. Hê dang (4.3) luôn có thể viết đươc
dưới dạn g (4.33), ch ẳng han:

Ax + X—bx + X= > X= (/ + A )x —b,


trong dó / là ma trận đơn vị và í* = / + .4: p = —b.
Chọ n xấp xi đầ u bất kỳ x-(0) — ....... . Quá trình lặp đươc
tính theo công thức:

Tw = n x (k~l) + ¡ỉ, k — 1,2,... (4.34)


Vấn đề đặt ra là với điều kiên nào thì quá trình lăp (4.34) hội tụ tỏi
nghiêm đúng X* của hệ (4.3) hoặc (4.33). Ta công nhận kèt quả sau (xem
chứng m inh chi tiết tron g tài liêu tham khảo).

3.2.2. Đ iều kiên hô i tu củ a quá trình lặp

Đinh lý 4.1. N ếu m ột chuẩn nào dó CL tia trận a th ỏa m ãn diều kiện

IMI(p) < 9 (p = . , ),
00 1 2 (4.35)
trong đó 0 < <ì < 1 , thì hệ (4.33) có nghiêm duy nh ấ t X* và dãy vectorx
dược tính theo công thứ c lặp (4.34) sẽ hôi tụ tới X* th eo chuẩn tư ơng ứng,
tức là
lịa:^ —X'*||ll(p) —» 0 khi k —>3C (»
II ^
= , ,’ ).'
00 1 2
126 Chương 4. Phương pháp số trong đại số tuyến tính

3.2.3. Đ án h giá sa i số

Khi tính toán thì quá t rìn h lặp (4.34) không th ể kéo dài ra vô han m à
phải dừng ỏ bước th ứ k. nào đó ta được x(fc) « X*. S ai số được đcánh giá
theo công thức

||x(fc)- x i < —^ - | | x (fc)- x (fc~1)|l . p = oc. 1.2 (4.36)


11 II(p) 1 — </ II II(p)

||x (fc) - x*|| < —^— ||x(1) - x (0)|| p = 00, 1 ,2 . (4 .37 )


II ll(p) 1 — rj II ll(p)

Để sai số giữa nghiệm đúng X* và nghiệm gần đúng x (fc) nhỏ hơn £ > 0

cho trước thì từ (4.36) ta suy ra

||x(fc) - x(*-1)|
| < (' ì ~ qK = s. (4.38)
II II (p ) q
N hư vậy, khi cài đ ặt trê n máy, ta so sán h độ lệ ch giữa hai p hần tử lặp
liên tiếp, nếu thỏa mãn (4.38) thì dừng máy. Còn theo (4.37) ta sẽ có số
phép lặp cần th iết phải th ực hiện đê đ ạt được sai số nhỏ hon c. số phép
lặp k cần thỏa mãn:
k < ---- 1 1 - Ì Ị i —
q ll^)-.r(°)||(p)’
hay

fc a l0g" p ™ - Ẩ ll,, , =J'


Khi đó chọn k — ỊJ] + 1 .
Ví d ụ 4.5. Bàng phương phá p làp đơn tìm nghiêm gần đún g của hê

4.Ti 4" 0.24^2 —0.08X3 = 8

0.09xi 4” 3x*2 —0.15x3 = 9


0.04xi —0.08x2 + 4x 3 = 20

sao cho đạt sai số tuyệt đối không vượt quá 0.02 .
G iả i:

Viết lại hệ trê n trong d ang X= ax + /ỡ, trong đó:


0 -0.06 0.02 2
a = -0.03 0 0.05 ; 0 = 3
- 0.01 0.02 0 5
3. Phương pháp lặp đơn 127

Ta có:
11r>11oo = max {0.08: 0.08; 0.03} = 0.08 < 1.

Chọn xấp xỉ đầu £(0) = (0, 0, 0)', suy ra .r(1) = (2,3. 5)'.
Số phép lặp cần thiết:
, , (1 - 0.08) X 0.02 ,
k - log0°8 | ị ^ _ ^ ( 0)|| = logo.08 0.00368 = 2.2190.

Vậy chọn k = [2.2190] + 1 —3.


Áp dun g công thức lặp ta th u được:

x (2) = (1.92; 3.19; 5.05)' ;


,x(3) = (1.9094; 3.1944; 5.0446)'.

Vậy nếu lấy X* « x (3) th ì ta có sai số II||.r* - ;ỉ:(3)|lloo


| < 0 .02 .

3.2.4. C h ư ơ n g t r ì n h M a tL ab

function [X,numites]=jacobi(A,B,X0,tol, maxl)


% Input: _ A is an nxn strictly diagonally dominant matrix
% _ B is an nxl matrix
“ _ xo is an nxl matrix: the initial guess
% _ tol is the tolerance for X
% _ maxi is the maximum of number of iteration
% Output: _ X is the jacobi approximation to the solution
% _ numites is number of iterations
if nargin<5
maxl=100;
end
if nargin<4
tol=le-5;
end
n=length(B);
X=X0; numites=0;
for k=l:maxi
for i=l:n
128 Chương 4. Phương pháp số trong đại số tuyến tinh

X( i) = (B ( i ) -A ( i , [ l : i - l i +1 : n ] ) . . .
*X0 ( [1 : i - 1 i + l : n ] ) ) / A ( i , i ) ;
end

err=abs(norm(X-XO)); relerr=err/(norm(X)+eps);
X0=X; numites=numites+l;
if (err<tol)II(relerr<tol)
break
end
end
end

§4. S ự K H Ô N G Ổ N Đ ỊN H C ỦA H Ệ Đ ẠI s ố
TUYẾN TÍNH

Trong hệ đại số tuyến tính , nếu trong quá trì n h khảo sá t thưc tế cho
ta các giá trị đúng của các hệ số của hệ (các phần tử của ma trân vế trái
A và cột vế phải b) thì ta có th ể áp d ụng được các phương p háp giải dứng
đã xét tron g §2. Tuy nh iên do tro ng thự c tế các số liệu thu dược nói chung
chi là gần đ úng tron g dạn g số thậ p phân, quy tròn nên chún g ta chỉ được
hệ Ăx — b. T ùy thuộc sự quy tròn mà sinh ra sự khác biệt đáng kể đối với
nghiệm tìm được, có trường hơp dẫn đến sự m âu th u ẫn đối VÓI thưc tiễn.
Sau dây ta nêu một số ví dụ dể thấy rõ điều này.

Ví dụ 4.6. Tìm nghiệm của hệ phương trìn h

lOx 1 -f" 7 x 2 8x 3 4" 7x 4 = 32.01


7x\ + 5 x 2 4~ 6x 3 “h 5x 4 = 22.99
8x 1 + 6x 2 + IO.T3 + 9x 4 = 32.99
7xi + 5X2 + 9.T3 + 10 .7:4 = 31.01

Khi giải hệ trên bằng phương pháp Gauss-Jordan ta thu được:

Xi = 1.50; a,’2 = 0.15; x3 = 1.19; Xi = 0.89.


4. Sư không ổn định của hệ đại số tuyến tính 129

Bây giờ ta tha y đổi vế ph ải của hệ theo thứ tự là:

32.1; 22.9; 32.9; 31.1.

Cũng giải bằng phương pháp trên ta đươc nghiệm:

*1 = 6; 3.2 = - 7.2: *3 = 2.9; *4 = - 0.1.

Còn nếu vế ph ải của hệ là 32; 23: 33; 31 th ì ngh iệm sẽ là *1 = *2 = 3.3 =


X i = 1.
N hư vậy, vế phải chỉ thay đổi chút ít đã là m cho nghiệ m thay đổi đáng
kể.

Ví dụ 4.7. Xét hệ phương trình:

23:1 + *2 =2
<
23,1 + 1.01*2 = 2 .0 1 .

Giải hê ta đươc *1 = 0.5; *2 = 1. Trong hê trên, thay đổi môt chút về hệ


số tron g ph ương trìn h thứ hai, ta thu được hê:

! 2* i + * 2 =2

2 .01*1 + *2 = 2.05

thì nghiệm sẽ là *1 = 5; *2 = - 8. Nghiêm này khác khá xa vói nghiệm


của hệ ban đầu.

Ví d ụ 4.8. Xét hệ phương trình

2*1 + *2 = 2
<
8*1 + 3.03*2 = 7.03

Giải hệ ta được *1 = 0.5; *2 = 1 . Thay đổi hệ trên bởi

Ị 2* 1 + *2 =2

[ 8*1 +3*2 = 7

và giải ta được 31 = 0.5; *2 = 1. Hai nghiệm của hai hệ là trùng nhau.


130 Chương 4. Phương pháp số trong đại số tuyến tính

N hư vậy, vấn đề đặt ra là, với điều kiện nào thì hê đại số tu yến tín h
Ax — h đươc thay bởi Ã.r — b mà nghiêm của hệ thay đổi không đáng kể.
Hệ có tính chất như vậy đươc goi là hệ ổn đinh tính, ngươc lai hê đươc
gọi là khôn g ổn định tính . N gười ta đã chứng m inh đươc rằn g, sư ổn đinh
của hệ đai số tuyến tính đươc đăc trưng bời số điều kiên của ma tràn A
cho bởi công thức:
cond(yl) = ||A ||. ||/ r 1||.

Nói chung, cond(/l) 1. Khi cond(yl) càng gần vói " 1 " thì hê đai số tuyến
tính càng ôn đinh tính.
Trong ba ví dụ trê n thì các hệ trong các ví dụ 4.6, 4.7 kh ông ôn đinh tính
còn ỏ ví du 4.8 hệ là ổn định tính, vấn đề ổn định tính là vấn đề khó, ỏ
đây chỉ đưa ra để bạn đọc suy ngẫm. Trong thưc tế thấy rằng: nếu các
hệ số của hệ quan sát được là giá trị đúng thì ta có thể sử dung phương
pháp giải đúng. Còn nếu hệ số của hệ đó có được do quy trò n số thì nên
áp dun g phương phá p lặp đơn.

§5. M a t r ậ n n g h ị c h đ ả o
VÀ CHƯƠNG TRÌNII MATLAIÌ

Khi giải hệ đại số tuyến tính (4.3), nếu det A Ạ 0 thì tồn tại A~l và
T = A~ỉh là nghiêm của hệ. Trong phần này ta trình bày môt số phương
pháp tìm m a trân nghịch đảo A~l .

5 .1 B ài toá n

Cho ma trận vuông A — Ịrtỹ-] , tìm m a trâ n 13 = [xujn sao cho

A.B = B. A — E, (4.39)

trong dó E là ma trậ n đơn vị cùng cấp n.


Ma trân B thỏa mãn (4.39) dươc gọi là ma trận nghich đảo của ma trân
A, ký hiệu B A~l. Đ iều kiên cần và đủ để tồn tại A~l là: ma trân vuông
A khôn g suy biến (det A Ỷ 0).
5. Ma trận nghịch đảo và chương trình MatLab 131

5.2 Phương pháp tìm A trong đại số tuyế n tính


Công thức tìm A~l đươc cho như sau:

/T' = - . ư l . (dot A / 0), (4.40)


dct A v
trong đó .í/1 là ma trận chuyển vi của ma trận sri —[Aij] với Aịj là phần
phụ đại số của phần tử a,j của ma trận .4, tức là A,J = ( - l),+JM , J , trong
đó M , J là định thức cấp I I - 1 có đươc từ ma trận /4 khi bớt hàng I và côt
J, Vi,j = ì,n.

Ta thấy, khối lương tính toán theo công thức (4.40) là quá lốn, cần khắc
phục.

5.3 Phương pháp Gauss-Jordan


Giả sử B — [.Tjj] . Từ (4.39) ta có:

«11 • au • (l\n «.'11 ■ • • l


X Ỵị 1 0 .. 0
«21 • «2j •
• ^211 «21 ■ • • %2n 0 1 0 .. 0

«,! ■ «ư • • ain «il • • xij ■ Xịn 0 ... 1 .. 0

«Il 1 (ln j ũnn «ni ■ ■ «Il J £ nTt 0 ... 0 .. 1


(4.;
Dặt
Xj = ( x lj , x Ĩ J , ■■. ,«„>)‘. J = 1,«

là các vector côt của ma trân fí và

Ej = (0 ... .,0. 1 ,0 ....... 0)', j = T7n


Ü)
là các cột của ma trận đơn vi E. Từ (4.41) ta được II hệ phương trình dang
ma trận:
AXj = Ej, j = T J i . (4.42)

ứng với mỗi i — 1. n, (4.42) là hê đại số tuyến tính có cùng ma trân hệ


số là A. Do giả thiết đct / 1 / 0 nên n hệ của (4.42) đều tồn tại duy nhất
132 Chương 4. Phương pháp số trong đại số tuyến tính

nghiệm là Xj (j - 1 , n), có th ể tìm được bằng phương p há p G au ss-Jo rda n


đã xét trong §2. Lai do n hệ của (4.42) có cùng ma trận hê số A nên ta
giải đồng thòi n hê bằng cách lập ma trâ n mỏ rông A = A\E và tiến h ành
các bưóc theo phương pháp Gauss-Jordan.

Chú ý 4.5. Q uá trì n h giải bao gồm việc giải đồng thời n hệ phương trình,
mỗi hệ có n ẩn (có cùng ma trận hệ số là A). Để được nghiệm là ma trậ n
A~l thì nên chọn ph ần tử giải qua mỗi bưốc là ph ần tử a|| trê n dường
chéo chính. Hơn th ế nữ a ta lại chọn = 1 (bằng cách chia dòng thứ
i đó cho a ị i ~ l ) ) . Chẳng hạn ngay bưóc một, phần tử «11 của ma trân A có

hai kh ả năn g xảy ra:

1 . «11 = 0 thì đổi chỗ hàn g một cho hàn g I nào đó có «il Ỷ 0 (' > 1 ) và
đánh số lại ta được an Ỷ 0.

2. Oii í 0. Ch ia tấ t cả hàn g đầu cho «11 và đánh số lai ta đươc «11 = 1 .


Ỏ các bước sau thì các phần tử «lí ' ' cũng được tiế n hà nh tươn g tư.

Ví dụ 4.9. Tìm ma trận nghịch đảo của ma trận sau theo phương pháp
Gauss-Jordan:

5Ü 107 36
25 54 20
31 66 21

Giải: Quá trìn h tính được mô tả trong bảng sau:


5. Ma trận nghịch đảo và chương trình Mat L ab 133

Bước A E Chú thích


50 107 36 1 0 0
à 25 54 20 0 1 0
31 66 21 0 0 1
1 2.14 0.72 0.02 0 0
Chia hàng đầu cho 50
2 (1) 0 0.50 2 -0.5 1 0
Các phần tử tính theo sơ đồ (4.15)
0 -0.34 -1.32 -0.62 0 1
1 0 -7.84 2.16 -4.28 0 Tính theo sơ đồ (4.15)
1 (2) 0 1 4 -1 2 0 Chia hàng thứ hai cùa A{1!cho 0.50
0 0 0.04 -0.96 0.68 1 Tính theo sơ đồ (4.15)
1 0 0 -186 129 196 Tính theo sơ đồ (4.15)
Ã(3) 0 1 0 95 -66 -100
0 0 1 -24 17 25 Chia hàng thứ ba của .4l2i cho 0.04

-186 129 196


Vây A-' = 95 -66 -100
-24 17 25

C h ư ơ n g t r ìn h M a t LAB

function X=GJInv(A)
% GJInv computes the inverse matrix of a square matrix A
% by using Gauss-Jordan method.
% Input: A is a square matrix
% Output: X is the inverse of the matrix A
n=size(A,1);
E=eye (n);
X=zeros(size(A));
for j=l:n
X (: ,j)= g a u s s _ j o r d a n ([A E (:,j ) ]);
end
end
134 Chương 4. Phương pháp số trong đại số tuyến tính

5.4 Trường hợp ma trận đối xứng. Ph ươ ng pháp


Cholesky

Giả sử A = ỊíXjj] là m a tr ậ n đối xứ ng («jj = (Iji V? Ạ j). Phân tích ma


trận A th àn h tích hai ma trâ n tam giác trên Q và tam giác dưới p (xem
§2). Do A đối xứng nên ta có phân tích A = PQ — Q'Q theo công thức
(4.20), từ đó ta suy ra

A~l = {QlQ r l = Q - l ( Q T l = (4.43)

Vậy, bài toán đặ t ra là từ m a trậ n

<711 <712 • •• <7ln


0 <722 ■■• <72.1

0 0 . • • Vnn

hãy tìm ma trân nghich đảo Q ì .


Giả sử

«11 «12 • « 1,1


«21 « 22 • «2,1
Q~l —

«nl «n2 • « nn

Từ đồng nhất thức Q.Q~' = E, ta CÓ:

Qn 712 ■ ■ 7 ln «11 «12 • • «ln 1 0 . . 0

0 722 • 72n «21 «22 • «2,1 0 1 . . 0


— (4.44)

0 0 . 7rm «nl «n2 • • «rin 0 0 . . 1


5. Mo trận nghịch đảo ưà chương trình Mat Lab 135

Sử dung tính chất bằng nhau của hai ma trận, từ (4.44) ta suy ra công
thức tính Q- ' như sau:
1
an — — , 7 —77, 77 —1 ,..., 2.1:

(\,j = 0 V? > j;
1
^TỈ-1.71 Ọĩì— 7
*7/1—1,n—1
«n-2,fc = ------- ----- X] Qn-2 jOtjk, k = n ~ 1,77, (j < Ả:); (4.45)
f/n-2,n-2 j=„_i
1 "
« 2,fc = £ < /2 jt tjfc , A. = 3 , 4 , . . . , 77 (.7 < A;);
922 j = 3
1 n
«I.fc = - — k = 2,3,. ..,77 u < k ) .
9n j=2

Như vậy, Ọ “1 là ma trận tam giác trên. Các phần tử của cỉưồng chéo
chính lược tính theo công thức a lt = — . 7 = 1.77, còn các ph ần tử p hía
9n
trê n đ tò n g chéo chín h đươc tính theo (4.45) từ dưới lên, t a có Q~l và theo
(4.43) ta có A~ l .

Ví d ụ 4.10. rrìm ma trân nghich đào của ma trận

1 2 1
,1 = 9 r, 1
1 1 3

Giải:

Từ ví lu 4.2 ta đã có phân tích A = Q'Q với

1 2 1

Q - 0 1 -1
0 0 1

Tìm 0 1 the o công thứ c (4.44) ta thu đươc:

1 -2 -3
1
o 0 1 1
136 Chương 4. Phương pháp số trong đại số tuyến tính

Khi đó:

14 -5 -3

A~ l = Q - ' i Q - ' Y = -5 9 1

-3 1 1

C h ư ơ n g tr ìn h M a t L ab

function B=chodecinv(A)
% Find the inverse of a matrix
% using the Cholesky decomposition
% Input: A is (often) positive definite and symmetric
% Output: B is the inverse matrix of A

n = size (A,1);
Q = chodec(A); % Find the lower matrix Q such that A=QAtQ
P = zeros (n,n); % P is the inverse matrix of Q

for i=l:n
P(i, i)=1/Q (i,i);
end
for i=n-l:-1:1
for j=i+l:n
P (i, j) =-Q (i,i + l:n)*P(i + l:n,j)/Q(i,i);
end
end
B=P*P';
6. Tri riêng, vector riêng của ma trận và chương trình M at L á B 137

§6. T r ị r i ê n g , v e c t o r r i ê n g c ủ a m a t r ậ n v à
CHƯƠNG TRÌNỈI MATLAB

6.1 Khái niệm về tri riêng và vector riên g


Cho ma trận A — [ajj]n vuông cấp II. Hãy tìm vector X € R n \ { 0 ) và số
A€ c thỏa m ãn điều kiện

A X = XX. (A - th am số). (4.46)

Số Athỏa mãn (4.46) được gọi là trị riêng, còn vector X Ỷ 0 gọi là vector
riêng của ma trận A ứng vói tri riêng A. Ý nghĩa của bài toán trên là
vector X Ỷ 0, nói chung các vector .4 X và X k hông tỷ lệ với nh au (không
đồng phương vói nhau), nhưng nếu có số Athỏa mãn (4.46) thì chúng tv
lệ với nh a u theo hệ số tỷ lệ là A. Trong giáo trìn h đại số ta đã b iết, từ
ohươn g trìn h (4.46) ta có:

( A - X E ) X = 0, (4.47)

trong đó E là m a tr â n đơn vị cùng cấp VÓI ma trậ n A. Để tồn tại X Ỷ V


thỏa mãn (4.47) thì điều kiện là:

dct (.4 - XE) = \A -X E \ = 0 (4 48)

Da thức P{X) \A —XE\ gọi là đa thức đặc trưng. Giải phương trình đa
thức (4.48) ta được các giá trị riêng của ma trận A. úng với mỗi A, giải
(4.47) ta được vector riêng tương ứng Tuy nhiên, số lương phép tính để
tìm đa thức đặc trưng là rất lớn khi n tăng. Để giảm khối lương tính
toán, ta xét một số phương pháp sẽ đươc trình bày sau đây.

6.2 Tri riên g và vector riêng của các ma trận


đồng dạng
Cho hai ma trậ n vuông cùng cấp A và B.
Định nghĩa 4.4. Ta nói hai ma trận A và B đồng dạng với nhau và ký
hiệu là A ~ B, nếu tồn tại ma trận T không su y b iến (det T ^ 0) sao cho

B = T~lAT.
138 Chương 4. Phương pháp số trong dạ i số tuyến tính

Từ giáo trình đại số tuyến tính, ta đã biết:

1. Neu X Ỷ V là môt vector riêng của ma tr ậ n A ứng với tri riên g Athì
mọi vector dạng cX (c —const) cũng là vector riêng ứng VỚI giá trị
riêng A đó.

2. Nếu A ~ B thì B ~ A.

3. Nếu A ~ R ị R ~ ờ thì A ~ c .

4. Nếu A ~ R thì A và B có cùng giá tri riêng và do đó chủng có cùng


đa thức đăc trưng .

N hư vậy, để tìm giá trị riêng của m a trậ n A, ta tìm ma trậ n đồng dang
vói nó m à đa thứ c đặc trưn g có th ể tìm được một cách dễ dàng.

6.3 Phư ơng pháp D an hilepski

Nôi dung của phương pháp này là biế n dổi m a trậ n về dang đồng dang
với ma trân p có đa thức đăc trư ng dễ tìm hơn.

6.3.1. Da thức đặc trưng của ma trận dạng "Phừ-rô-bd-niuyt"


(dạng P)

Ma trân "Phò-rô-bơ-niuyt” là ma trận có dạng:

p 1 Pl P3 • •• Pn-Ì Pn
1 0 0 . 0 0

0 1 0 . 0 0

0 0 n .. n 0

0 0 0 .. 1 0
6. Tri riêng, vector riêng của ma trận và chương trinh Mat L ab 1:ỉ 9

Sử dung khai triển theo côt và quy nap ta thu được đa thức đặc trưng
của m a trân trên:

P\ - A p2 P-.Ì ■ • pn-ì pn
1 -A 0 0 0

0 1 -A . 0 0
dcỉ{P - \E ) = det

0 0 0 . -A 0

0 0 0 1 -A
= ( - l) " ( A B - p 1AB- I - f t An- 2 --------- P n - x X - P n ) . (4.49)

6.3.2. Q u á t r ì n h b i ế n đ ổ i m a t r ậ n A v ề d ạ n g p

• Bước 1.
Đặt — An = [dị]’] = [ a , j ] . Vi. j = 1,71. Giả thiết Ỷ 0- Chọn

1 0 . 0 0

0 1 . 0 0

0 Ó) n i»
n u2 ■ •• 11 11,11-1

0 0 0 1

là ma trân thu được từ ma trận đơn vị E bằng cách thay h àng thứ
V - 1 bời hàng thứ TI của ma trân A\Ị\ Do det Mi 0 . ^ 1 „ / 0 nên

tồn tai Aíỹ 1 và

1 0 0

0 0 0

M -1
ọjl
7 ’)
'nĩL 'nl" , 'll.tl—1
140 Chương 4. Phương pháp số trong đại số tuyến tính

Tính A& = ta đươc:


C t
N

r „(2 ) „(2) „(2 ) n (2 ) c

a i l “ 12 « 1 ,7 1 - 2 “ 1 ,1 1 - 1 •

<2 ) „(2) „(2)


“n 2(2) (2)
f l
1 “ 22 « 2 ,7 1 - 2 “ 2 ,11— 1 “ 2,11
n

-4i2) (4.50)
„(2 ) (2)- 1 ,2 „(2) „(2 ) „(2 )
««í71- 1 ,1 «0 71 • « 71 —1 ,71—2 « 71 - 1 ,7 1 - 1 "' 71- 1,11
0 0 ... 0

• Bưóc 2. G iả thiế t „_2 Ỷ chọn

1 0 0 0 0

0 1 0 0 0

Mo
„(2) „(2 ) (2 ) (2 >
f l „(2 )
« 71- 1 ,1 « 71- 1 ,2 • « 71- 1 ,7 1 - 2 « 71- 1 ,7 1 - 1 '^ n —1,71
0 0 0 1 0

0 0 0 0 1

là ma tr ận thu được từ m a trận đơn vị E bằn g cách thay hàng thứ


n - 2 bởi hàng th ứ n — 1 của m a trận A^K Do det M 2 = /0
nên tồn tại M 2_1 và

1 0 0 0 0
0 1 0 0 0

M ĩ' = fl(2)
«71-1,1
„(2)
«71-1,2 1 „(2)
«71-1,11-1
„(2)
^71-1,71
... (2)
a (2)
^ n —1 ,7 1 -2
fl(2)
^ n - l ,n - 2 «71 1, n - 2
„(2)
^ n - 1 ,71 2
a (2)
«71 1,71-2
0 0 0 1 0
0 0 0 0 1

Tiếp theo, tính >4^ = M 2 i4 ^ M 2 1 ta được:


(3 ) „(3) „(3)
«ĩ? “ 12 «1,71-2 «1,71-1 « l 3n
(3 ) „(3) a (3)
4 ? «22 «2,71-2 «2,71-1

/1(3) _ (4.51)
J ln (3) (3 ) „(3)’ i3 )
„(3)
«71-2,1 «7 1-2 ,2 • •• «11-2,71-2 ^ n —2,71 —1 «7 1-2 ,7.

0 0 1 0 0
0 0 0 1 0
6. Tri riêng, vector riêng của ma trận và chương trình Mat L ab 141

• Quá trình trên được thưc hiện và sau n —1 bước ta thu được ma
trân dang P:
r = 4") = =

= (Mn-ỵMn 2 .. . A/2A/i ) yl£l)(A'f1~ 1M2~1 . . . A c y c ,) .


(4.52)
Đặt
Mn_,M„_2 ...A /2A/1 = A/,
thì ta có:

A/-1= (M b_,Mb_2...A/aA/O“1= A/r‘A/2“1...


Thay vào (4.52) ta thu đươc:
p = /lW = A/.A^A/ 1 = M À nM ~ \ (4.53)

tức là p ~ An.
Số lương phép tính để biến đổi từ đến p cỡ N = n3 —n2 phép tính
nhân và chia.

Trong các bưóc tính trên, ta luôn già thiết 1 Ỷ 0. nếu —0 thì
quá trình trên không thưc hiện đươc. Chẳng hạn sau một bưóc, ta đươc
/lị2) ~ /lị,1) và có flj2ij n _ 2 = 0. Trường hơp này có hai khả năng xay ra.
1. Moi phần tử aị2ỵ ị k = 0 v/c < n —2 (moi phần tử của hàng n —1, đứng
trước u[2) Jn đều bằng "0"). Khi đó đa thức đặc trưng của
2 sẽ là:

det(A<,2) - XE) =
«n - A „(2) „(2) J2)
«12 «1,0-2 «1,71-1 «i,n
«M - A n(2) „(2) „(2)
«ỉ? «2,11-2 «2,71-1 «2,71

„(2) J2)
n{2)
«n-2,1 «11-2.2 ••• „(2)
«11—2,71—2 - A
A «n-2.11-1
fl(2) «71-2,71
„(2) J2)
0 0 0 « - ,n-l - ^
11
A
1 **n—l,n
0 0 0 1 -A
[-A - A) - «n—l,nj det ( ¿ S a - A /ĩ) , (4.54)

trong đó /1*,2)2 = Ịu,(2)j Ví,j = l.n. - 2 và E là ma trận đơn vi cấp


77 —2, nghĩa là chỉ cần tìm đa thức đặc trưng của ma trân cấp n —2.
142 Chương 4. Phương pháp số trong dại số tuyến tính

2. Tồn tại ph ần tử a^l ị k / 0. k < n —2. Gọi c là ma trân thu dươc


từ m a trậ n đơn vị cấp n bằn g cách đổi chỗ cột th ứ k và cột thứ II - 2
cho nhau:
1 .. . 0 ... 0 0 0

0 .. . 0 ... 1 0 0
c =
0 .. . 1 ... 0 0 0
0 .'. . 0 ... 0 1 0
0 .. . 0 ... 0 0 1

Dễ thấy dctC = ±1 c ~ l = c . Tính à •12) = C A P c thì A&C


chính là kết quả của việc đổi chỗ hai cột thứ k và thứ n - 2 cho
nhau. Còn c ~ l A ^ c = C A ^ C là phép đổi hà ng th ứ k và thứ n —2
cho nhau. Với An[ì có ph ần tử õ^21 ! n_2 7^ 0. Quá trìn h tiếp tục như
trên ta được đa thức đặc trưng dạng (4.49). Giải phương trình đa
thứ c (xem chươn g 2) ta t h u đươc các tr ị riên g A.

6 .3 .3 . V e c t o r r i ê n g c ủ a m a t r â n A n ứ n g v ỏ i tr i r i ê n g A

Giả sử Y là vector riêng ứng VỚI trị riêng A của ma trân p, tức là
P Y = AV. Từ (4.53) ta có p ~ An, do đó Acũng là tri riêng của ma trân
An, tức là
M A nM ~ 'Y = AV =► AnM ~ 'Y = AA /-'y.

Đặt X = M ~lY = (A/„_iMn_2 ... M2M i Ỵ 1 Y hay

X = { M ĩ 1M ỉ 1... M ~ \ ) Y (4.55)

ta được:
A nx = XX.

Vậy X xác định theo (4.55) là vector riên g ứng với tr ị riên g A của m a trâ n
An.

Ta tìm vector riêng Y ứ ng vói trị riêng A của ma trậ n p. Từ PY — AY với


6. Tri riêng, vector riêng của ma trận và chương trình Mat L ab 14:ỉ

Y - 0 / 1 ,// 2 . ■• .,yn)1 ta có:

pi P2 Pn 1 Pn
U\ V\
1 0 0 0
1) 2 ì) 2
0 1 0 0 =A

Vn Vn
0 0 1 0

hay

P 1Ỉ/I+P 2Ỉ/2 + -----tPnỉ/n = A■yì


V\ = Aị/2
U2 = Aỉ/3
(4.56)
Vn—2 Aj/„_1

Vn—l = A j/n .

Do các vector riêng sai khác nh au hằ ng số nh ân nên ta có th ể chọn yn - 1 .


Từ (4.56) ta có:
ỵ = (An -\ An~2, . . . , A, 1)'\
Theo (4.55) ta th u đươc vector riêng A' ứng vói trị riên g A của m a trậ n A.

2 1 0
Ví du 4.11. Tìm tri riêng và vector riêng cùa ma trâ n A 1 3 1
0 1 2
Giải:

A = ylh). (1) — « 3 2 = 1 ^ 0 nên chon


Do n 12
ì 0 o" 1 0 0'
Mi - 0 1 2 => A/r1 = 0 1 -2
0 0 1 0 0 1
Từ đó ta có:
2 1 __o
.4(2 _ M l A (ỉ)M ị ì = 1 5 -5
0 1 0
144 Chương 4. Phương pháp số trong đại số tuyến tính

Bước 2: Do a^2 — 1 ^ 0 nên ta chọn

1 5 -5 1 -5 5
1_
M* = 0 1 0 => Mĩ 0 1 0
0 0 1 0 0 1

Từ đó ta có:
7 - -14 8
/ 1(3) = M2A w M ĩ l = 1 0 0
0 1 0

Vây

p 3 (A) = (-1 )3 (A3 - 7A2 + 14A - 8 ) = 0

=>• Ai = 4; A2 = 2; và A3 = 1.

ứ n g vói giá tr ị riên g Ai = 4, theo công thức (4.55) ta có vector


riêng tường ứng:

ì 0 0‘ ì -5 5 V Y
Xx = 0 1 -2 0 1 0 4 — 9

0 0 1 0 0 1 1 1

- Vói A'2 = 2 thì

ì 0 0" ì -5 5 ‘4 ’- Y

x2- { M ỹ ' M ỉ ' )Y 2 - 0 1 -2 0 1 0 2 — 0


0 0 1 0 0 1 1 1

' 2
ệ c i
/H
o í

ì 0 0’ ì -5 5 Y ’ 1 "
x 3 - ( M r 1M2- 1)y 3 = 0 1 _2 0 1 0 1 = -1
0 0 1 0 0 1 1 1

C h ư ơ n g tr ìn h M a t L ab

Bạn đọc hãỵ dựa theo vỉ dụ để lập chương trình MatLab


cho phần nàỵ.
6. Trị riêng, vector riêng của ma trận và chương trình Mat L ab 145

6.4 P hư ớn g phá p Krưlôp A.N.

6 .4 .1 . N ộ i d u n g p h ư ơ n g p h á p

Dưa vào đồng nhất thức Hamilton - Kelly. Giả sử ma trận A có đa


thức đăc trưn g

P{ A) = dct (A - XE) = (-l)"ỊAn t bị\n~l + • • • + bn-1A + bnl (4.57)

trong đó h, (? — 1 , ri) là các hệ số cần tìm.


Ta đả biết (4.57) là đa thức đặc trưn g của ma trậ n A thì ma trận A đồng
thòi thỏa m ãn phương trình ma trận:

P(A) = 4" + M "- 1 + •• • + 6„-ii4 + bnE = 0 (4.58)

trong đó E l à ma trận đơn VỊ cùng cẩp vòi A. Phương trình (4.58) được
gọi là đồng nhất thức Hamilton - Kelly.
Cho n vector bấ t kỳ y (0) = (vị0),ĩ/20)__ , yl0)) và n h â n (về bên ph ải) hai
vế của (4.58) với Y [ữ) ta có:

AnY w + + •• • + bn- ì A Y {0) + bnY {0) = 0. (4.59)

Đ ặt
AkY (0) = ỵ(*,) k = Yjt' (4.60)

tha y vào (4.59) ta thu được:

Y in) + b i Y {n' l) + iK(1) + bnY {0) = 0

hay:
h Y ^ - V + • • • + òn_ jy (1) + bnY {0) = - y (n). (4.61)
Đây là hệ đai số tuy ến tính , n phương trìn h , TIẩ n bị (i = 1, n) có dạng ma
trân:
(n-l) (n-2) (0)1 bị
V1 !Ẩ .. ứ" y\ y\(n)
(n-1) (0)
V2 V?-* .. yị]) ?/2 bi
= —
Àn)

y 'r 2’ ■ yí°[ bn y£ \
Giải hệ tr ê n ta th u được /i], ¿»2 , . . . , bn là hê số của đa thức đặc trưng của
ma trận A (dạng (4.57)).
146 Chương 4. Phương pháp số trong đại số tuyến tính

6.4.2. T hu ật toán

Chọn vector Y'(0) Ỷ V bất kỳ và tính dăy {y(n)} theo công thức (4.60):
y(! ) —/Ị y i0)- y(2) —,4y ( 0 — yị2y ( 0).
y(n) _ 4 y(n-l) _ _ yjny(0)

Quá trìn h tính được mô tả trên bảng tính như sau (bản g 4.3):
yo y(i) y ( 2) y(n)
4 y ( 0) 4y(0) A y 0 > —^ 4 y(n-i)
Bả ng 4.3
Từ đó ta có hệ (4.61), giải hệ này ta thu được bi i —T~n.
Chú ý 4.6. Khi giải hệ (4.61), nếu hệ có nghiêm duy nhất thì chủng
chính là hê số của đa thức đăc trưng của ma trân A. Trong trường hơp
hệ kh ôn g có ng hiệm duy n h ấ t (do đươc chọn b ất kỳ), ta chon lai y (0)
sao cho hê trên có nghiệm duy nh ất.

6.4.3. V ector riê n g ứn g với trị riên g A

Giả sử giải phươ ng trì n h đa thứ c (4.57) ta dược các tri riên g A, (i
l,n) nào đó. Khi đó, vector riêng X w ứng với tri riêng A, được tìm theo
còng thức:
x ơ) = y(n-D + quy(n- 2) + ^. yí n- 3) + . . . + 9fl_lfiy<°>, (i = TTi) (4.63)

trong dó ( Ị j i , j = ĩ , TI —T, / = Ĩ7n chính là hệ số của đa thức thương khi


chia P( A) cho (A —Ai), (í = l,n), có th ể dễ d àng tìm đươc theo sơ dồ
Horner.
Chú ý 4.7. Vector riêng đươc tín h theo công thức (4.63) chỉ áp du ng
khi tr ị riên g A, là số thực, ở đây, ta kh ôn g xét trư ờn g hơ p A, là số phức.
1 2 3 4
2 1 2 3
Ví d ụ 4.12. Tìm đa thức đặc trưn g của ma trậ n A —
3 2 1 2
4 3 2 1
Giải:
Theo b ản g 4.3 ta có:
7 Tìm
. gần đúng trị riêng và vector riêng 147

A Y° ỵ(0 = 4 y(0 ) ỵ(2) = a y [ì) I


I I
I
o
t

12 3 4 1 1 30 208 2108
2 12 3 0 2 22 178 1704
3 2 12 0 3 18 192 1656
4 32 1 0 4 20 242 1992
Từ bảng tr ên ta được hệ phương trình

208 30 1 r V 2108
178 22 2 0 62 1704
192 18 3 0 ^3 1656
242 20 4 0 p4. 1992

Giải hệ trên ta thu được b\ — —4, ỉ>2 = -40, 63 = —56, 64 — —20 và từ đó


ta có đa thức đặc trưng

p( A) = det í A - XE) = A4 - 4A3 - 40A2 - 56A - 20 .

Chương trình M a t L ab

Bạn đọc hãỵ dựa theo ví dụ để lập chương trình MatLab


cho phần này.

§7. T ì m g ầ n đ ú n g t r ị r i ê n g v à v e c t o r r i ê n g

Hai phương pháp dã nêu trong §6 là các phương pháp tìm dứng Song
ch úng chỉ là gầ n đú ng do sự quy tròn số sinh ra (sai số tín h toán). Trong
tiết này, ta nêu một phương pháp gần đúng để tìm trị riêng trội (thực
đơn hoặc bội) mà không cần tìm đa thức đặc trưng.

7.1 Nội d u n g phươ ng pháp tìm trị riên g trội


Giả sử ma trận A có đủ n trị riêng thực đơn, bội, hoặc phức (có cặp
phức liên hợp) và có đủ n vecto r riê ng {A'fc}. k = 1,71 độc lập tuyến tính.
Chon vector Y là tổ hợp tuyế n tín h bất ky của chung:

Y = j ^ c kX k, Cị ỷ 0- (4.64)
fc=i
148 Chương 4. Phương pháp số trong đại số tuyến tính

Do AXk = xkx k nên


n n

AY = Ỵ] ckAXk —Ỵ2 CfcAfcX*;


k=l k= 1

A2Y = A( AY) = ¿ 2 c k\ kA Xk = tckXịXk, (4.65)


k= 1 fc=l

AmY = A( Am- lY ) = 't< 'kX ? X k-í


k=\

Ta đi tìm trị riêng thực trội, tức là trị riêng có trị tuyệt đối lớn nhất, có
thể xảy ra các trường hơp như dưói đây.

7 .1 .1 . T r ư ờ n g h ợ p t r i r i ê n g th ự c t r ộ i b ộ i m ô t

Giả sử trị riêng của ma trận A thỏa mãn điều kiên

. [Al | > [ A 2J>lA. 1 | > , . . > | A nỊ. (4.66)

Từ hệ (4.65) (vói Ci Ỷ 0) ta có:

AmY = c l \ ? X l + Ề ck\ ? x k = XT Cị X i + Ế Ckiy-rXk


k=2 L k=2 /'1

Do giả th iế t (4.66), kh i rn -> oo th ì ( — —> 0 {k — 2, n) và khi đó ta có:


Ai
AmY -> \ vìlc1X l (ĩii -> oo),

hay khi m đủ lớn thì AmY 5S A^CiXi, đồng thòi

Am+lY w \ ? +lC iX i
= A, (A^dXx) « Ax/lmy. (4.67)

Từ đó ta có:
(4.68)
Al* l k v j = 1’n-
Từ (4.67) ta lại có:
A (AmY) ta XiAmY.
Điều này chứng tỏ Ai là trị riêng của ma trận A, vector riêng tương ứng
là Xi = AmY hoặc X\ = Am+ÌY.
7. Tìm gần đúng trị riêng và vector riêng 149

Từ (4.68) ta thấy, vói vector Y bất kỳ có c.\ ệ- 0, ta tính


AY, A2Y , . . . . AmY, Am+ÌY. Khi hai phép tính liên tiếp có xu hướng tỷ lệ
vói nhau thì rn đươc goi là đủ lón.

7.1.2. T rườ ng hơp tri riên g thự c trôi bội r

Tro ng trườ ng hợp này, giả sử

A i — A2 = • •• = A r ;

|Ar|> |Ar+i| > • • • > |A„| (4.69)


Từ (4.65) ta có:

AmY = \ ? ị i r.kX k + Ề CjXJ'Xj


k=\ j=r+l

=K ¿ r txt + Ề c,ărx, , rk ^ 0, k = l,n.


k= 1 j= T + l A1

Bằn g cách lập lu ận nh ư trên , vói rn đủ lỏn thì

Am+lY as A ,/ T y

hay A ( AmY ) as Aị (/lmy). Từ đó suy ra


(.Am+1Y ), g
Vj= 1,n' (4'70)
N hư vậy trong quá trìn h tín h AmY và Am+ÌY, n ếu thấ y tỷ số (4.70) xấp xi
bằng nhau, nghĩa là m đủ lớn và A| xác định theo công thức (4.70) trùng
vói (4.68). Điều này có nghĩa là tỷ số (4.68) hoặc (4.70) chi xác định đươc
Ai thưc trôi mà không biết được Ai đơn hay bôi.
Vector riên g ứng với trị riên g Alt như trê n ta có th ể lấy là X\ « AmY hoăc
Xì ~ Am+lY; nh ưn g nó chi là một vector riêng tron g số r v ector riên g đôc
lâp tuyến tính ứng vỏi trị riêng Aj.

7.1.3. Trư ờn g hớp trị riên g trôi (thực đơn) đố i dấu nh au

Xét trưò ng hơp

Ai — —A2; (4.71)
|Ai I = IA2 1> IA31> • • • > |An| . (4.72)
150 Chương 4. Phương pháp số trong đại số tuyến tính

Trong trưòng hơp này ta có:

AY = Ál (c1X 1 - c 3X 2) + Ề c j Ă j X j (ci.C'2 Ỷ 0);


j= 3

A2V = A( AY) = Xi {clA X l - C2A X 2) + £ r,-Aj/tÀ'j


j= 3

— Aj —C2X 2) + ^ Cj\2Xj\ (4.73)


j= 3

/ t 2/c 'y = A ị *’ 1 ( c' ị A 1 — c2 A^ ) + y : CjA2fc l Aj!


.7=3

Al2fcr = A f ( c 1X 1+ c2X2) + è c j A fX j .
j= 3

Lập luận tương tự n hư trên , khi k đủ lớn ta th u được

A2k~lY « A?*-1^ ! * ! - C 2X2);


-42fcy « A f (ciX i +C2X2).

Từ đó ta có

A2k+2Y » Af+2 (rjX] + r2X 2)= A?A2* {r.ì x l + r2X 2)


« X\A2kY. (4.74)

Từ (4.74) ta suy ra
(4.75)
Aĩ ~ (A2kY) ’ J~ '
Tro ng công thức (4.75) cũng có thể lấy:

A1 ~ ị 4'2/t-iy) ’ "7 n' (4.76)

N hư vây, tro n g quá trìn h tín h , với hai lũy th ừ a liên tiếp n h au , các tỷ số
nói chung không có xu hướng tỷ lệ vói nhau mà hai lũy thừa cùng chẵn
(hoặc cùng lẻ) tỷ lệ vói nhau thì ta xác định đươc A2 th eo công thứ c (4.75)
hoặc (4.76). Từ đó ta thu được ±Ai.
Các vector riêng X\, x 2 ứng vói trị riêng ±Ai được xác định như sau:
Từ các xấp xỉ

A2k~xY « A f - 1 {Cl x l - c 2x 2);


A2kY « A?fc{Cl x l +C2X2),
7. Tìm gần đúng trị riêng và vector riêng 151

suy ra
A2kY + ẰiA2k- 1V « Af 2Ơ,X1. (4.77)

M àt khác, ta lại có

A(A2kY + A1 /t 2fc~ 1r ) w Af 2CV1X),

hay

A(A2kY + A1 /l 2fc“ 1 X) w Aj*2Ci AXX = Ai(Af 2CjX,)


« \ i{ A2kY + \ i A 2k~lY). (4.78)

Trong (4.78) chọn


Xi w 7l2fcy + Aiyt2fc_1y (4.79)

thì ta có /IXỊ sa A1 A'!; nghĩa là Xi tính theo công thức (4.79) là vector
riêng ứng vói trị riêng Aj.
Hoàn toà n tương tự ta củng có vector riêng Xi ứng vói tr ị riêng A2 = —Ai
đươc tính bời công thức:

x 2 ss A2kY - Aii42fc-1K (4.80)

C h ú ý 4.8. 1. T ron g qu á trìn h biến đổi, nếu các tỷ số dan g (4.68),


(4.70), (4.75) kh ông xảy ra thì chắc chắn tri riên g trội có cặp ngh iệm
phức liên hơp. Ta không xét trường hơp này ỏ đây.

2. Sa u kh i tìm đươc tri riê ng trội, tri riên g trôi kế tiếp có th ể tìm đươc
bằng phương pháp xuống th ang, ta cũng không xét ỏ đây.
Các vấn đề của chú ý trên có thê xem trong 12, 5].

2 3 2
Ví d ụ 4 .13. Tìm t r ị riê ng trội của m a trậ n / 1 = 4 3 5
3 2 9
Giải:

Chon Y — ( 1 ,1. 1)l và lập bảng tính:


152 Chương 4. Phương pháp số trong đại số tuyến tính

A Y AY A2Y Á3Y A4Y AbY A*Y


232 1 7 78 900 10589 125128 1480345
435 1 12 134 1569 18512 218927 2590563
329 1 14 171 2041 24207 286654 3393124

Ta thấy
^ « 11.8306, 3 = 1
{A*Y)j
« 11.8330. 3 = 2
(AsY)j
. è * 11-8370' 7 = 3 .
Vậy chọn trị riê ng trộ i Ai « 11.83; vecto r riên g chọn là y46y . Do các vector
riêng khác n ha u hằ ng số nên có thể chọn

X x w (1; 1.750; 2.991)'.

(thu được từ vector AtìY sau khi đã chia tất cả các thành phần cho
1480345).

Chương trình Ma tL ab

Bạn đọc hãy dựa theo ví dụ để lập chương trình MatLab


cho phần này.

7.2 Trườn g hớp ma trận đối xứng, xá c định dư ơng


Xét ma trận đối xứng A - ịatJ] (av = ũj, Vi,j).
Ma trận .4 được goi là xác định dương nếu vói moi bộ (.T|, x 2 , . . . , x n) không
đồng thòi bằng "0" ta đều có

' y 0>ijXịXj 0.

Ta đã biết nếu A là m a trậ n đối xứng, xác định dương thì mọi trị r iêng đều
là thực, p hâ n biệt và dương. Ng hĩa là, hai vector riên g X — (xi,X2 , . . . , x n)
và Y = {yi,y2t. . .yn) ứng vói hai tr i riê ng kh ác nh a u th ì trự c giao vổi
nhau, tức là:
( X, Y ) = ± x kyk = 0, ( X j Ề Y ) .
k=1
7. Tìm gần đúng trị riêng và vector riêng 153

Điều kiện cần và đủ để A là ma trận xác định dương là:

«11 «12
Ai — «11 > 0; A2 > 0;
«21 0.22

«11 «12 . «lfc


«21 «22 ••• n2k
A, > 0, VẢ; = 1, n.

Ofcl ak2 (*kk

Dối với m a tr ậ n đối xứng , xác định dương ta có th ể tìm được tấ t cả các trị
riêng và vector riêng dựa vào tính chất trực giao của các vector riêng.
Thuật toán : X uất p h át từ phương trình

A X = XX (4.81)

hay
n
y 'aqXi — \Xj, i = l,n. (4.82)
j=i
Ta thấ y h ê (4.82) gồm phư ơng trình, n + 1ẩn là Xị i = I Trĩ và A. Nhưng
11

do các vector riêng ứng với trị riêng nào đó sai khác nhau một hằng số
Iihân, nên trong các ẩn Xi,X2 , . . . , xn, ta có thể chọn một ẩn nào đó bằng
" 1 ". Khi đó, hệ còn lại đủ n phương trình và n ẩn. Quá trình giải (4.82)
dược tiến hành qua các bước:

• Bước 1: Chon x„ — 1 , hệ (4.82) được viết lại dưới dạng:

1 n—l
Xi - Ã
^ OịjXj T Oị.n i — 1 , n —1
2= 1

n -1
X = 0-ijXj+ (4.83)
j=1
Hê (4.83) tuyến tính đối với X, (ỉ = 1, n —T), phi tuyến theo A. Ta
giải hệ này b ằn g phươ ng pháp lăp.
Chon xấp xi đầu bất kỳ
154 Chương 4. Phương pháp số trong dại số tuyến tính

sau đó tính
A<°>=
j=l
ta đươc xấp xỉ đầu của A(0).
Qu á trìn h lăp thực hiện theo công thức:

xi
(m)
=
Try
1 n - l

\ -> (m -1)
i = l ,n -
+ <*i.n , i- 1

b=' ì
A(m) = + «n,n, rn = 1,2, (4.84)
j=i

Nếu quá trìn h dừng ỏ bưóc th ứ rn thì ta đươc:

Ai ~ A (m), X = (xịm), 4 m), ... l) K» (.Ti,.r2, . .. ,.Tn_i, 1 )'.

Bước 2: Tìm trị riêng và vector riêng th ứ hai là A2 và


Y = (yi, ỉ/ , ■ , UnÝ■Do X và Y trực giao với nhau (vì A. Ạ \ 2), nên
2

(X, Y) = 53 xiVj = 0 (xn = 1)


j=1
hay

Vn = - ỵ , X M , (4.85)
j=i
nghĩa là, nếu tìm được j/j, j = ì, Tì — 1 th ì có !/„.
Lặp lai quá trình trên, chon yn 1 = 1 ta thu đươc:
n- 2
yn = - 53 x i V j - Xn-1- (4.86)
j=i
Thay vào hệ (4.83) ta được hệ n — 1 p hư ơn g t rì n h n - 1 ẩn là
yM/2, ■• • , ỉ /n - 2 và A.
Chon xấ p xỉ đầu yị°\ •■■■y i- 2- 1> lặp lại bước 1 ta đươc
y[m\ y ị m\ ■■■! ĩ/n-2! 1 và ỉ/n tính theo (4.85).
Sau // bước ta tìm được tất cả các tri riêng và vector riêng tương
ứng.
7. Tìm gần đúng trị riêng và vector riêng 155

Ví dụ 4.14. Tìm tri riêng và vector riêng gần đúng của ma trân

4 2 2
A= 2 5 1
2 1 6
Giải:
Ma trận A đã cho là ma trận đối xứng, xác định dương (bạn đọc hãy tự
kiểm tra). Từ A X — XX ta có

4xi + 2x2 4" 2x3 = Axi

' 2x i + 5.i.'2 4“ X'3 — Ax'2 (ư)

2x i 4- X2 4“ 6x3 — A.X3

• Bước 1: Chon x 3 = 1, từ (a) ta suy ra

X
'i = J (4x'i 4- 2x2 4“ 2)

I X2 = J (2x'i 4- 5x2 4-1) (b)

Ịa — 2xi + X'2 4- 6

Chọn xấp xỉ đầu — 1. X U) — 1. Thay vào (b) ta th u được A(0) = 9


2

và xị1^ = 0.89, = 0.89, xịp — 1 . Cứ thế tiếp tục ta thu được kết
quà lính nhu trong bảng sau:
r (m) Jrn) A(m)
m Xj JU<2

0 1 1 9
1 0.89 0.89 8.67
2 0.85 0.83 8.53
3 0.83 0.80 8.46
4 0.81 0.78 8.40
5 0.8505 0.770 8.38
6 0.806 0.771 8.383
7 0.807 0.771 8.385
8 0.8074 0.7715 8.3863
9 0.8076 0.7717 8.3869
10 0.8076 0.7719 8.3871
11 0.8077 0.7720 8.3874
156 Chương 4. Phương pháp số trong đại số tuyến tính

Ta thấy vối hai phép lặp liên tiếp 10 và 11 thì các thành phần
tươn g ứng kh á gầ n n h au nê n có th ể chọn Ai ~ 8.3871 thì V
(0.8077; 0.7720; 1)*.

• Bước 2: Tìm A2 và vec tor riên g tươ ng ứng.


Ta goi vector riên g tươ ng ứng vói trị riê ng A2 là Y —(í/ 1 , y2, y-.i)' trong
đó ị/2 = 1 còn / 3 được xác định từ điều kiện
ịẹ

(X, Y) = XxVx + X2y2 + 2/3 = 0


=» 2/3 = -0.80771/! - 0.7720. (c)

Từ hệ (a) ta thay Xi bỏi yt, với 2/2 = 1 , 1J3 theo (c) ta thu đươc hê

yx = J (2.3864ĩjx + 0.4560)
Xx = 1.19232/1 -h 4.2280

Chọ n xấp xi đầu yí0) —1 => A'°' —5.42; ỉ/ị1' = 0.52. Kết quả tín h chi
tiết được cho tron g b ản g dưới đây:

rn (m) \(rn)
V\
0 1 5.42
1 0.52 4.85
2 0.35 4.64
3 0.28 4.56
4 0.25 4.53
5 0.23 4.50
6 0.223 4.494
7 0.220 4.490
8 0.218 4.488
9 0.2174 4.487
10 0.2171 4.486
11 0.2170 4.4867

Chọn A2 « 4.4867; yx ~ 0.2170. Tha y V i vào (c) ta có 2/ 3 « -0.9473.


Vậy A2 4.4867 và Y = (0.2170; 1; -0.9473)'.
ss
8. Bài tập 157

• Bưốc 3: Tìm A3 và v ector riêng tương ứng z — (z 1 , 22 , 23)*. Ta có


Ị (Z, X) % 0.807721 + 0.772022 + 23 = 0;
Ị <z, Y) K 0.21702! + 22 - 0.947323 = 0.
Chọn 2 i — 1 và giải hệ này ta được 22 ~ —0.5673; 23 ~ -0.3698.
Từ hệ (a) thay X bỏi z và 2i, 22 đồng thòi chọn 2 i = 1 ta th u được
A « 2.1260 và z = (1; -0.5673; -0.3698)'.
Tóm lại, ta có các trị riêng và vector riêng tương ứng:
\x « 8.3871. X ss (0.8077; 0.7720; 1)';
A2 ~ 4.4867, Y «(0.2170; 1; -0.9473)';
A3 « 2.1260, Zta (1; -0.5673; -0.3698)'.

Chương trình Ma t L a b

Bạn đọc hãy dựa theo ví dụ để lập chương trinh MatLab


cho phần này.

§8 BÀ I TẬP

Bài tập 4.1. Giải hê phương trình Ax — b bằng phương pháp Gauss-
Jordan, trong đó:

5 3 1 2 ‘6 7 2 0 1" 3
4 7 2 1 6 1 0 3 2 2<tề
, h= c
t
I
I , 6=
1 3 9 2 10 2 1 0 3 4
9 1 0 8 2 3 0 2 7 7

■3.5 1.1 0.1 -o.r ’ 0.2 ■


1.0 - 3 .1 1.0 0.2 0.8
3. A = , b=
0.1 1.0 5.7 - 0.2 5.9
- 0.1 0.2 - 0.2 2.1 -2.3

0.2
1.7 0.1 0.3
0.2
1.9 - 0.1 0.2
4. A =
0.1 - 0.1 1.3 -0.4
0.3 0.2 -0.4 4.1
158 Chương 4. Phương pháp số trong đại số tuyến tính

6.1 1.7 1.0 9.1' 18.27


1.7 1.6 1.1 8.1 12.88
5. A = , b=
1.0 1.1 1.0 6.1 9.51
9.1 8.1 0.8 7.1 26.07

3.2 7.7 0.6 9.1' 8.26


1.7 1.6 1.1 8.1 1.89
6. A = , b=
1.0 1.1 1.0 6.1 1.15
9.1 8.1 0.8 7.1 2.40

Quá trìn h tính theo chương trình M a t L ab lấy tới 7 số lẻ sau dấu phẩy
(nếu có).

Bài tập 4.2. Giải hệ phương trình bằng phương pháp Gauss-ơordan
(tính theo thu ật toán kẻ bảng và sử dụng m áy tính tay).

X\ + x 2 - 2.r3 + x 4 = 1 6.X —5y + 7z + 8í = 3


.Ti - 3x 2 + .r3 + Tị = 0 3.X + \ \ y + 2z + 41 = 6
2. <
4.X] - x 2 - x 3 - Xị = 1 3x + 2y + 32 + 4/ = 1

\x.\ + 3x 2 — 4x 3 —X ị = 9 X+ y + z = 0

Bài tâp 4.3. Giải hê phương trình sau bằng phương pháp Choleskv
(khai căn).

5 3 2 1 1 7 4 3 1 {
3 6 1 2 4 4 8 2 5 10
1. A= , 6= ; 2. A = , 5=
2 1 5 1 7 3 2 7 4 9
1 2 1 6 2 1 5 4 11 9

l.í
'4.9 5.0
1.0 0.1

1.0 6.4 1.2 0.2 2.2


3. A = , ỉ>=
0.1 1.2 3.6 1.1 3.7
1.1 0.2 1.1 6.4 2.2
8. Bài tập 159

7.7 1.2 1.1 2.1 ’9. 8


1.2 8.7 1.3 1.1 2.3
, b=
1.1 1.3 8.3 1.0 2.1
2.1 1.1 1.0 4.9 7.0
Tính trực tiếp the o công thức và theo chương trình Ma t L a b .

Iỉài tập 4.4. Giải các hệ phương trình sau bằng phương pháp lặp đơn
theo cách áp dung chương trình Mat Lab sao cho đạt sai số £ < 10-4.

8.Ï1 + a.'2 + z3 = 1 2 x i + 3 x 2 — 4 x 3 4- Xị 3
1 . X 1— 5.T2 + .T3 = 16 ; Xi - 2.T2 - 5.T3 + Tị 2
3.
.T1 +.T 2 —4 .T3 =7 5 .T1 - .T +
3 2 x3 - 4.T4 1

10.T] + 2.T2 — X3 + 2.T4 -4


1.02i' - 0.25y - 0.302 = 0.515
2 .
—0.4la: + 1 .1 3 y - 0.152 - .
1 555 ;

- 0 . 2 5 x - 0 . 1 4 y + 1.212 = 2.780

Bài tập 4.5. Tìm m a trận nghịch đảo của các m a trậ n theo phương pháp
G auss-Jordan bằn g cách biến đổi trực tiếp theo thuật toán tính toán và
cách dùng chương trình M at Lab đĩ viết.

3 2 2 13 14 6 4 '
1. A - 1 3 1 y 8 - 1 13 9
3. .4 = KỊ
5 3 4 6 7 3 2
9 5 16 11
1 9 6'
2. A = 2 5 15 ĩ
6 15 46

Bài tập 4.6. Tìm m a trận nghịch đảo của ma trậ n


1 2 6
2 5 15
6 15 46
sử dung phương pháp Cholesky bằng cách biến đổi trực tiếp theo thuật
toán tính toán và cách dùng chương trình M a t L ab đã viết.
160 Chương 4. Phương pháp số trong đại số tuyến tính

Bài tập 4.7. Xây dựng chương trìn h M a t L ab tìm đa thức đặc trưng của
ma trân theo phương pháp Danhilepski. Áp dung tính với các ma trân
sau:

6.1 1.0 5.1 5.1 1.1 l .o "

1 . A= 1.0 0.5 6.1 ; 2. A= 1.1 6.1 1.1

5. 1 6.1 7.2 1.0 1.1 5.1

Từ đó tìm trị riêng và vector riêng tươn g ứng.

Bài tập 4.8. Tìm trị riên g và vector riêng của các m a trậ n bằn g phương
pháp Krư lô p A. N.

5.7 1. 2 2.0 '6.1 1.7 l.o'

1. A = 1. 2 2.7 1.0 ; 2. A = 1.7 1. 6 1.1

2.0 1.2 7.2 1.0 1. 1 5.1

Xây dựng chương trìn h M a t L ab minh họa th u ậ t toán trên.

Bài tập 4.9. Tìm trị riêng trội và vector riêng tương ứng của các ma
trận sau:

'2.1 1.9 1.8 1.7 '5.1 4.1 3.1 2 . 1 '


1.9 2.0 1.7 1.8 4.1 6.1 2 .1 5.1
1. A = ; 2. A =
1.8 1.7 2.1 1.9 3.1 2.1 5.1 4.1
1.7 1.8 1.9 2.0 2 .1 5.1 4.1 6.1

Kết qu ả tín h lấy 5 chữ số sau dấu phảy.

Bài tập 4.10. Tìm trị riêng và vector riêng của m a trậ n A theo phương
pháp trư c giao.

5 3 2 4.9 0.1 Ì .r
1. A = 3 6 1 ĩ 2. A = 0.1 3.6 1.0

2 1 5 1 .1 1.0 4.9

Xây dựng chương trình M a t L ab m inh họa phương pháp trên.


CHƯƠNG

Phép nội s u y v à x ấ p xỉ hàm

rong thực tế, ta thường găp dang hàm số ỊJ — f(.r) mà không

T biế t biểu th ức giải tích cu th ể của nó. Thông th ường, bằng đo


đạc, thưc nghiêm ta chỉ thu đươc trong dan g môt b ảng số, ngh ĩa
là biết giá trị Ị), ta i các điểm (? = 0777) tương ứng thuôc đoan [íỉ. b\ nào
dó. Vấn đề là cần tính giá tri ĩ/ tại điểm X Ỷ X 1 i = 0 , n mà không thể
thu dược bằng các phương pháp thưc nghiệm như trên. Cũng có trường
hơp biết quy luât biến đổi y - f(x), nhưng biểu thức của nó quá phức
tap thì giá tri ỹ = f (x) củng khó mà tìm đươc. Vì vây, người ta tìm cách
thay hàm /(;/:) bời hàm F(x) dơn giản hơn, dễ tính F (:ĩ) sao cho sự sai
khác giữa /(.ĩ) và /•'(.£') cang bé cang tốt. Cach ihay J\.I) bời /•'(■') nhu
vây gọi là xấp xi hàm. Có nhiều cách xấp xỉ khác nhau, ỏ dày ta chi đề
cập đến một phương pháp xấp xi dơn giản nhất là: xấp xỉ /(.;•) bởi hàm
trong dạng đa thức, vì khi tính giá trị của đa thức tại điểm ĩ dã có so dồ
H orner (dễ tính toán).

§1. K i i á i n i ệ m v ề n ộ i s u y

1.1 Bài to án

Giả sử có hàm số y — f(x ) xác định trên đoạn [o, b\. Bằng cách n.ào đó
ta thu đươc bảng số

Ịl i =f (Xi) , / - 0. n ; Xị £ [a, b}. (5.1)

161
162 Chương 5. Phép nội suy ưà xấp xi hàm

Từ bàng số (5.1), hãy xây dựng đa thức Pn{x) bậc < n sao cho

Pn ( X i ) = Vi, i -- Õ7n. (5.2)

Đa thức pn(.r) sinh ra từ bảng số (5.1), thỏa mãn điều kiện (5.2) gọi là đa
thức nôi suy (hay công thức nôi suy) và ta có pn(.r) R í f(x ) (xấp xi) trên
đoạn ịn,b}. Các điểm X, e [a, b} (i —0, n) goi là các mốc nôi suy (hình 5.1).

Ilình 5.1

Giá tri ỊỊ tại điểm X 6 (a. b); 1'/ .Vị. (i = 0, n), tức là

ỹ = Pn (T) w / (x)

gọi là giá trị nội suy, còn với X ị |(7. 6 Ị thì ta gọi

y = pn (f) Rí / ( f )

là giá tri ngoai suy.


Hiêu số
Rn(x) = f ( x ) - P n (x) (5.3)

gọi là sai "ố của phép nội suy tại điểm X.


2. Da thûc nôi suy Lagrange 162

1.2 S iï du y n h ât cùa da thiic nôi suy

Dinh lÿ 5.1. Da thûc Pn{x) bàc < n sinh ta tù bàng sô (5.1), thôa màn
dieu kiên (5.2) là du y nhât.

Chûng minh. Già sù cô hai da thûc Pn(x ), Qn{x) vôi bâc < n sinh ra tù
bàng sô (5.1), th ô a m àn die u kiên (5.2).
Xét
H(x) = Pn( x ) - Q „ l x )

là da thûc bâc < n. M ât khâc ta cô

Il (xi) = Pn (x,) - Q„ = y, - yt = 0, Vi = Ôÿn,

nghîa là //(.r) là da thùc bâc < n cô n f 1 nghiêm r, (i = 07 n). Dieu này


chï xày ra khi H(x) = 0, tùc là ta cô

Pn(x) ~ Qn(x). a

Sau dây ta nêu m ot so công thùc nôi suy thuôn g düdc sù du ng tro ng thiïc
tê.

§2. D a t h ü c n ô i s u y L a g r a n g e

2.1 Da thiifc nôi suy Lagrange


Già sù da thù c Pn{x) bâc n sinh ra tù bàng so

y» = / (-T.), ' —0, n (5.4)

vdi câc môc nôi suy


n < .r0 < x\ < < x,n <b
thôa m àn dieu kiên
Pn{xi) = y, *= 0, ri. (5.5)

Lagrange diïa vàd câc tinh chat cùa da thùc nhü: tô’ng hai da thùc bâc n
là da thùc bâc < n ; da thùc bâc n nhân vdi hang so a 0 cüng là da thùc
164 Chương 5. Phép nội suv và xấp xì hàm

bậc n. Vì vậy, Lagrange lập đa thức cơ sỏ bậc II:


Ị ^ j Xị)~) . ( x .1 ] ) . . (./ X J _ ị ) {X 3'j-f 1 ) • * • (./■' Xjì

0 7 ị __
Lj (l ) = , i,j
l , j =0
= ,7/
0,7/. (5.7)
1 ,=;)
Chon
Tỉ

1 n('i')= Y t'MVy
I-il
(5.8)

Đa thức (5.8) là đa thứ c bậc n và do (5.7) ta dễ dàng suy ra


Tl
P n ( z .) - Y ỈJJ ( * « ) Vj = y*> (i = 0, ũ ) .

Vây Pn(:r) là đa thức nội suy sinh ra từ bảng số (5.4), thỏa mãn điều kiện
(5.5) và pn{x) s: f(x) (xấp xi) dươc xác định theo (5.8) goi là da thức nội
suy Lagrange.

2.2 Sai số của đa thức nội suy Lagrange


Với X cố đinh, X / T. ị (/ — u, n ) th ì

Rn(x) = /(*•) - pn(x) (5.9)

dược goi là sai số tai điểm ./.


Người ta đã chứng m inh dươc rằ ng, nếu hàm số /'(./■) xác din h, liên tục
và có đạo hàm liên tục đến cấp 7/ 4- 1, đồng thời nếu

f(n+l) (C)
ĩỉn(-r) = f{x) - pn(x) = V — YTU7n+,(.r). (5.10)
(ĩ/ + 1 )!
n
trong đó Ị Ễ 10,1], 'un+i'(x') ^ n \x'-xì)- Từ (5.10) ta suy ra
ii=n
=0

|/ 7 , i( .T ) l< ( ^ y Y j jh , +i W | . (5.11)
3. Đa thức nội suy Newton có mốc cách đều 165

2.3 Ch ưở ng trình Mat L ab

function v=lagrangeinterp(x, ỵ, u)
% lagrangeinterp computes
% the Lagrange interpolation polynomial

%Input: _ X, ỵ are vectors of the same length


% that define the interpolating points.
% _ u is the vector of points where
% the function is to be evaluated.

% Output: V is the same length as u


if nargin<3
u=sym('x' );
end
n=length (x);
v=zeros (size (u));
for i=l:n
w=ones(size (u));
for j=f1:i-1 i+1:n]
w=(u-x (j)) ./(x(i)-X(j) ) .*w;
end
v=v+w*y (i);
end
end

Ví d ụ 5.1. Tìm đ a thức nôi suy Lagrange cùa hà m số được cho theo bảng
số sau:
i 0 1 2 3 4
2 *ỉ7
T, 1 3 4
Vi 17 17.5 76 210.5 1970

Áp dun g chương trình M a t L ab trên ta thu được

y — f(.r) % p.ị(x) — 2.T4 — 17.T3 + 81:r2 — 153.5.T + 104.5.


166 Chương 5. Phép nội suy và xấp xi hàm

§3. Đ a t h ứ c n ộ i s u y N e w t o n c ó m ố c c á c h đ ề u

Xét bài toán ((5.1), (5.2)) trong §1, trong đó các mốc nôi suy cách đều

a = Xo < Xi < •■• < xn = b

và /? = Tị —.Tj_I = - — - , (j = 1, n) gọi là bưỏc từ mốc Xi I đến mốc Xị.


n

3.1 Khái niệm về sai phân


3.1.1. Sai ph ân tiến

Ta gọi
Ay, = Vi +I - V i (i = 0,n - 1)
là sai phân tiến cấp một.
Sai phân tiến của sai phân tiến cấp một goi là sai phân tiến cấp hai và
đươc ký hiêu bởi

A2y¿ = A(Ay.) = Aj/j+i - Ay, = y, + 2 - 2y,+1 + y,, (ỉ - ờ,V - 2)

Tổng quát, sai phân tiến của sai phân tiến cấp n - 1 được gọi là sai phân
tiến cấp n, ký hiệu

A"yo - A (A n_1yo) = An_1yi - An-1yu. (5.12)

3.1.2. Sai ph ân lùi

Ta gọi
Vy, = V i- y,-i i = 1,n
là sai phân lùi cấp một.
Sai phân lùi của sai phân lùi cấp 77 —1 gọi là sai phâ n lùi cấp n và đươc
tính theo công thức

V"y, = V(Vn-'y,) = v n-'y, - v n- ‘y0. (5.13)

Từ khái niệm sai phân tiến, lùi ta suy ra mối liên hệ giữa chúng:

A k Vi = v k y l+ k. (5.14)
3. Đa thức nội suy Newton có mốc cách đều 167

Q uá trì n h tín h sai ph ân tiến (5.12) dưổc mô tả trong bản g sau:

Theo liên hệ (5.14) thì bảng sai phân tiến cũng là bảng sai phân lùi,
hàng cuối cùng chính là Vỉ/n, v 2yn....... v ní/n.
Ta xem X = X , là mốc X i nào đó thì mốc xi+\ = X + h và xem A là toán tử
tác động lên hàm / tại mốc X , nghĩa là:

A/(*•) = f ( x + h ) - f ( x )
I f( x ) — A °f(x) —f(x) là toán tử đơn vi hay đồn g nh ất.
Các tính chất sau đây phát biểu đối với sai phân tiến và cũng đúng với
sai phân lùi.
Tính chất 1. Toán tử A là toán tử tu yến tín h , n ghĩa là VVv, ft € R: V/, g
ta có
A ( n f + ftg) (r) - oA f(x) + ftAg(x),
đồng thời
Am(A kf){x) = A m+kf(x).

Tính chất 2. Nếu f(x) = c vói r - const thì A / = 0 => Am/ = 0 Vm =


1, 2 . . . .
Nếu f(x ) = xn thì An(xn) — T ì ' h n và A m{xn) — 0 Vm > n .
Các tính chất 1,2 có thể dễ dàng suy ra từ đinh nghĩa về sai phân.
168 Chương 5. Phép nội suy và xấp xỉ hàm

Tính chất 3. Giá tri của hàm số f ( r) tai mốc r + mh đươc biểu diễn
thông qua sai phân các cấp của nó theo công thức

f (. r + rnh) = £ c ? uA kf ( x) . (5.15)
fc=o

t r o n g d ó c ; , = t ! ( ; ; _ k)l.

Chứng minh. Từ A f ( x ) — /(.V+ h) — f ( x) ta suy ra

f ( T + h) = A /(.r) + /(.r) = (A + /)/ (.r );


f(x f 2h) = f ( x + h + ~ h ) = ( A y i ) f ( x + h) = ( A + ỉ)'2 f ( x) .

Áp dung công thức truy hồi ta thu đươc

f ( x + r n h ) = ( A + I ) m f(x).

Khai triển (A 4- IỴ" theo công thức nhị thức Newton ta thu đưoc
(5.15). ■

3.2 Đa thức nô i suy N ew ton tiến có mốc nội suy


cách đều
Xuất phát từ mốc Xo (đầu bảng), đặt X = Xo + h/, từ đó suy ra

- -Co = /ư
- -Ti = h ( t - ì )

- :r-k h(t - k)
Xây dưng đa thức nôi suy trong dang

Pn(x) - Pn (.Co + ht)

- pn{t) - «0 + a.\t + a2t(t. - 1 ) + ••■ + ant(t. - 1 ) . . . ( / - n + 1 ).


(5.16)
trong đó a, (i — Õ7 Ũ) sẽ đươc xác đinh sao cho

P„(-Ti) = Prxựi) = Vi, í' = H T n . (5.17)

Ta thấy
3. Đa thức nội suy Newton có mốc cách đều 169

• khi X — .To thì từ X —T o — h t suy ra / —Ü;

• khi V — Tị thì X I — .To = h = h t suy ra t = 1;

• khi Xk —To = Ả:/? = /ỉ/ suy ra / = k.

Từ (5.16) và điều kiện (5.17) ta có

pn (t 0) = p„( 0) = a 0 = ;Vo
Pn (t i ) - Pn(l) - «0 + «1-1 - y ỉ -=> (Xi - Ỉ J \ - a0 - Vỉ - y0 - A y0;
Pn (t 2) = p„(2) = «0 + « 1.2 + nọ.2 = i/o + 2 (?/i - i/o) + 2(72 = ì)2

hay
yo —2 j/i -f ị/2 _ 1 . 2
a2 =~ Ọ ~ 00 A zr/o.
Truy hồi ta được
nk - ịỹA fc//0. Ẳ - - 1 .2 ........ /ỉ. (5.18)

Th ay vào (5.16) ta th u đươc

/(„(.r) = p„ (.To + /í)


<(<- 1 )■Aa 2 i/o + +
i( í - ! ) • • ( « - n + l)
A"//o,
P)1 (() - yo + Ayo + 91
(5.19)

trong tỉó j: — To 4 - l í t .
Công thức (5.19) sinh ra từ bảng số (5.1) thỏa mãn điều kiện (5.2), xuất
p h át từ mốc X0 tiến dằn lên nên goi là đa thức nôi suy Newton tiến có
mốc cách đều. Nhìn vào bảng sai phân, ta thấy công thức (5.19) sử dung
hàng đầu cùa bảng sai phân.

3.3 Đa thức nội suy N ewton lùi có m ốc nội suy


cách đều
X uất p há t từ mốc X n cuối bảng. Đăt X = x„ + ht th ì

khi X — x „ ta có / —0;
170 Chương 5. Phép nội suy và xấp xi hàm

• khi X - ,rn_i ta có .T„_1 —T,n — -lĩ = ht suy ra t. ——1 ;

• khi X = Xk thì X k — xn = — hk — ht suy ra / = — k.

Hoàn toàn tương tự như trê n ta được

Pn(x) = 1>„U„ + ht) = pn(t) = y„ + YịVy„ + — V 2y n +


+ i« + 1 )(( + 2 ) ; . . u t n - l ) (5.20,
IV.
Do môi liên hệ (5.14) nên ta có
Pn(x) —pn{xn 4" ht)
t A. >1 , 4 - t{t.

+ 1 ') , tịt + \){t + 2 ) • • • (t + n - 1 ) Ar(
— Vn + 77Ay« ! + “ 9I—-A 2y„_2
' 4
n\; ^ ỈA>-

(5.21)
Công thức (5.21) được goi là đa thức nội suy New ton lùi xu ất ph át từ n út
X n lùi dần lại. Nhìn vào bảng sai phân, ta thấy công thức (5.21) sù dụng

hàng cuối cùng của bảng. Như vậy hai công thức tiến (5.19) và lùi (5.21)
sử dung cùng một bảng sai phân.

3.4 Sai số
Theo công thức (5.10) ta có sai số
/ (n+,,(í) (5.22)
’ w = („ ị ì) ! w " + l ( z > -
Neu sử dụng công thức nội suy Newton tiế n (5.19) với X :í.'o + ht thì

w„+i (x)= n (x ” * < ) = ,|n+i n ( í - * ì -


1=0 Jfc=0

Lai do /(n+0(x) = lim —— — , nên ta có th ể xem


v ’ AAÒ hn+l
A n+1ỉ/o
/ (n+I)(0 ))1+1

Vây
Ạn+I., n
(5.23)

là công thứ c đ án h g iá sai số.


3. Đa thức nội suy Newton có mốc cách đều 171

Chú ý 5.1. Các công thức nôi suy Newton tiến (5.19), lùi (5.21) sử dụn^
theo hai canh củc. tam giác cân trong bàng sai pnâ n. Do đó, khi cần tính
giá tri ỹ tai điểm T gầ n T(), ta sử du ng công thức tiến, còn khi X gần r n ta
sử d un g công thức lùi.

Chú ý 5.2. Do đăc điểm trên nên khi cần tính ỹ tai X gần giữa bảng thì
việc sử dung các công thức tiến, lùi đều đươc, nhưng bất lợi do một loat
các giá trị sai phân các cấp bị bỏ qua. Vì vây, trong trường hợp này ta
nên sử dụng công thức nội suy Lagrange. Cũng có nhữ ng công thức kh ác
sử dụng kh á tốt n hư các công thức nội suy trun g tâ m m à ỏ đây ta không
xét, có th ể xem tro ng tà i liệu tha m khảo.

Chú ý 5.3. Nếu cần tìm giá trị gần đúng ụ tại điếm X ị [xo,x„Ị (ngoài
bảng), trong trường hơp này

• nếu X < Xo ta sử dụ ng công thứ c tiến (5.19);

• nếu X > x„ ta sử dụ ng công thức lùi (5.21).

Giá tri thu đươc gọi là giá trị ngoai suy.

Ví dụ 5.2. Giá tri của tích phân xác suất

dt

được cho trong bảng sau:

X 1.4 1.5 1.6 1.7 1.8 1.9 2.0

$ 0.9523 0.9661 0.9763 0.9838 0.9891 0.9928 0.9953

Hãy tìm giá trị gần đúng của $(1.43).


Criai:
Lập bảng sai phân từ hàm số đã cho (mọi cột số nguyên đều được nhân
vói 10 "'):
172 Chương 5. Phép nội suy và xấp xỉ hàm

Do điểm X — ] 48 gầ n đ ầu bản g nên ta sử đung công thứ c nội SUV New ton
tiến (5.19), vói ĩ = — = 0 .8; h = 0.1. Kết quả thu đươc
h
<Ị>(1.43) « 0.95686.

3.5 Chươ ng trình M a t L ab

function [V,d ]=newtoninterp(x,ỵ,u)


% This funtion illustrates the Newton interpolation fomular

%Input: _ X , y are vectors of the same length that define


% the interpolating points.

% _ u is the vector of points where the function is to be


% evaluated.
% Output: V is the same length as u
if nargin<3
u=sỵm(' X');
end
4 Phép nội suy ngược 173

n = length (y);
i f length(x)~=n
errorf'x and y are not compatible!! !')
end
% Compute the divided-difference table
d = y (:);

for j=2:n
for i=n:-1: j
d(i) = (d(i)-d(i-l) )/ (x (i)-x(i-j + l) );
end
end
% Computes vector v by using backward interpolation formul
v=d(n)*ones(size (u));
for i=n-l:-1:1
v = v. *(u-x(i)) + d(i);
end
end

§4. P hép nội suy ngược

Trong các tiết trước ta xét bài toán: Tìm giá tri gần đúng 77 của hàm
tại điểm X / r, (i — 0 , n) khô ng có trong bàn g số (5.1). Bâv giờ ta xét bài
to án ngươc n ghĩa là có giá tri cùa hàm số là 77, hãy tìm X í X, (/ = 0 , n )
sao cho /7 ~ / (x). Ở đây ta xét hai hướng giải quyết cơ bản, lần lươt sử
(lung công thức nôi suy Lagrange và Newton.

4.1 Sử dụ ng đ a thứ c nôi suy Lagrange

Từ bảng số đã cho trong dang y = f(x), có 77, hãy tìm 7 tương ứng,
nghĩa là tìm X — p { ỹ ) là hàm ngược của hàm ụ — /(x). Như vậy, ta xem
(/,, / 0, n là giá tri của dối số, nói chung các giá trị ụ, không cách đều
174 Chương 5. Phép nội suy và xấp xỉ hàm

nhau. Bằng đa thức nội suy Lagrange, ta xây dưng được da thức nội suy

X - p{y) w Qn(y) = Lj( y)xj . ( 5 .2 4 )


j =0

Từ đó, do đã biết y ta có xấp xỉ

X ~ Qn(y).

4.2 T ruô ng hỢp các m ốc nội suy cách đ ều


Trong trườ ng hơp này ta có thể sử dụng phương ph áp lăp như sau:
Giả sử cần tìm X, biết ỹ ỏ gần đầu bảng sai phân. Sử dung da thức nôi
suy New ton tiến

y ~ pn{x) = p„(x0 + th) = pn{t) = ỊỊ/o+ (A.Vo +•<p(0-

trong đó
Át) = / +

ta suy ra
t= y - y 0 1 ^(f) = 0 (0 , (5.25)
Ayo A(/o
X —Xo
trong đó t =
/) '
Do cần tìm X ứng với ụ đã cho, ta tìm t - - ■Từ phương trình (5.25)
h
thưc hiên quá trình lăp với xấp xi đầu to = '■ ■-— và công th ức làp
Ayo

t,n = <pựm-1 ). m = 1, 2. .. . (5.26)

Sau mộ t số bước lặp, ta xem trn ~ õ từ đó suy ra X ~ hĩ + Xo là giá tri gần


đúng cần tìm.

4.3 Chương trìn h M a t L ab

Bạn đọc hãy dựa theo thuật toán để lập chưong trình
MatLab cho phần này.
5. Phương pháp hình phương tối thiểu 175

§5. P h ư ơ n g p h á p b ì n h p h ư ơ n g t ố i t h i ể u h a y
XẤP xi TRUNG BÌNH PHƯƠNG

Trong các tiết trước ta đã xấp xỉ hàm f(x) bằng đa thức nội suy, xuất
p h á t từ bảng số Pi — f ( X i ) ; i = T ~ n thỏa mãn điều kiện p„_! ( X ị ) = Hi ( i —
] . n). Các giá trị y, đươc xem là các giá tri đúng của hàm f ( x ) tại các mốc
X i (i = 1, n). N hư ng th ực tế tron g nhiều trường hơp các giá tr ị y, đó không

có mà chỉ có các giá trị gần đúng, nghĩa ì h y , = f ( l ị ) + £ị (/ = 1771). Trong


trường hợp này, việc xấp xỉ hàm f ( x ) bằng đa thức nội suy nh ư đã xét
ỏ trên không còn phù hợp nữa, ta cần xấp xi 'hàm f(x) trong dạng khác
th iế t thưc hơn.
Sau đày ta sẽ đưa ra dang xấp xi khác goi là xấp xỉ trung bình phương
(hay phương pháp bình phương tối thiểu). Sai số tính theo phương pháp
này đươc dàn đều trên đoan [a, h}.

5.1 Khái niệm về sai số trung bình phươ ng


D i n h n g h ĩ a 5.1. Xét hai hàm số f(x) và p(x). Đại lượng

(5.27)

dươc goi là sai số (hay độ lệch) trung hình phương của hai hàm f(x) và
p(x) trê n tập hợp điểm Xi (i = 1, n).

Từ đinh nghĩa ta thấy, độ lệch ơm càng nhỏ càng tốt, nghĩa là p(x) càng
gần vói f { x ) . Từ đó ta nói hàm p ( x ) ~ f ( x ) (xấp xi) trên đoan tập điểm
[x‘i , a:2. . . . , j-n] c Ịa, b\ theo n ghĩa trun g bình phương (hình 5.2).
Công thức (5.27) gồm tổng các số hạng \f (Xj) - -PÌXì )]2 (? = l.n) là độ
lêch giữa / và p tại mốc X ị , đồng thời ta lại có / ị x i ) = ị)i + £ i (i = 1. n). Do
dó, thay / ( x j ) % y, ta được

(5.28)
176 Chương 5. Phép nội suy và xấp xi hàm

Iỉình 5.2

Công thứ c (5.28) cho thấ y sai số tru n g b ình ph ương ơ,„ bao gồm cả sai số
£, sinh ra trong quá trình quan sát tại các mốc X,.

5.2 Bài to án

Xét p(x) — F (x, Uo, « 1 , . . . , nm) € ./ là tập hơp các hàm phu thuôc vào
các tham số a0, « 1 , . . . , am. Hãy tìm bô tham số đó sao cho
/ Ị »• \ V2
Orn = ị ^ - Ị C \y, - F (Xị.do, « 1 , . ... um)]2j đ ạt min. (5.29)

trong đó y, Rí / (.Tj ), i - T7ÏÏ.


N hưng để đ ạ t đươc (5.29), ta chì cần tìm bô số <7, (/ 0, rn) sao cho
n
ự>(ao,«i,...,am) = ^2\y, - F{xu a0. . . . , a m)}2 đ ạ t min. (5.30)
i= 1
Vậy bài toán được đặt lại như sau: Từ bảng số y, ~ /(.?',) (i 1. v). Hãy
tìm bô số n, (/ — 0 . m) thỏa mãn (5.30).
Giả sử đã tìm được bộ số là ã j (i 0. T i l ) sao cho

p{x) = F (x , ã 0,ã 1 .. . . , ũm) 6 J.


5. Phương pháp hình phương tối thiểu... 177

Khi đó, ta nói p(x) ĨH f(x) tốt nhất theo nghĩa trung bình phương và
phương pháp tìm hàm p(x) như vây goi là phương pháp bình phương tối
thiểu (cưc tiểu). Để đơn giản ta xét F (x, õ0, ãj , . . . , ăm) £ J có dang tuyến
tín h đối vói các th am số ao, « 1 , . . . , am.

5.3 Xây dự ng phư ơn g pháp tính


Dinh nghĩa 5.2. (đa thức s uv rộng) Cho hệ hà m

{<pk{x)} {k = 0 , m ) (5.31)

là các hàm đối với X. Ta gọi


m

Pm(x) = ỵ,akVk(x) ( 5 . 32 )
fc=o
là đa thức suy rộng củ a hệ h àm (5.31), trong đó CLk (k = 0, m) là hê số, còn
hệ (5.31) đươc gọi ỉà hệ cơ bản.

Từ định nghĩa ta thấy, nếu cho hệ gk{x) = xk (k = 0. 771) thì hệ đó là hệ


đại số và p,n(x) là đa thức bậc rn. Còn nếu hệ (5.31) là hệ lượng giác
1; cos .r; sin x\ cos 2.r; sin 2.r:... th ì Pm{x) là đa thức lượng giác. Bài toán
đươc đ ặt lai n hư sau:
Từ bảng số
Vi » / (-Ti) i - Ĩ7»; (5.33)
Hãy tìm hàm

<p(x) = Pm{x) = Y2nkpk{x) (5.34)
k-0
sao cho
n rn

ộ («0, « 1,.. ., am) = Y , V i - Y l ơk-Pk(Xi) đạt min (5.35)


Í=1 L k- 0
trên ịn. h} theo ph ân hoạch

A = {fl = Xi < X2 < ••• < xn = 6} .

Xem ộ («0, « 1 , . . . , am) là hàm số của m + 1 biến độc lập (Ik {k = 0, m). Theo
lý thu yế t của hàm số nhiều biến, cực trị của hà m (5.35) đạ t được khi
dứ ___
■— =0, k = 0, m (5.36)
ơnk
178 Chương 5. Phép nội suy và xấp xỉ hàm

hay
n
1£—I !Ji - £ ak M
k=0
* ,) ỊJ ý>o(;<;i) —0

m 11
£ ỉ/i - E nkpk{:rt) > 'Pki^ i ) —h
i=1 k=0 JJ

£ //, - E akSk(-Xf) ( ĩptn{3'i) —0


i=1 fc=o JJ
hay
n n n
£ pa (•!',) ý>k ( !-,) Vl) + £¿>1 [ j ’i ) p k { ! ,) ữ l + ■• • + ( ri)'pk (•»■■;) «m
1-1 1=1 i=l
— yi Pk(^i) 1 A: — 0 . / / /. ( 5 .3 7 )
j=l
Ký hiệu
'¿V — ('Pr(^’l ) ị pr{x2 ). . . . , pr(xtt))

là vector n chiều, có thanh phần thứ I là p r(./:,) (/ l . //) và vecto r

.V= (ỉ/1 , 2/2----- //,,)'

cũng là vector n chiều. Ta định nghĩa tích vô hướng

Iv^r» 7?»] — ^ ^ 'pr{3’i)ips[xi ) i


1=1
n
l/ỊA7?r| = £ //i7 ? r (.»•«)•
1=1

Khi đó, hệ (5.37) được viết lại dưới dạng

ịpo•'PtìI«0 I lr'1" 7-4)] fll (' t' Ị^m- <A)| Q,tt = ị.V; 7^o!
Ịv?0-y?ljfl<)+ [v?l,^l]fll I •••4 [pm- p \inm — [//•7^1ị

[ý^O, VAn] n 0 4 - Í9?l. p in ' 4 - • • • 4- [^)H, VA»] ~ [//• ptnị


5. Phương pháp bình phương tối thiểu... 179

Hệ (5.38) là hệ đại số tuyến tính /// + 1 phươ ng trìn h , III + 1 ẩ n là


(lo. III,.. .. nm và đươc gọi là hê phương trình chuẩn.
Đinh thức củ a hệ (5.38) xác đinh bởi

[v^O5go Ịgi •y^o] ■• ■ \gm) go\


[‘A l - T? ij [^1' V^l] • •• [ ■p Ti nV 'l ]
( I \go- 'pl 1 • • • 1 (5.39)

\gm- gl\ [pm- gĩiỉ\ ■■■ ịgmi pui\

đươc gọi là định thức Gram của hệ vector go, g \ ....... g m. T ừ (5.39) ta thấy
ma tràn Gram đối xứng. Nếu đinh thức Gram khác không thi hệ (5.38)
tồn tai duy nhất nghiệm.
Người ta chứng m in h dược rằ ng: nếu hệ vector (hàm ) — dộc lập
tuyến tinh trên phân hoạch

A = ịa = 2'1 < .)•2 < • • • < x„ = b}

thì dinh thức Gram khác không và do đó hệ (5.38) tồn tại duy
nhất nghiêm, đồng thời hàm số ộ{<io.ci 1 (I,nì đat cưc tiểu tai điểm
.......

(771-772,__ 77,,,) e R",+1 là nghiêm của hê (5.38) và ta có hàm

V3(*) = x > i ^ ( - T) (5.40)


j =0

xấp xỉ hàm /(.r) (tức là /(J.) ~ g (.(•)) tốt nhất theo nghĩa trung bình
phương.

5.4 Sai số củ a phương pháp


Ta gọi
1/2

Ỡ,n - Y , [.Vi - Ĩ5( ir1)l2j (5.41)

là sai số của phươ ng ph áp xấp xì trun g bình phương.


Xét

52 lĩii ~ ^ T')]2= [y - 7- ?/ - 7} = Ị.v- 7. y\ - [y - g- 7] (5.42)


Ĩ--I
180 Chương 5. Phép nội suy và xấp xi hàm

Do nk là nghiệm của hệ (5.38) nôn ta có


m m rn

[y - ỹ M = [y. p\ - ty- ỳ\ = U- 52 a j lP j 52 (ì j p } ' 52 (íkpk


J [_j=0 k=0
~

j= 0

= 52 ặj [y, V3j] - ậj ự>j >52 ãfcP k


j =0 j=0 L fc=o

= ¿ SJ I ỉy- pj) - ê ã* bj> V k \ 1 = 0.


j=0 ( k=0 )
Vậy từ (5.42) ta có

52
i=l
[Vi - v ty i)} 2 = [y - ỹ- y\ = Ịy,.<
/]- [Ụ5.y}
Từ đó, theo (5.41) ta có công thứ c đá nh giá sai số:

wm = (-1 2 ~ ^ ('r *)]2ì = ( - { [ y , y ] - t y , y } } ) ' /2


\ n i=1 / n

= ^ - Ị [ y , y j - 5 2 ^ í^> y] j ) 2 (5.43)

trong đó ăk (k — 0, rn) là nghiêm của hê phương trình chuẩn (5.38)


còn {ý2fc(T)}fc=g-Sĩ là hệ hàm độc lâp tuyến tính trên phân hoach A
{a =X j < Xi <■■■< xn = b} của đoạn Ịa, b\.

5.5 Trường hợp {( P k { x ) } k = Õ1 H là hệ trực chu ẩn


Đ ị n h n g h ĩ a 5.3. (hệ trực giao) Hệ ham { p j ( x ) } được goi la hệ trực
giao trên phân hoạch A của đoan [a, b) nếu

n
= 0, nế u r Ỷ -s
I -pr) ps I 5 -prtyi) ps (X, )
i=l / 0. nế u r = s.

Số
M = (lv>,.vM)v'
gọi là chuẩn cùa ipr trên phân hoạch A.

Hệ hà m {*,,(*)} ==ỹ-ĩr gọi là hệ trự c c huẩn nếu nó là hệ trư c g iao và các


vector đều có chuẩn bằng " 1 ", tứ c là lịi^rỊI = 1 , (r = 0, r n ) .
5. Phương pháp bình phương tối thiểu... 181

Vây nếu chon {y>r}r=õrũ là hệ trực giao thì từ hệ phương trình chuẩn
(5.38) ta có ngay
ĩỉk = .^■"Pk\ . k - Ữ7m. (5.44)
\'pk-pk\

Thay ãk (k = 0, Vĩ) vào (5.43) ta được

(íRẵưi)
1/ 2

(5.45)
fc-0 II-pkI
Từ (5.45) ta thấy khi rn tăng thì ã rn giảm. Vì vậy, khi tính ỡ rn có th ể tính
dần từng bước từ III = 0,1,2,... Giả sử tới bước thứ k = III ta thu được
ỡk < e (theo mong muốn) thì dừng quá trình tính. Còn nếu ỡk > £ thì
ta tính tiếp bước thứ m — k + 1. Khi tính đến bưóc thứ rn — s sao cho
ỡs < £ (s > k), ta dừng quá trình tính.

5.6 Trường hơp hệ cơ bản là hệ đại số


Xét hê
pj ( x) = XJ , J = 0, III (m < n —1).
Bài toán trỏ thành tìm Ọj, (j = ờ, m) sao cho

p{x) = prn{x) = ỵ 2 aJxJ (5.46)


j=n
chính là đa thức bậc m (vì hệ {l..T,.r2, .. ., .Tm} là độc lập tuyến tính).
Các hệ số nj dược xác dịnh từ nghiệm của hệ phương trình chuẩn (5.38).
Trong trưồ ng hơp này ta có

[ỉ/.v’«] = Y^ỉỉiVÁri) = YJĩhx’


j=l 1=1
Ị^rt^íỊ = 'y Pr(Xj)'ps{xt) = x.ị
j=l i=l
Khi đó, hệ phương trình chuẩn trỏ thành

nao + E "=1 X-Ia \ + E "=1 x ĩ a i + •••+ E ,"=1 x T a m = E "=1 Vi

<
E?=1 W o + E"=1 x ĩ m + E?=1 x ĩ ” 2 + •■■+ EỈU * r+1flm “ E?=1 W ' i

e ;*=i .t> 0 + E"=1 + e ;Li x T + 2 a 2 + • ••+ E?=1 = e ;*=i V ix ?


(5.47)
182 Chương 5. Phép nội suy và xấp xi hàr

Giải hệ (5.47) ta đươc n k k — 0,111. Từ đó suy ra /"(.r) % p(x)

trong đó
m
pm(x) - Y ^ ã kr k. (5.48
k-0
là đa thức bậc 7/ĩ.

5.7 Trườ ng hdp hộ cớ bản là hê lượn g g iác


Trong thưc tế, nhiều kh i ta gặp h àm /(.ỉ ) có tính ch ất tuầ n hoàn, hàn
xấp xỉ cũng cần mang tính chất đó, nghĩa là tìm pịx) ~ f(.i) và p(.i ) õ
dang tuần hoàn. Trong trường hơp này, ta chọn hàm xấp xỉ là đa thứ
lương giác cấp k:
k
Tk{x) —an + ^2 (ar cos I X + sin rx) (5.49
r=i

tro ng đó a 0. í * r , (' 1 . k) là các tha m số cần xác đinh .

Rõ ràng Tk{x) có dạng của đa thức suy rông III = 2 k với hê cơ bàn là

<A>=1 ; <Pi(*) cos .r; p2{x) = sin .7:----


ự>2r-i(x) = cosrx ; p 2r{x) = sin r x ----
p 2k-\{x) - c o s Ả p>2k(x) - sin kx.
Dỗ thấ y hệ trê n là hê độc làp tu yế n tính . Các tích vỏ hướ ng tron g h<
phương trìn h chuẩn (5.38) sẽ là
n n
bo. *?()] y l 2 - n; Ịy.ipol = Ty,]
1=1 1=1
' n
53 r o s j = 2p - 1 __ ____
bo- -pj\ •V , p - l,fc; ì.2k
¿sin/Wj, 7 = 2p
ti=l
r
i
53 cos TXị c o s px.ị. ( = 2r — 1; //— 2p
i= l
n
{'Pti'pj\ 53 sin rxicospXị, c- 2 r; j = 2p - 1
i= 1
n
53 sinr.TjSinp.rj, t= 2r; j = 2p
1 1
' n
53 7/i cos px,, j = 2p - 1
'n
53 //, sin pxị. ;j - 2p.
1 = 1
5. Phương pháp bỉnh phương tối thiểu... 183

Từ đó ta có hệ phướng trình chuẩn


k ( Tì 71'Ị n
m>(, f X]1 ,Ỷr X] cos rx' +
r I1 1=1
X! s' n rj >í
1=1 J

1=1
ĨI k ( 11 n
no Y c o s pXị 4- £ « r X I C0S r x i C0S /'•' » + /Y X sin rxj cospXị ỵ, Uicosp.i,
1=1 r=1 l j=l i= i=l
(5.50)
n k( n n ri
('Vo ^ sin p.r, + x^ ì a T E co s r.r, sin px, + t% XI sin rxisin pXị > — x^ //í si
1=1 r=l l 1= 1 1=1 J 1=1
p = 1 .2 ........... fc.

Hệ (5.50) gồm 2Ẳ; + 1 phương trình , 2 k + 1ẩn là ao, a r, Pr, I' 1. Ả. Giải hệ
trên ta thu được ã 0.7Ir. flr và do đó ta có
k
/(.r) « Tk{x) —7>0 + X^ õ r cos r.r + ftr sin r.T (5.51)
r=i

Chú ý 5.4. Nếu tâ p hợp các mốc . , e (0. 277ịcách đều nhau, khoảng cách 1

‘V
h= —II
, tức là Xị = i / í , ỉ = 1,«. Trong trường hơp này ta có

! eos ra:, = 53Í*=1 SĨ117M;, = 0

£ ’=, co s r.r, sin px-i = 0 , r = 1 , k, p = l,fc


E !‘=,ịcos rXị cos px, — 5Z"=1 sin r.T, sin /).r, — 0 , /) ^ r ; p, r - 1 . Ẳ-


, , . tl
£ ? = , 1 c o sr r x* = E - L , s i n r -' i - 77 . r - o .

Khi đó hê (5.50) trở nên đơn giàn hơn (chì còn các phần tử trên đườn^
chéo chính và vế phải của hệ).

Ví dụ 5.3. Cho bâng số //, % / (.7-,):

X 0.56 0.84 1.14 2.44 3.16


y -0 .8 0 -0.97 -0089 1.07 3.66

Hãy tìm hàm xấp xi theo nghĩa trung bình phương có dạng da thưc bậc
hai.
184 Chương 5. Phép nội suy và xấp xi hàm

Giải:
Ta tìm hàm xấp xì có dang p(x) — n0 + (iiT + o2.
r2.Theo hệ phưổng trình
ch uẩn (5.47) ta có:

5ùo + E?=1 4- Ef= 1 Ậ 2 = E?=1 ì/i


Ei=i X ị O o + Ei=i*?0i + £?=ir ?°2 = Ef=i -T.y.
Z Ï = iA ao + Ei=i s? «1 1Ef=i-rS = Ef=i

Lâp bả ng tín h các hệ số

Xi Vi A A A ■í,!lĩ Av>
0.56 -0.80 0.31 0.18 0.09 -0.45 -0.25
0.84 -0.97 0.71 0.59 0.50 -0.81 -0.68
1.14 -0.98 1.30 1.48 1.69 -1.12 -1.27
2.44 1.07 5.95 14.53 35.45 2.61 6.37
3.16 3.66 9.99 31.55 99.71 11.57 36.55

E 8.14 1.98 18:260 48.335 137.456' 11.791 40.710

Từ đó ta được hệ

5ũo + 8.14ui + 18.260f¿2 =1.98

« 8.14ao + 18.2600! + 48.335o2 = 11.791

18.260o0 + 48.335o, + 137.456o2 = 40.710

Giải hệ trên ta thu đươc o0 = 0; 0 , = —2; «2 = 1, từ đó

/(:r) «s p ( x ) — X1 —2x.

Sai số được đánh giá theo công thức (5.43):


/ 1 2 \ 1 /2 Ị

Ỡ2 = [Ậ E [Vi - V ( x , ) |2J = (ị X 0.00004),/2 = 0.0063.

Ví dụ 5.4. Cho bảng số

X 30° 60° 90° 120° 150° 180° 210° 240° 270"


y 2.611 3.102 2.912 2.105 0.612 -1.321 -1.906 -2.412 -2.802
6. Tìm hàm thực nghiệm theo phương pháp hình phương tối thiểu 185

300" 330° 360"


-2.703 -1.610 1.500
Hãy tìm đa thức lương giác cấp hai theo phương pháp bình phương tối
thiểu.
Giải:
Đa thức lương giác cấp hai có dang

T2[x ) — ao + «1 cos X+ «2 cos 2x + fi\ sin X+ 02 sin 2x\


, x 2ĩĩ
Các môc Xi 6 (0. 27rỊ cách đêu nhau, có bước /ỉ = — = 30°.
Từ hê phương trình chuẩn (5.50) và công thức (5.52) ta có hệ

12a0 = E !i, Vi
« l E ! ! , cos2 X i - E ,=1 >Mcos xt

«2 £Ỉ=1 cos2 2xj = E := l y. cos 2x


A E S i sin2 Xi = E , = 1 Vi sin Xi
02 E Ỉll sin2 2xi = E,=i.v.sin2x1

Lập bảng tính toán các hê số, sau đó giải hệ trên ta thu được đa thức
lương giác

T2{x ) —0.007 + 0.860cos.r + 3.004sin X- 0.021 cos2.r + 0.432 sin 2.T.

5.8 Chương trình Mat L ab


Bạn đ ọ c h ã y dự a t h e o v í dụ đ ể l ậ p c h ư ơ n g t r ì n h M a t L ab
cho phần n à y.

§6. T ìm hàm THực nghiệm theo


P H Ư Ơ N G P H Á P B Ì NH P H ƯƠ NG T ố i T H I ỂU

Phương pháp bình phương tối thiểu thường được dùng để tìm hàm
thưc nghiệm.
Giả sử cần tìm quan hệ hàm số y = f(x) theo quy luật đã được rút ra từ
186 Chương 5. Phép nội suy và xấp xi hàm

quá trình thực tiễn của công việc. Rằng thí nghiệm, đo đac ta thu dươc
bàng số
y¿ ~ /(-Tt) , I - TTñ.
Từ bàng số đó qui về việc đi tìm các tham số của các dang hàm đơn giàn
(đã biết), goi là các hàm số thưc nghiêm. Các dang hcàm thưc nghiêm
thườn g găp:

1. ý — a + hr ;

2. y — fì + b.r 4-O.T2;

3. y — a -ị- bx + C.T2 + r/.T:i;

4. y — a + b cos .T + rsin r;

5. y — aebx (a > 0);

6 . y - axh- (-a > 0 );

Trong ba dcing 1, 2 và 3 thì hệ cơ bàn chính là hê đại số đã xét trong mục


5.6. Với da ng 4, hệ cơ bả n là hệ lương giác đã đươc xét tro n g m ục 5.7. Các
dang 5, 6 có dạng phi tuyến đối vói các tham số n, b cần tìm.

6.1 Hàm thự c n gh iệm d ạ n g y = aehx, (a > 0)


Vấn đề đăt ra: Từ bảng số y, RS f (-Xi) , / — l.n; hãy tìm hàm thuc
nghiêm trong dạng y = aebx.
Do hàm số có dạng phi tuyến dối với các tham số a và b nên c ần thiết tìm
cách biến đổi để đưa về dang tuyến tính .
Từ
y = arbx. (5.53)

lấy lôgarít hai vế ta dươc

lgy = lgn t bxìgt. (5.54

Đ ăt
Y — lg y; A —lg a: lì — (dgc; X — X.
6. Tìm hàm thực nghiêm theo phương pháp bình phương tối thiểu 187

Từ (5.54) ta suy ra
Y - .1 + 13X (5.55)
là dạn g tuy ến tín h đối vói /1 và lì và hài toán được đặt lai như sau:
T'im A và lĩ, xu ất ph át từ hảng số

~ lg;v, = lg (/(*■,■)) = igf(X¡) = F {Xi ) , vói X, = Xi, i = TTi. (5.56)

Cách tìm A và lì bằng phương phcáp bình phương tối thiểu chính là dang
1 đã xét trong muc 5.6. Từ đó suy ra

a= lo'4; b = -— , ( l ge w 0.43429).
lge

6.2 Iĩàm thực nghiệm dạng y = axb, (a > o, X > 0)

Hoàn toàn tương tự như trên, lôgarít hai vế ta thu được

lgy = lga 4 b \ g x .

Bằ ng cách đổi biến

Y — lgy; A = lgn; 13 = b: X = lgx,

ta thu dươc bảng số Yị = lg Di, X, = lg.r, hay

Yi*iF {Xi), i = TT7Ĩ. (5.57)

4’ừ (5.57), tìm hcàm thực nghiệm dưới dang:

Y - A + BX. (5.58)

Bằng phương pháp bình phương tối thiêu ta thu đươc A. 13 và từ đó suy
ra n. b.

Chú ý 5.5. Ccà ha i trường hợp trên đều dẫ n đến d ạn g tuy ến tính , cho nên
khi tìm A, B xuất phát từ bảng số X và >', nghĩa là các điểm M, (Xị. lgy.)
dược phân bố gần nh ư nằm trên một đường thẳ ng thì quan hộ giữa X và ỊJ
có dang Ị/ — nebl. Tương tự, nếu các điểm (lg T,, lg I/,) có phân bố gần như
trên đường thẳng thì quan hệ giữa Ị/ và r có dang y - axb.
188 Chương 5. Phép nội suy và xấp xi hàm

Chú ý 5.6. Các trường hợp tìm dạng hàm xấp xỉ trong dạng đa thức vỏi
hệ cơ sỏ đại số hay lương giác hoăc các dạ ng phi tuyế n có k h ả n ăn g tuyế n
tín h hóa được là do các địn h lu ậ t vât lý, hóa hoc gơi ra. T rườn g hơp không
thể biết gì về quan hê giữa y và X, khi đó ta phải làm thí nghiệm nhiều
lần để loại bớt các kết quả vô lý, sau đó biểu diễn các căp số (.Tj. ỉii) thành
những điểm l\ĩ, trong m ặt phẳng tọa độ Oxy, ta suy ra d ang hợp lv nh ất
của quan hệ hàm số giữa X và y .

Để m inh hoa cho các chú ý trên, ta xét ví dụ sau.

Ví dụ 5.5. Cho bảng số


t 14.5 30.0 64.5 74.5 86.7 94.5 98.9
k 0 0.004 0.018 0.029 0.051 0.073 0.090
có được từ mối liên hệ của suất dẫn điện k của thủy tinh phu thuôc vào
nhiệt độ t (tính theo °C). Hãy tìm công thức thực nghiệm của hàm số

Giải:

Ta đá biết quy luật suất dẫn điện k của thủy tinh không thể biểu diễn
trong dạng đa thức hay lượng giác. Các điểm .1/, lgk , ) , I — 1.7, trừ

điểm đ ầu tiên, nói chung nằ m trên một đường thẳn g. Cụ thể ta có bảng
số sau:
t 14.5 30.0 64.5 74.5 86.7 94.5 98.9
\gk — -2.3979 -1.7447 -1.5376 -1.2924 -1.1367 -1.0458
Vây quan hệ có dang k = aebt hay

lgẢ,- = \ g a + bt lg e.
Đặt Y = lg k, A = lg a , B = b lg t ta được

Y = A+ Bt.

Giải hệ phương trình chuẩn theo (5.47) ta thu đươc A = 0.00335; B


0.01965, từ đó suy ra

a — 10no = °
10 00335= 1.00 774,
0.01965
b = 0.04525.
\gc 0.43429
7. Bà i tâp 189

Tóm lại ta có:


k = 1.00774c°04525<

6.3 Ch ươn g trình Ma t L ab

B ạ n đ ọ c hãy dựa theo v í dụ đ ể l ậ p chương trình MatLab


cho phần n àỵ .

§7. BÀI TẬ P
Bài tập 5.1. T hà nh lập đa thức nội suy Lagrange từ b ảng số sau:

X 2 4 6 8 10

y = / (* ) 0 3 5 4 1

Bài tập 5.2. Tìm đa thức nội suy bậc hai của hàm y —3Xtrên [—1, lị, từ
đó suy ra giá trị gần đúng của \/3.

Bài tâp 5.3. T ính gần đú ng giá tri / (323.5) bằng đa th ức nội suy L a-
grange từ bảng số sau:

X 321.0 322.8 324.2 325.0


y = / (* ) 2.50651 2.50893 2.51081 2.51188

Bài tập 5.4. Xây dựng đa thức nội suy Lagrange trong trường hợp các
mốc nội suy cách đều.

Bài tập 5.5. Ap dụ ng k ết quả bài 5.4, tính giá trị hà m ụ = cosx tại điểm
X — 5.437 từ bả ng số sau

X 5.0 5.2 5.1 5.3


y — cos X 0.283662185 0.377977743 0.468516671 0.554374336

5.4 5.5 5.6 5.7


0.63469287 0.70866977 0.77556587 0.83471278

Bài tập 5.6. Khi tính v/TĨ5 bằng đa thức nội suy Lagrange đói VỚI hàm
y - ự x ta i các mốc Xo — 100; Xi = 121; x 2 = 144 thì đạt sai số là bao
nhiêu?
190 Chương 5. Phép nội suy và xấp xỉ hàm

Bài tập 5.7. Cho giá trị của hàm số


3.r — r3 X2
y= a r d a n ------ - — 3a r d a n .
ỉ'+ — (21n.r — 3)
1 —3./:2 I

trong dang bảng số sau:

X 58 58.34 58.68 59.02 59.36 59.7


y 4303.52 4364.11 4425.17 4486.69 4548.69 4611.16

Xây dưng công thức nội suv Newton tiến và tính gần đúng giá trị của Ị)

tại X —58.17.

Bài tập 5.8. Từ bảng số

X 6.3 6.72 7.14 7.56 7.98 8.4


V 21.4259 23.377 25.3622 27.3831 29.438 31.5253

Hãy xây dưng đa thức nôi suy đê tính giá trị gần dũng của hàm tai điểm
X — 6.5 ĩ.

Bài tập 5.9. Hăy xây dưng đa thức nôi suy xấp xi hàm ỊI — (■■' trên doan
[3.5; 3.7 đươc cho từ bảng số sau:

X 3.50 3.55 3.60 3.65 3.70


y = ('x 33.115 34.813 36.598 38.475 40.447

Bài tâp 5.10. Giá tri của tích phân xác suất

dl

đươc cho tron g b ản g sau

X 0.46 0.47
0.48 0.49
ụ 0.4846555 0.4937452 0.5027498 0.5116683

Hãy tìm X sao cho y - (nội suy ngược) bằn g đa thức nội suy Lag rango .
7. tìài tập 191

Hài tập 5.11. Cho bàng giá trị của tích phân xác suất (trong bài tâp
5.10)
r I 0,15 0.46 0,47 0.48 0.49 0.50
I/ I 0.475818 0.4846555 0.4937452 0.5027498 0,5116683 0.52049999

Tìm X sao cho ÌJ — - bằng công th ức lãp.

Hài tập 5.12. Sử dụ ng các giá tri của hàm ụ lg X cho bởi

X 20 25 30
// = Ig 1.3010 1.3979 1.4771
tìm ./• sao cho y — 1.35 theo công thức nội suy Lagrange và công thức lặp.

Hài tập 5.13. Cho bảng giá tri cùa hàm Betxen Ju(x ):

X 2,4 2,5 2.6

y 0.0025 -0.0484 -0.0968

Tìm nghiệm của phương trình ./(,(:/:) 0 trong khoảng (2.4; 2 .6 ) có độ


chính xác đến 10 3.

Hài tập 5.14. Tìm hàm thực nghiệm dạng

F(x) = (Iqx + dịX I n


2 2

bằng phương pháp bình phương tối thiểu từ các bàng số sau
X í 8 9 10 11 12 13
!) 3.1 4.9 5.3 5.8 6.1 6.1 5.9

X 0.78 1.56 2 34 3.12 3.81


u 2.50 1.20 1 12 2.25 4.28

X -3 _2 -1 10 2 3
ụ -0 .7 1 4.9 f .3 5.8 6.1 6.1 5.9
192 Chương 5. Phép nội suy và xấp xỉ hàm

Bài tập 5.15. Tìm hàm thực nghiệm dang s — nrhT bằng phương phíáp
bìn h phương tố i th iểu từ bảng số

X 0 2 4 6 8 10 12
s 1280 635 324 162 76 43 19

Bài tập 5.16. Tìm hàm thưc nghiệm dang s nxb từ bàng số

•T 1 2 3 4 5

V 7.1 15.2 48.1 96.3 150.1


CHƯƠNG

Đ ạo h à m , t í c h p h â n và

PHƯƠNG TRÌNH VI PHÂN

§1. T ính đạo hàm


IIlỀU bài toán kỹ thuật đòi hỏi phải tìm đạo hàm của hàm số

N tai điểm nào đó. Trường hơp biết y = f ( x ) nhưng /(.r) có dang
là biểu thức khá phức tap thì việc tính y' (x) = / ' (x) cũng gặp
nh iều khó kh ăn . Củ ng có trườn g hơp ta chi có bả ng số y t = f (x t) , r — 0, n
(chẳng han, cần tìm vân tốc, gia tốc của chuyển động .s = sịt) nào đó, từ
bảng số Si = s ((,), i = 0, rì). Khi đó việc tính chính xác y' (x) là vô nghĩa.
Dể khắ c p hục khó kh ăn trên, người ta thường sừ dụ ng đa thức nội suy.

1.1 Tính đao hàm nhò đa thức nòi su y Lag ran ge

Từ bảng số
Vị = / (•t j ) > j = 0 , 7i, ( 6 . 1)

theo công thức nội suy Lagrange trong tiết 2, chương 5 ta có


n

f(x) ĨZ pn(x) = E LÁ*)vp ( 6 . 2)


j =0

trong dó
{x - x0).(x - X i ) . . .{x - Xj-i)( x - xj +l ) . . .( x - x„) _ 7T -
Li(x) = - - • ----- -— _ . \ f - ~ t -- T-- / 3 = 0. n.
[Xj - ■'■o).(.TJ - .Ti)... (Xj - Xj. I )(Xj - Xj+i ) . . . (Xj - xn)
(6.3)

193
Chương 6. Đạo hàm, tích phàn và
194 ph ương trình ui phản
Từ đó ta suy ra
f'{x) « p'n(x) = ]T L]{x)yr (6.4)
j=0
Sai số
R'n(x) = f ' ( x ) - p ; t(x). (6.5)
Từ (6.4) ta cũng có th ể tín h các đao hàm cấp cao f"(: x),...

1.2 Trưòn g hợp các mốc nội suy cách đ ều n hau


Theo công thứ c nội suy New ton tiến (5.19) ta có

f (x ) « Pfi(X) = pn (xo + ht) = V(t)


t(t — l) • • ■(t — n + \)
= Ưo + ỶỵAyo + A 2y0 + • • • + A"y0,
n\
( 6 . 6)

trong đó
lì — X í + 1 — X j V?' = 0 ,n - 1 ; X = .ru f / ư .

Vậy

/ ' ( x ) » 7^(x) = r't .t'x = ị p ' ( t )

= ^ỊAyo + ^ ^ A 2yo + ---]. (6.7)

Sau đây, ta xét một số trưồng hơp riêng.

1.3 Trưòng hợp n = 2


Trong trưòng hơp này ta có 3 mốc nội suy X o, X i , x 2 và các giá tri hàm
tương ứng là y, = f (x<), i = 0 , 1 . 2 .
Từ (6.7) ta có

f \ x ) w Pá(x) = |[A y 0 + — A 2y0]

= ^[(yi - yo) - [t - ị ) (yo - 1 y\ + y2)]. ( 6 .8 )

trong đó í — -———.
h
Đặc biệt, khi cần tính đạo hàm tại các mốc nội suy x0. Xi . x2:
1. Tính đạo hàm 195

1. Khi X — x0 => t. = 0, thay vào ( 6 .8 ) ta đươc

/ (xo) ~ 2r (_3ụ° + " y*) ■ (6.9)

2. Khi .r —.Ti => t. = 1 t h ì

/ (x'l) ~ 7ỊT (~yo + 3/2 ) • (6 .10)

3. Khi X —.r2 => t = 2 và ta có

/ (x2) « 2^ (yo - 4.1/1 + 3y2) . ( 6 . 11 )

Từ công thức khai triển Taylor, các công thức (6.9) - (6.11) đạt số cấp
0 (/i2).

1.4 Trư ờn g hơD n = 3


Ta có 4 mốc nội suy là X0,Xi,X2 .X3 . Theo (6.7) ta đươc
l fA
, 2/-1.2 3t 2 6í + 2 3 — ,

/ (x) ~ P-Áx) = ^[Ayo + — A y0 + -------22----- A 3y0Ị ( 6 . 12 )

... X - Xo
voi t — —-— — .

h
1. Khi X- = £0 => t. = 0 và ta có

/ (x0) ~ P 3 (.To) = — ( -ll y o + 1%) - 9y2 + 2y3) (6.13)


0/1

2. Khi X = Tj => t = 1, ta có

/ (Ti) w P 3 (x-i) = -1- (—2yo - %1 + 6y2 - ĩ/3) (6.14)

3. Khi X = x 2 => t —2, ta có

/ (x2) « P 3 ( t 2) = (yo - 6yi + 3y2 + 2 y3) (6.15)


6/ỉ

4. Khi X = x 3 => t — 3, ta có

/ (t 3) w P-i (*3) = 77 ( - 2yo + 9;Vi - 1%2 + 11373) (6.16)


6/i
Ch ương 6. Đạo h àm , tích p hâ n và
196 phương trìn h vi p hân

Trong trườn g hơp này sai số đạ t cấp o (/í3).

Chú ý 6.1. Nếu lấy số mốc nội suy là 5 , 6 , . . theo công thức (6.7) ta có
công thức tính đao hàm đat sai số cấp cao hơn, song công thức sẽ phức
tap hơn. Tùy theo công việc cần thiết mà chon công thức thích hơp.

Chú ý 6 .2 . Công thức (6.7) x u ất p h át từ công thứ c nôi suy Newton tiến,
vì vậy nó thuân lơi khi tính đạo hàm tại điểm X > .T o, gần T (ỏ đầu bảng 0

sai phân).

Chú ý 6.3. N ếu xu ất p h á t từ công thức nội suy New ton lùi (5.21), ta
cũng có công thức tính đao hàm tương ứng. Các công thức đó sẽ thích
hơp cho việc tính đao hàm tai X < xn và gần với xn (cuối bảng sai phân).

Chủ ý 6.4. Khi cần tính đao hàm tai điểm X gần X ị (giữa b ản g sai phàn),
ta xét hai khả năng. Với X > X i , ta sử dung công thức (6.7) và xem X , là
T o - Còn nếu X < X i , ta có thể sử dung công thức tính theo chú ý 6.3 và

xem Xị là xn.

Ví dụ 6.1. Tính gần đú ng / (55) của hàm f (x) — lgx cho từ bảng số

X 50 55 60 65
f(x) = \gx 1.6990 1.7401 1.7782 1.8129

Giải
0 dày có bốn moc nội suy là Xo = 50 -» Xị — 65; h. — 5. n 3 và ta cần
tính /' (t ị ) với X\ = 55. Theo công thức (6.14) ta có

/'(55) « — (-2 X 1.6990 - 3 X 1.7401 + 6 X 1.7782 - 1.8129) - 0.007933.

Bằng cách tín h trực tiếp ta được / '( x) — (lg x)' = ———, suy ra

/'(55) = 0.18182 X - = 0.007896.


J lnio
Hai kết quả trên trùng nhau tới ba số lẻ sau dấu
2. Tính gần đúng tích phân xác định 197

§2. T í n h g ầ n đ ú n g t í c h p h â n x á c đ ị n h

2.1 Mở đầu
Già sử f (x) là hàm số liên tuc trên đoan \n,h} có nguyên hàm là F(x),
khi đó giá trị của tích phân xác đinh trên đoan a,b} đươc tính theo công
thức Newton-Leibniz:
b

/ = J f(x)dx = F(x)\b= F{b) - F(a). (6.17)


ã

Tuy nhiên trong nhiều trường hợp có F(x) là nguyên hàm của hàm f(x)
không phải là hàm số sơ cấp hoặc F(x) có biểu thức quá phức tạp. Khi
đó giá trị của tích ph ân / chỉ tìm dươc là số gần đ úng. T rong trườ ng hợp
hàm số cho trong dạng bảng số thì khái niệm nguyên hàm không còn ý
nghĩa gì nữa.
Bài toán tìm g iá trị củ a tích ph ân xác đinh trong toán học tính toán nghĩa
là giá trị I đó được tìm thông qua giá tri của hàm số f(x) dưới dấu tích
phân tai m ột số điểm th uộc đoạn [rt, b]. Phương pháp đơn giản nhất để
giải quyết bài toán trên là dựa vào ý nghĩa hình học của tích phân xác
đinh và từ bả ng số í/, —/ ( X ị ) , i = 0,rí, ta xây dưng đa thức nội suy <p{x).
Từ đó ta có
6 6

/ = J f{x)dx « Ị <p(x)dx. (6.18)


a a

Sau dây ta xét một số dang công thức mà tính toán khá thuân lợi trong
thưc tế.

2.2 Công thứ c hình thang


2.2.1. T rư ờ n g hợp đ oạ n |a. b gồm hai m ốc nội suy

Giả sử Xo — n. .T; — b\ h — b —a, khi đó

.vo = / (a- n) = / ( a ) ; .V, - /•(./•,) - f(b ).


Chương 6. Đạo hàm, tích phân và
198 phương trình vi phân
Áp dung công thức nội suy L agrang e t a có

f{x) S3 p i(.r) = L (x)y


0 0 4 L\(x)yx
X — X\ X — X q

Xo - Xi
-yo + - — — - 2 /1
X-l - -To

Từ đó suy ra

/ = Ị f( x ) d x « ĩ i Ẽ - ^ - y o + ^ - z p - V i ] d x
J J X o - X\ x x - Xo
a lo
y° ( . .—X\)
(xo . 4-
, 2 /1
(xi - X o)
2 (x 0 - X i) 2 (xi - X o)
1
2 (3;1 - ®o) (,7o 4- 2/1 )!

hay

ỉ = I f(x)dx S3 ^ Ị/(a) 4- / ( 6)]. (6.19)


a

về mặt hình học, công thức (6.19) chính là công thức hình thang (hình
6 . 1).

Gọi
/• = ^ !/(<■) + /(4)]
2. Tính gần đúng tích phân xác định 199

thì sai số
b _
R = 1 - r = J f(x)d x - [ /( „ ) + f(b )).
a

Người ta đã chứng m inh được rằng, nếu f(x) là hàm số liên tục và có đạo
hàm liên tục đến cấp hai trên đoạn a, b đồng thời M2 = max I f"{x) I thì

I= r +^f(b -n )\ ce(a, b).

Khi đó ta có
\R\ = \ l - r \ < ^ ( b - a f . (6.20)

2.2.3. C ông thức hình than g tổng quát

Từ công thức (6.20) ta thấy, nếu h —b — n lớn thì sai số sẽ lỏn, nên
để đươc sai số bé theo mong muốn thì lì phải bé. Để khắc phuc điề u đó,
người ta dưa vào tính chất khả tổng của tích phân xác định, chia đoan
Ịa, b} t h à n h n p h ầ n đều n h au có khoảng cách là h — ----- — bỏi các điểm
chia
a = X 0 < X i < ■• ■ < x n = b, h = a.'j+i — Xi, i = 0, n — 1.

Vậy
6 x„

I = Ị f(x)d x = j f{x)dx
á Xo

= J f(x)dr + 1 f{x.)dx + •••+ J f{x,)dx (6.21)


XO X\ Irĩ-1

Áp dung công thức (6.19) cho n tích phân trong vế phả i của (6.21) ta th u
đươc

I = / f(x)d x « ^ [/(.To) + / (-^1)]+ 2 + + ' ••9 í/ (xn -l) + / (Tn)]


a

hay
/ w /* — 2 l(y° + Vn) + 2 (ỉ /l + ỉ /2 + -------T ỉ / n - 1 )] , ( 6 . 22 )
Ch ương 6. Đao hàm, tích phàn và
200 ph ương trìn h vi phân

trong đó h = -— —; xji — J' ( xi ), i= 0.n.


n
Công thức (6.22) gọi là công thức hìn h tha n g tổn g qu át và ta có công thức
đánh giá sai số
\R\ = Ị/-7*1 < ^ l ( b - a ) . h 2. (6.23)

trong đó
M2 = max |/"(. ỉ;)| ; h =

Từ b ấ t đẳ ng th ức (6.23) ta thấy: Để | / —/*Ị < e, chì cần c hia đ oan ịa.hị


t h à n h n đoạn sao cho thỏa m ãn b ất đẳn g thức

Ạh M 2 (h - n )3
(b —a)h 2 < E,
12 12 n2

từ đó suy ra n — — )I/21 + 1 (với ký hiệu Ịa] là phần nguyên của


số thực n).

2 .2 .4 . T h u ậ t t o á n
b h_
Từ tích phân / = y f (x )dx đã cho ta xác định Tì, tính /ỉ = ----- —và các

điểm chia

n = Xo < Xì < ■■■ < Xn — h, h — X ị+\ —X i , i — 0, n — 1.

Tiếp đó, tín h


Vi = ĩ{*i)> »=^Tn (6.24)

thì
b ,
ỉ —J f ( x) dx ~ /* = — [(.Vo + Vn) + 2 ( yi + ụ2 + • • • + ,Ợn- i)] • (6.25)
a

Sai số được đá nh giá theo công thứ c (6.23).

Ị dx
Ví dụ 6.2. Tính theo công thức (6.25) tích p hâ n ỉ = Ị [ — sao cho đat

sai số < 0.002 .


Giải:
2. Tính gần đúng tích phản xác định 201

{h - n )I2 M 2 M2{b - a )3
Để |/ - /*| < < 0.002 thì cần chon n +
12 ~n> 12 X 0.002

trong đó b —n\ — 1 ; M2 — max — max < 2.


( , ] I v 'I
16 0 1 TPfo.il
xe[0,l] (1 + t )3
Vây n = 10 =» h = 0 . 1 .
T ín h / ( . T i ) —— ——vói X i — ih, i - 0.10, sau đó thay vào công thứ c (6.25)
1 + Xi
ta th u đươc

- / - ^ = 0.69377 ± 0.002.
J 1 + X
0

2 .2 .5 . C h ư ơ n g t r ì n h M a t L ab

function I = trapezoid (fun,a,b,npanel)


% trapezoid Tinh gan dung tích phan
% theo cong thuc hình thang
% Cu phap: I = trapezoid (fun, a, b, n)
%

% Input: fun = (string) Ten ham


% a, b = Cac can cua tích phan xac dinh
% npanel = so doan chia
%

% Output: I = gia tri gan dung cua tich phan


n=npanel+l; % So diem chia
h = (b-a)/(n-l); % Buoc
X = a :h : b ;
f = zeros (size (x));
for i=l:n
f (i)= f e v a l (fun, X(i)) ;
end
I = h * ( 0.5 *f (1) + sum (f (2:n-1)) + 0.5*f(n) );
Chương 6. Đạo hàm, tích phản và
202 phươ ng trình vi phân

2.3 Công thức Sim pson

2 .3 .1 . T r ư ò n g h ớ p 3 m ố c n ộ i s u y

Xét trường hơp đoạn Ịn, b) gồm 3 mốc nôi suy là


a+b b —a
Xo = a, Xi = x 2 = 6, h = ——

Tại các mốc nội suy Xi, i = 0 ,1,2 ta có bản g số

Vo - f (xo), Vì — f (.X'i), ĩ/2 = / (x'2) •

Từ bảng số trên, áp dụng công thức nội suy Nevvton tiến vói X Xo + /í/
ta th u được

f ( x ) « p 2 [ x ) = p 2 (x o + h t ) = p 2 (t)
Ayo , A2í/o
—yo + -yp-/ 3— 21 <(í - !)■ (6.26)

Từ x — . x o 4- /lí ta có
b *2 2 2

I = J ĩ(x)dx = J f(x)dx « j [ y 0 + Ay0/ + — ^ / ( í - l)]/j ( ỉ t


2

ã Xo 0

= - £ )]

-fc[2 « , + 2Aito+ ^ ĩ ( ? - 2 ) | . (6.27)

Mặt khác, do
Ay 0 - ĩ/1 - yo, A 2y0 = yo - 2 yi + y2
nên thay vào (6.27) ta thu được
b x ĩ
ỉ = Ị f { x ) d x = J f { x ) d x w - (yo + 4yi + y2) =: /*. (6.28)
a ¿0

Công thức (6.28) được goi là công thức Simp son (h ình 6 . 2 ).
Sai số
2. Tính gần đúng tích phân xác định 203

VỚI giả thiết hàm số f(x) là hên tục, có đạo hàm liên tuc đến cấp 4 va
/ (,,)(.r)| < M.I V.T € [a. b] thì sai số đươc đánh giá theo công thức

I (6-29)

/(*)

/(«)
P2(x)

/(&)

o & (1 -Ị- b 1) X
2

H ình 6.2
2.3.2. Côn g thứ c Sim pso n tổn g quát

Để sai số đat độ chính xác cao, tưong tự như đối vói công thức hình
thang, ta cùng chia đoạn [a, b} thành ii đoan b ằng n ha u (vì mỗi đoạn cần
2

:i mốc nội suy) bỏi các điổm chia


a = Xo < Xi < x2 < •••< x2„ _ 2 < X2n-l < x 2n = b, h = —— .

Tại các điểm chia trên ta cổ bảng số

Vi = / (X ị) , i = 0, 2n . (6.30)

Khi đó ta có

/ = / f ( x ) d x = Ị f(x)dx = Ị f(x)dx + Ị f(x)dx + ----- f [ f(x)dx


a 10 ¿0 ¿2 X2n-2

~ ị(y0 + 4?/i + y2) + (ịẹ/2 + 4ị/3 + yì) + ----- h (ĩ/2n-2 + 4t/2„_l + ỉ/2n)]
Chương 6. Đạo hàm, tích f)hãn và
204 phương trìn h vi ph ân
hay

I ~ ĩ* — 'ỹ [C ĩ/ O + . V 2 n) + 2 (ỉ/2 + ?/4 + ■•• + ịl7n-l) + 4 (;í/i + t/:ị + • • • + ?/2n-l )] •


(6.31)
Công thứ c trê n đươc gọi là công thức Simpson tổng qu át. Công thức đá nh
giá sai số
(6.32)

trong đó
¥4 = max \ r \ x ) ị , h=
iẽ[a>]r ' ln

Từ công thức (6.32) ta thấy, để sai số tuyệt đối Iĩ - /* I < £ thì số mốc cần
chon
lf> X 180 X
n — + 1
Mị(b —(i)5

và ta có 2n + 1 mốc là ,T0, X j, — r 2n.

} dx
Ví du 6.3. Áp dung tính gần đúng ỉ — - ■= the o công th ức Sim pson
./ 1 + X
-
0
tổn g q u á t vói (6.31) n = 5.
Giải:
Do n — 5 nên suy ra h = ~ = 0.1. Tiếp theo, tính

1
Vi = / (x,) = 7 - 7 - 3 , X'i = í/i. / = 0 , 10.
1 + X,

Vây

c = ^ Ị(?/o+ ỉ / 1 0 ) + 2 (ỉ /2 + ỉ/4 ■+ ỉ/6 + ys) + 4 (ĩ/1 4 y34 ?y54 y7)j


= 0.7854648.

Bằng cách tính trực tiếp ta thu được

arctan T - = 0.78539816.
0 4

Sai số đat đươc là 0.0085%.


3. Giải gần đúng phương trình vi phân (bài toán Cauchy) 205

Từ công thức hình thang và công thức Simpson ta thấy, nếu lấy nhiều
mốc nôi suy hơn (công thức Newton-Cotes) thì sẽ đạt đươc sai số cấp
cao hơn, song công thức sẽ trỏ nên phức tap hơn (xem [5]). Vì vậy, trong
thưc tế người ta thư òn g sử dung hai loai công thức tổn g qu át là ( 6 .2 2 ) và
(6.32).

2.4 Chươ ng trì nh M at L ab


function I = simpson (fun,a,b,npanel)
% simpson Tinh gan dung tích phan theo cong thuc Simpson
% Cu phap: I = simpson(fun,a,b,npanel)
% Input: fun = (string) Ten ham
% a, b = Cac can cua tích phan xac dinh
% 2*npanel = So doan chia
% Output: I = Gia tri gan dung cua tích phan

n = 2*npanel + 1; % So diem chia


h = (b-a)/(n-l); % buoc
X = a :h :b ;
£ = z e r o s ( s i z e (x));
fo r i = l : n
f (i)=f eval(fun,X (i));
end
I = (h/3)* (f(l)+4*sum(f(2 :2 :n-1))+2*sum(f(3:2:n-2))+f(n))

§3. G iải gần đúng phường trình VI PHẢN


(BÀI TOÁN CAUCHY)

3.1 Mở đầu
Trong toán ứng dụng, ta thường gặp rất nhiều bài toan trong dạng
phương trìn h vi p h ân và cần phải tìm nghiệm của phương trìn h đó. Ta
dã biết trong giáo trình phương trình vi phân, chỉ tìm được nghiệm giải
Chưitng 6. Đ aohàm, tích phân và
206 phươ ng trình vi p h à n
tích của lớp phương trình rất hẹp; nói chung không có khả nàng. Vì vậy
buộc phải tìm nghiệ m của chúng trong dang gần đúng.
Trong phần này ta giỏi thiêu môt số thuât toán tìm nghiêm gần đúng
thường đươc dùng trong kỹ thuât đối với bài toán Cauchy, còn đối với
dạng phương trình đạo hàm riêng sẽ đươc nghiên cứu trong giáo trình
khác.

3.2 Bài toán Cauchy

Bài toán: Tìm liàm y = y(x) là nghiêm của phuơng trình

y(n) = F(x, y, ý . • •• , i/" -» ), Xo < I < X (6.33)

thỏa m ãn điều kiện

y (ar0) = yo, ý (xo) = Vũ ■■•; y {n~l) (xo) = Vn-1 - (6.34)

trong đó IJ0, y i , . . . , y n- 1 € K và ,T0 € R là các số đã cho.


Bài toán (6.33), (6.34) goi là bài toán Cauchy cấp n (cấp cao n h ấ t của đao
hàm có mặt trong phương trình). Điều kiện (6.34) đươc goi là điều kiên
ban đầu (hay sơ kiên); đồng thời già th iết hàm vế phải F thỏa mãn các
điều kiện cần thiết để bài toán Cauchy tồn tai duy nhất nghiêm.

3.3 Phương pháp giải bài toán Cauchy

3.3.1. C ông thứ c E uler

Xét bài toán Cauchy cấp một:


Tìm hàm y — y( x) là nghiệm của bài toán sau

ý = f (x, y) , Xo < X < X.


V (-To) = ỉ/0 (6.35)

Thuật toán: Giả sử biết nghiệm y =* y(x) tại điểm X € [.r0. .Yj, ta tìm
nghiệm y tại điểm X + h e [xo,x \ là y - y{x + h) với /í > 0 đươc goi là bước
để có được nghiệm tại điểm X + h .
,‘ỉ. Giải gần đúng phương trình ui phân (bài toán Cauchy) 207

Tích phân hai vế của phương trình (6.35) trê n đoạn ị.T, X + /?.] ta có

Ịj(r + / í) = y(x) + J / ( í, y(t))dt = y{x) + Ị y\t)dt.


X X

Đổi biến / — X + z ta thu được


h
y(x + / ỉ) = y(x) + Ị y (x + z)dz. (6.36)
0

Áp dun g kh ai triển Taylor ta có

?/(.T + z) = ý{x) + + 0(z2),

từ đó suy ra
h h
Ị ý(x + z)dx = J [ý ( x ) + ý'{x)z + ũ { z 2)]dz

= ý( x) .h + 0(h2) = hf(x , y) + 0(h2).


Thay vào (6.36) ta thu được
y{x + /í) = y( x) + /ỉ/(.T, y) + 0 ( h 2). (6.37)
Trong (6.37) bô qua o (/í2) ta được xấp xi, sau đó thay dấu xấp xi bởi dấu
" và củng goi ụ là y(x) ta thu đươc
y(x + h) = y(x) + hf( x, y{x)). (6.38)
Công thức (6.38) được gọi lcà công thức Euler. Quá trình tìm nghiêm theo
công thức này dươc tiến hà nh như sau:
Chia đoan [.To, X] thành N đoan bỏi các điểm chia
T'o, X \ = To + fl , T'2 = Xi + Xị+I — X ị + ìl, . . .

Áp du ng công thứ c (6.38) ta đươc


y (.To) = y 0 (đã cho theo điều kiện đầ u của bài toán)
y (x'i) = 2/1 = 2/0+ /ỉ/ (zo, 2/0)
y (xi) = 2/2 = 2/1 + hf (t i , 2/ 1 ) (6.39)

y{*k+i) Vk+I = V k + h f (xk, yk)


Chương 6. Đạo hàm, tích phàn và
208 phương trình vi phâ n
Sai số một bước từ điểm X đến X + h là o (lì2).

Ví dụ 6.4. Tính nghiệm của bài toán Cauchy

, 2x
y = y --------
y
y{ 0) =1

bằng phương pháp E u ler lấy với h = 0.2 trên đoan [0, 1 Ị.
Giải:

Theo công thứ c (6.39) ta có

2/0 = 1.

Vì = y (0.2) = 1/0 + h { y o - — ) = 1.2000.


2/0

2/2 = y (0.4) = yi + h(yi - — ) = 1.3733,


y 1

2/3 = 2/ (0.6) = 1.5294,


ịị/4 = y ( 0 .8 ) = 1.6786,’

ys = 2/(1) = 1.8237.

Nghiệm đúng ỹ = y/2x + 1 và ta có các giá tri tươ ng ứng

Vo = 1.
Vi = 1 1832,
ỹ 2 = 1.3416,

v3 = 1 4832,
Va = 1.6124,
ỹ 5 = 1-7320.

So sánh giữa nghiệm gần đúng </5 với nghiệm đú ng ụ5:

lĩ/5 —Ị7sl = 0 0917 «9 % .

Sai số quá lớn là do quá trình tích lũy sai số: từ !Ji gặp sai số, từ đó tính
tiếp 1/2, - - -
3. Giải gần đúng phương trình vi phân (bài toán Cauchy) 209

C h ư ơ n g t r ìn h M a t LAB

function [x,ỵ]=euler(fun,xO,xn,ỵO,h)
% T his fun tion illu st ra te s the euler's m ethod fo r t h e
% Í IV P : d y / d x = f u n ( x , y ) ; x O <= x < = x n ; y ( xO ) =y O ;

% Synopsis: _ [x,y]=euler(fun,xO,xn, yO)


% _ [X,y]=euler(fun,xO,xn, yO,h)

% Input: _ fun is the function in string type


% _ [xO,xn] is the interval
% _ yO is the initial value
% _ h is the step size
% Ouput: Two vector X and y
if nargin<5
h= 0 .0 1 ;
end
x=(xO:h:xn)';
n = le n g th ( x ) ;
y=y 0 *ones (n,1 ) ;
for i=2:n
y(i)= y (i- 1 )+h* feval(fun,X(i- 1 ),y(i- 1 ));
end
end

3.3.2. C ông thứ c E uler cải tiến

Muc đích của công thức này là để đạt đươc sai số một bưóc cấp cao
hơn. Trong tích phân vế phải của công thức (6.36), thay bởi công thức
hình tha n g (6.19) ta đươc

Ị ý { x + z)dz = 2 [y'(X + h) + ý{x)\ + 0 (h3)


0

= ậ [ /( * + h, y{ x + h) ) + f { x , y( x) ) \ + 0 { h 3 ) .
Chương 6. Đạo hàm, tích phân uà
210 phương trình vì phân
Thay vào (6.35) ta có

y[x + h) = y( x) + ^ [/(X + h. y( x + h)) + f{x, y(x))\ + 0 (/t3).

Bỏ qua o (/í3), ta được xấp xỉ. Sau đó thay xấp xi bởi dấu bằng, ta thu
được

y{x + /ỉ.) = y{x) + ~ ị/(.T + /í, y(.r + /ỉ)) + /(.T, y(.r))]. (6.40)

Công thức (6.40) được goi là công thức E ule r cải tiến , đ ạt sai số một bước
1à O (f t3).
Theo công thức (6.40) ta thấy, nếu biết y — y(x) khi tính y y(x + lì) thì
phải giả i phương trìn h phi tuyến, có th ể áp dung công th ức lăp. Để th u â n
lợi cho việc tính toán, ta tìm cách biến đổi (6.40) sao cho sai số vẫn đat
cấp o (/í3).
Thay y{x + h) trong vế phải của (6.40) bởi đẳng thức (6.37)

y{x + h) = y( x) + h f (x,y{x)) + 0 { h 2 )

hay
y(x + h) —y* = 0{h2), (6.41)
trong đó
y ’ - y{x) + h f { x , y ( x ) ) .

M ặt khác, áp d ung đ ịnh lý Lagrange ta có

/ (x + h, y( x + / / ) ) - / {x + h, </) = f'y { x + h. ỹ ) (y{x + h) - y * ) .

Kết hơp điều này vói (6.41) ta suy ra

f { x + h, y ( x + h)) —f ( x + h, y*) = ũ(h 2)

vói giả thiết fy (x + /?, ỹ) là đại lượng giới nội. Vậy ta có

f ( x + h,y{x + h)) = f (x + h. t/ ) + 0 { h 2).

Thay vào (6.40) ta thu được

y{x + h) = y{x) + ^ [ f ( x , y { x ) ) + f ( x + h , i / ) \ ,
y* = y(x) + h f (z, y{x) ). (6.42)
3. Giải gần dũng phương trình vi phân (bài toán Cauchy) 211

Công thức này đạt sai số môt bưóc là 0(/;3). Công thức lặp cu thể của
(6.42) như sau:

y ( - T o ) = Vo,
v\ — Vo + h f (x0.Vo) •
V (Ti) = y{xo + h) ~ Ỉ/1 = yo + I ( / (t 0,yo) + / (.To+ h. y{))

Tổng quá t

v*i = Vi + h f (Xi, Ui) , i = 0,1.2,.. .


\ I, ( 6 .4 3 )
1J {Xi + h) =- ỉ / i +1 = Vi + [ / (.T i, Vi) + f{xị + h , y * ) ] .
, _

Ví dụ 6.5. Tìm nghiệm gần của bài toán Cauchy

Í ' _ Ty
í : ị
y( 0) = 1

theo công thức Euler cải tiến lấy /ỉ —0.1 tính trên đoan (0; 0.5).
Giải:
Nghiệ m chính xác —
ỹ = e ỉl4 . Kêt
i. quả tính toán đươc ghi tro ng b ảng sau:
l Ti Vi Vi
0 0 1 1
1 0.1 1.0025 1.0025
2 0.2 1.0100 1.0100
3 0.3 1.0227 1.0227
4 0.4 1.0408 1.0408
5 0.5 1.0645 1.0645

N hận thấy các kết quả trù n g nhau tới 4 số lẻ sau dấu
Chương 6. Đao hàm, tích phân và
212 phương trìn h vi p hân

C h ư ở n g tr ì n h M a t L ab

function [x,y]=modified_euler(fun,xO,xn,ỵO,h)
% This function illustrates the modified euler method for
% the IVP: dy/dx=fun(x,y); y(xO)=yO;

if nargin<4
h= 0 .0 1 ;
end

x= (xO:h :xn)';
n=length(x) ;
y=ỵ 0 *ones (n,1 );

for i=2 :n
z=y (-Ì-1 -)+h*feval (fun,X(i- 1 ) ,y ti— X) ) ;
y(i)=y(i-l) + ...
h * (feval (fun,X (i- 1 ),y (i- 1 ))+feval (fun, X(i-1)+h, z ) ) /2;
en d

plot(x,y);
end

Chit ý 6.5. Công thức Euler (6.39) và Euler cải tiến (6.43) đều có ưu
điểm là tính toán th u ậ n lơi, dễ lập trìn h, song có nhược diêm chính là sai
số một bước của ch úng lần lượ t là o (/ỉ2) và o (/(.'). Giả sử từ Ị) (.i n) i/o là
đú ng th ì việc tí n h </! — y (x + h) đã gặp sai số tương ứng, không còn là
0

đúng nữa. Dựa trên gần đú ng này để đi tìm gầ n đ úng tiếp theo dẫn đến
quá trình tính tới y, = y(x + ih) vói Xị xa với Xo sẽ có thể dẫn đến hiện
0

tương "sai một ly đi một dặm” (hình 6.3). Vì vậy các công thức trên chi
thích hợp vói các điểm Tị gần với x0.
3. Giải gân đúng phương trình vi phân (hài toán Cauchy) 213

3 .3 .3 . C ô n g t h ứ c d ạ n g R u n g e -K u t t a

Để đạt được độ chính xác cao hơn mà công thức tính cũng không quá
phức tạp, R unge-K utta đã đưa ra công thức tìm nghiệ m số của bài toán
Cauchy cấp môt (6.35) như sau: Biết y{x), tìm y(x + h) theo công thức

y( x + /i) = y(x) + Ỵ^PrkrỤl), (6.44)


r= 1

trong đó

ki(h) = hf(x,y{x))

k-ỉ(h) — hf (x + 0 2 / t , y{x) + fiĩìk\ (h))

k-3 (h) = hf{x + a 3 h,y{x) + IhikiỤi) + fixìk 2 {h)) (6.45)

kq(h) = h f ( x + aq, 3 qjkj{h)).


j=i
Các hệ số

Pr, r= l, q\ c t j, j = 2,q-, ftpj, p = 2,<7 , j = 1, q - 1

được xác đinh sao cho (6.44) thỏa mãn, đồng thời khai triển Taylor
U2 um km+l
v(x+h) = y ( x ) + h ý ( x ) + ^ - ụ " ( x ) + - • ■ + ^ y {m\x) + ’ .,s/(m+t)(c-) (6.46)
2 ! m! ( m + 1 )!
Chương 6 . Đao hàm, tích phán và
214 phương tr ìn h vi phân
trùng nhau tới cấp cao nhất của lĩ mà ta mong muốn. Các chi số 7
1,2,3, ... goi là bậc của công thức da ng R unge-K utta.
Áp dung công thức khai triển Taylor theo lũy thừa của li và so sánh
(6.44), (6.46), ta suy ra đươc các công thức sau, thường đưoc sử dung
trong kỹ thuât:

1. Khi 7 = 1 (bậc một) ta có

y{x + h) = y( x) + h f {x, y(x)) (6.47)

chính là công thức Euler, sai số một bưóc là o (/í2).

2. Khi 7 = 2 (bậc hai).


Khái triển Taylor ki(h). k 2 {h) theo lũy thừa của h, thay vào (6.44),
đồng nhất với (6.46) theo lũy thừa của h tói /ỉ2, ta thu được hê ba
phương trìn h để xác đ ịn h bốn hệ số pi,p2,«2, fi‘2 \ như sau:

Pỉ + P2 =1
.1
' « 2p 2 = ị
ftlP -2 =

Do hệ trên có số ẩn nhiều hơn số phương trình nên ta chon một ẩn


tư do và giải các ẩn ph ụ thuộc và ta có công thức dạ ng R un ge-K utta
bậc hai với sai số một bước là o (/ỉ3). C hẳ ng han :

(a) Chọn Pi = 0 thì P2 = 1và suy ra «2 = í h ì — - ta thu đươc công


thức

ki(h) = hf (.T, y{x) )

b2{h) = h f ( x + ^ , y {x ) + ^ Y ^ ) (6.48)
y{ x + h) = y(x) + k 2 {lĩ)

(b) Chọn p\ = P2 = - thì o 2 = ft2 = 1, ta có

h(h) = hf{x,y{x))

k2(h) = h f (x + h,y{x) + ki(h)) (6.49)


y(x + h) = y ( x ) + ị ( k ĩ { h ) + k2{h))
3. Giải gần đúng phương trình vi phân (bài toán Cauchy) 215

Tro ng công thức (6.49) ta thấy, nếu đặt

y* = y(x) + ki{h) = y(x) + hf (x, y(x))

thì ta có

y(x + h) = y(x) + ^ \ f (x. y(x)) + / (x + h. y*)}

chính là công thức Euler cải tiến.


Có thê chon P r , ơj, 3 p j thích hơp, ta thu được dạng công thức
khác, nên người ta nói: ta có ho công thức dạng Runge-Kutta
bậc hai. Sai số một bước là o (/í3).

3. Khi <7 = 3 (bậc 3).


Hoàn toàn tương tự như trên, ta có họ công thức dạng Ru nge-K utta
bậc ba (R-K3). Ô đây ta chi nêu mót công th ức thường đươc sử dụng,
đạt sai số môt bước là o (lì4):

M >0 = hf(x,y(x))
k2(h) = hf( x + ^,y( x) + ! j) (6.50)
k3(h) = h f (x + h, y(x ) - kị + 2 k2) (6.51)
y(x + h) = y(x) + ^ (ki + 4 Ả'2 + k3)

4. Tương tự khi <7 = 4 (bậc 4) ta có công thức dạng R-K4:

ki(h) = h f ( x , y ( x ) )
W )= hf(x + ị V(x + |

k,(h) = hf ( x +
k4(h) = hf (x + h.,y(x) + k3)
y(x + h) — y(x) + r (fc| + 2k2 + 2k3 4- k,ị)
0

đạt sai số một bưóc là o (/ỉ5).


Lấy <7 = 5 , 6 , . . . ta th u đươc các công thức dạng R-K đ ạt độ chính xác
cao hơn song việc tính toán là quá phức tạp nên công thức (6.52)
thường được sử dung nhiều trong kỹ thuật.
Chương 6. Đạo hàm, tích phân và
216 phươn g trình vi phân

3.4 Chương trình Ma t L ab

function [x,y]=RK4 (fun,xO,xn,yO,h)


% This funtion illustrates the Runge - Kutta method for
% the initial value problem: dy/dx=fun(X,y); y(xO)=yO;

if nargin<4
h=0.01;
end

x= (x O:h :xn )';


n=length (x);
ỵ=ỵ 0 *ones (n,1 );

for i= 2 :n
kl=h*feval(fun,X (i-1 ),y (i- 1 ));
k 2 =h*feval(fun,x(i-l)+h/ 2 ,y(i-l)+kl/2 );
k3=h*feval(fun,x(i-l)+h/ 2 ,y(i-l)+k 2 /2 );
k4=h*feval(fun,X(i-1)+h,y(i-1)+k3);
y (i)= y (i-1)+ (kl +2*k2 +2*k3 +k4)/ 6 ;
end
plot(x,y);
end

Ví du 6.6.Áp dung chương trình M a t L ab giải bài toán sau bằng


phương pháp R-K 4

ý = X+ y

y( 0 ) = 1

trên đoạn [0; 0.5] lấy với h = 0.1.


Nghiệ m đúng ỹ = 2tx — X - 1. Kết quả tính được cho trong bảng sau:
4. G iả i phương trình vi phân cấp cao và hệ phương trình vi phân 217

■i X, y,

0 0 1 1

1 0.1 1.1103 1.1103


2 0.2 1.2427 1.2428
3 0.3 1.3996 1.3997
4 0.4 1.5836 1.5836
5 0.5 1.7974 1.79744

§4. G iải phương trình VI PHÂN CẤP CAO VÀ


HỆ PHƯƠNG TRÌNH VI PHÂN

Để việc trình bày đơn giàn, trong tiết này ta chỉ đề cập đến bài toán
Cauchy đối với hệ phương trìn h vi phân cấp một và phươ ng trìn h vi ph ân
cấp hai.

4.1 Bài toán


Tìm hàm số y = y(x) và z = z(x) là nghiêm của bài toán Cauchy sau:

ý = f(x,y,z), y { x 0) = o
z' = g[x,y,z), z ( z o) = 0 (6.53)
X € [.To,To + X]

hoặc tìm y — y(x) là nghiệm cùa bài toán Cauchy cấp hai

y — f (x,y, y') , X € [.To,To + X]


¿/(•To) = a; ý( xo) = p. (6.54)

Ta thấy bài toá n (6.54) luôn có th ể đưa về dan g (6.53). T h ật vậy, đăt

ý = z{x) =Ặ y" = z'{x).

Kết hơp điều này với (6.54) ta thu được

ý = z{x), y (-To) = ru
z = f { x , y . z ). z ( x 0) = p (6.55)
Chương 6. Đạo hàm, tích phân và
218 ph ương trìn h vi phán

chính là bài toán dạ ng (6.53).


Do vây, trong tiết này ta chỉ nêu một số công thức tìm nghiệm của bài
toán Cauchy d ang (6.53).

4.2 Côn g thức E uler


Giả sử có y = y( x) , z = z(x) , X € [xo. Xo + X ] , ta đi tìm y( x+h) , z(x+h).
Tương tự trườ ng hợp một phương trìn h, ta có các công thức

■y(x + h) = y{x) + h f ( x . y ( x ) . z { x ));

z{x + h) = z(x) + h f ( x , y ( x ) , z { x ) ) .

Sai số môt bước là o (ti1). Để lâp công thức lăp cho trường hơp này, ta
chia đoạn [xo, Xo + A'Ị t h à n h n đoạn bằng nhau với bước là h — —- bởi cúc
n

,+1 =
IJ Vi + hf(xt.yt,Zi);
Zi+ 1 = Zị + h f (xi.yi,Zi), 7 = 0,1,2,... (6.56)

4.3 Công thức dạ ng Ru nge-Kutta


Hoàn toàn tương tự như trên, ta có công thức bậc bốn (R-K4) như sau:
Xuất phát từ
y (x 0) = 7/0 = a; z ( x 0) = z 0= fj.

Giả sử ỏ bưóc th ứ 7 ta có 7/i, Zị. Khi đó

!Ji+1 = ỉ/i + 7 A y ,; 2 j+ i = + ^ A z i , (6.57)


0 fj

trong đó

A 7/, — T 2/b2 + 2 ẲC3 + /t4


A~j = /1 + 2/2 + 2/3 + /4 (6.58)
4. Giải phương trình vi phân cấp cao và hệ phương trình vi phân 219

ki = h f (xi-uPi-uZi-i ) ;
h k\ /]
*2 — h f { x , _ 1 + — , ỉ /i -1 + — . Z ị - 1 + — );

/
k-.i -
un
h j{ X ị- \ +, h
— .V i - \ ,+ k2
— .~j-i +, k—,

kị — hf (x ị- i + h, ìji- 1 + ¿3, Zj-1 + /3); /4 — hz(xị-i + h, y, - 1 + Ả3, 2j_i + /3).


(6.59)

Ta dã biết, công thức này đạt sai số một bước 1ằ ũ ( h 5 ) .

4.4 Chư ơng trình Ma t L ab

function [x,y,z]=RK4_Sys(funl,fun2,x0,xn,ỵ0, z0, h)


% This funtion illustrates the Runge - Kutta method for the
% initial value problem:
% dy/dx=funl(x,y,z); y(xO)=yO; dz/dx=fun2 (x,y,z); z(xO)=zO

if nargin<7
h= 0 .0 1 ;
end

x= ( xO: h : x n ) ' ;
n= len gth (x) ;
y =y 0 * o n e s ( n , 1 );
z =z 0* o n e s ( n , 1 );

for i=2 :n
kl=h*feval(funl,X(i- 1 ),y(i- 1 ), z (i- 1 ) );
l l = h * f e v a l ( f u n 2 , x ( i - l ) , y ( i - 1 ) , z (i - 1 ) ) ;

k 2 =h*feval(funl,X ( i - 1 ) +h/2,y ( i - 1 ) +kl/2,z ( i - 1 ) + 1 1 / 2 ) ;


12 =h*feval(fun 2 ,x(i-l)+h/2 ,y(i-l)+kl/2 ,z(i-1 )+ 1 1 /2 );
Chương 6. Đạo hàm, tích phân và
220 ph ươ n g trình
tr ình vi p h â n
k3=h*feval(funl,X (i-1
i- 1 )+h/2,y (i-1)+k2/
i-1)+k 2/2,
2,zz (i-1)+12/2
i- 1)+12/2);
);
13=h*
13=h * f e v a l (f u n 2,X (i-1)+h/2
(i-1)+h /2,ỵ
,ỵ (i-1)+k
(i-1)+k2/
2/2,
2, z (i-1)
i- 1)+12/2)
+12/2) ;

k4=h*feval(funl,x(i-l)+h,y (i-l)+k3,z(i-l)+13);
1 4 = h * f e v a l ( f u n 2 , X ( ± —1 ) + h , y ( i - 1 ) + k 3 , z ( i - 1 ) + 1 3 ) ;

ỵ ( i ) = ỵ ( i - 1 ) + ( k l+ 2 * k 2 + 2* k3 +k 4 ) / 6 ;

z ( i ) = z ( i - 1 ) + ( 11 + 2 * 1 2 + 2 * 1 3 + 1 4 ) / 6 ;
end

end

Áp dung tìm nghiêm của bài toán sau

V =2 . y(0) = 0
<
z = —X
—X z — y. z(0 ) = 1

trên đoạn [0; 0.5] vói h - 0.1.


Áp dụng chương
chương trìn h M a t L ab ta thu đươc kết qucà trong bàng sau

/ Xị Vi Zị

0 0 0 1
1 0.1 0.1
0.1 0.9908
2 0.2 0 .1 9 7 9 0 .9 6 6 1

3 0 .3 0.2933 0.9321

4 0 .4 0 .3 8 3 4 0 .8 8 9 2
5 0 .5 0 .4 6 9 9 0 .8 3 7 9

§5. BÀI TẬP

Bài tập 6.1. Cho 5 mốc nội suy là x 0, X\. .+■).


¿ 2 - J'.|. Hãy lâp công thức
tính đạo hàm của hàm y — f ( x ) tại 5 mốc đã cho.

Bài tập 6.2. Tính gần đúng đạo hàm của hàm ụ — log X ta i điểm
điể m ./ 1
từ b ảng số sau:
5. Bài tập 221
22 1

X 0.98 1.00 1.02


V = Iog X 0.7739332 0.7651977 0.7563321

Bài tập 6.3. Tính gần đúng tích phân xác định
2

I = Ị ự ĩd x
1

bằ
b ằ n g c ô n g th ứ c h ì n h t h a n g tổ n g q u á t với n = 10. Đánh giá sai số.

Bài tập 6.4. Tính


1
/ = J V \ + x2
x 2dx
0

bằ
b ằ n g công thức SimDSon tổng auát sao cho đạt sai số 0.001.
r y54 3.5;r2
3.5 ;r2 + 5.1x
5. 1x —4.8
Bài tâp 6.5. Cho I — ---------- — --------- dx.
J4.2 X—0.4
—0.4
1. Tín h gần đúng tích ph ân 1 theo côn
côngg thức hìn h th an g tổn g qu át vớ
với
bưóc
bư óc lĩ = 0.1;

2. Nếu sử dụng công thức Simpson tổng quát thì phải chia đoạn
[4.2; 5.4] thành bao nhiêu đoạn nhò bằng nhau để đạt được sai số
< 10 ~ 3?

Bài tập 6.6. Tìm nghiệm gần đúng của bài toán Cauchy
t/(x) —ụ —x\ ụ{0)
{0) = 1 trê n đo an 0: 0.
0.5] theo công thứ c E u ler lấy
lấy /í —0.1.

Bài tập 6.7. Tìm nghiêm gần đúng của các bài toán Cauchy sau:
, (x + y) 1 - xy)
xy )
2/ ( 0 ) = 1;
J x + 2y

2. ý = y - — , y(0) = 1;
y

3. ý = y2 + - ,
X y{2) = 4;

4. ý = a:2 + y2,
y 2, y{ 0 ) = - 1 ;

theo các công thức Euler, Euler cải tiến và công thức R-K4 trên đoan
[0; 0.5] với h = 0.1.
Chương 6. Đạo hàm, tích phân và
222 ph
p h ư ơ n g tr ìn h vi p h â n
Bài tập 6.8. Tìm nghiêm gần đúng của các bài toán sau trên đoạn
[0; 0.5] lấy với h — 0.1 bằng công thức R-K4.
/
y = X + 22, 2/(0)
2/(0) = 1
1.
= xy,
x y, 2 (0 ) = -1;

= y + z,
z, y{ 0) = 1
~--y + z, 2 (0 ) = - l
TÀI LIÊU THAM KHẢO

[1]
[1] Phạm
Ph ạm Kỳ Anh, Phan
Ph an Vãn
Vãn Hạp, Hoàng
Hoàng Đức Nguyê
Ng uyên,
n, Lê Đình hị nh,, Cơ sở
Đì nh T hịnh
phương
phươ ng pháp
ph áp tính tập I,I, II, NXB
NXB Đại học Quốc gia Hà Nội, 1996.

[2]
[2] Ta Vãn Đĩnh, Trọ ng Vinh, Phương
Đĩnh , Lê Trọng Phương ph
pháp
áp tính,
tín h, NXB Đai hoc và Trung
hoc chuyên nghiệp, 1983.

[3]
[3] Phan Văn Hạp, Lê Đình Thịnh, Phương
Ph an Văn Phương pháp
phá p tính và các thuật
thu ật toán, NXB
Giáo dục, 2001

[4]
[4] P han các tác giả khác, Phương pháp
ha n Văn Hạp và các phá p tính
tín h tập I, II, NXB
NXB Đại
học và Trung học chuyên nghiệp, 1970 - 1971.

[5] Tro ng Vinh, Giáo trình Giải tích số, NXB Khoa học và Kỹ thuật, 2007.
[5] Lê Trong

[6] Dương Thuỳ Vỹ, Giáo trình Phương pháp tinh, NXB Khoa học và Kỹ
thuât, 2011.

[7] Granville Sewell, The numerical solution of ordinary and partial differ-
ential equations, Welley interscience, 2005.
[8] Hanselman L. and Littlefield B., Mastering
Master ing MatLab
Ma tLab 6, Prentice Hall,
2001 .

[9]
[9] Higham
Hig ham D. J. , MatLab
D. J., MatL ab guid
g uide,
e, SIAM, 2000.

[10] John. H. Mathews, Kurtis D. Fink, Numerical


Nume rical Methods
Method s Using MatLab
Ma tLab,,
Pearson Prentice Hall, 2004.

[11] Jaacson E., Keller H Analysis


Anal ysis of numerical
nume rical methods, J. Wiley, 1968.

2233
22

You might also like