LÊTRỌNG TRỌNGVINH, VINH,TRẨN MINHTOÀN
G iáo trình rình Phương p h á p tính tín h và Matlab -t
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 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
P
đề 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ính chí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 Mue lu • • e
............................................
2
1
..................................................
( 'h ư ơ n g 1 . S a i s ố ....................................................................................... 1
iii
7
Số xấ p xi, sai s ố .............................................................................
7
1.1 1.2
Sai số tu yệt đối ................................................................. Sai số tương đ ố i ................................................................
7 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
Các phép tính về sai s ố ................................................................ 2.1 Các phép t í n h .................................................................... 2.2 Công thức tổng quá t về sai s ố .......................................
9 9 11
2.3 2.4
12 14
C hư ơn g 2 .
Bài to án ngươc về sai s ố ................................................. S ai số phư ơng pháp, sai số tín h toá n và sự ổn địn h . M a t L ab
cơ
b ả n ....................................................................... 17
1
Khỏi đô ng
Ma tL a
2
Biểu thứ c
M a t L a B:
b
.......................................................................
biến, số, toán tử, h à m .............................
18
19
2.1
B i ế n .......................................................................................
2.2
S ố ...................................................................................
2.3
Toán t ử .................................................................................
20
2.4
H à m .......................................................................................
21
1
19 20
2
M ỤC LỤC
3
22 Các da ng dữ liệu cơ bàn tron g M a t L ab .............................. 3.1 V e c to r.................................................................................. 22 3.2 Đ a t h ứ c .............................................................................. 27 3.3 Ma t r ậ n .............................................................................. 30 37 4 Vẽ đồ th ị tro n g M a t L a b ........................................................... 4.1 Đồ th ị 2 D .............................................................................. 37 4.2 Đồ th ị 3 D ........................................................................... 41 43 5 Lậ p trì n h với M a t L a b .............................................................. 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 .................................................... 1.1 Khoảng phân ly n g h iệ m .............................................. 1.2 Phươ ng ph áp hình hoc tìm kho ảng p h ân ly nghiê m
80 80 80
2
Phương pháp lặp d ơ n ................................................................. 2.1 Nội dung phương p h á p ................................................. 2.2 Sự hội tụ của phươ ng p h á p ........................................... 2.3 Sai s ố .................................................................................. 2.4 Chương trìn h M a t L ab .............................................. Phương pháp Newton (phương pháp tiếp tuyến) ............. 3.1 Nội dung phương p h á p .................................................... 3.2 Sự hội tụ củ a ph ươ ng pháp N e w to n ..............................
82 82 82 84
3.3 3.4
89
3
4
Sai s ố ..................................................................................... Chương trìn h M a t L ab .................................................
P hư ơ ng p h áp dây c u n g .................................................................
85
87 87 88 90
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 Phư ơng trìn h đa thức bậc n ....................................................... 96 .....................
................................................
5
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
2
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 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 ..........................................................
3
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 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 Sự khôn g ổn định của hệ đại số tuyến t í n h 128 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 .................................
4 5
.................................
5.4
Trư ờng hơp m a trậ n đối xứng. Phương ph áp Choleskyl34
4 __________________________________________________
6
7
M Ự C LUC
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 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
2
3
4
5
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 Đ 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 Đ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 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 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
2
3
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 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 Giải gần đú ng phương trìn h VI phả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 4
5
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 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 Bài t ậ p ................................................................................................. 220
Tài liệu tham k h ả o ......................................................223
6
MỤC LU C
CHƯƠNG
1
S ai
§1. SỐ
XẤP
sồ
XỈ, SAI SỐ
T
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. rong
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 số A„ > 0 th ỏ a m ãn a — A I<
Aa hay
a —A a < A < a +
A„.
(
a
là
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 =
7
a ± Aa.
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à
9
2. Các phép tính về sai số 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 — 2 37865. 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 đó:
Chương 1. Sai số
10
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 - y I
3. Nếu u — X 1J Z thì ốu — ốx + ổy + ¿2, ( x , y , z > 0 ) . 4. Nếu u — — t hì ố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
.
=>■ A?í —A.r — A y =>■ |A?/| < |A.r| 4- |Ay| Ax + Ay hay Au < Ar + Ay => -ị-Ỵ < \x-y\ M
Vói
u —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) = — ~ XI.
u
. Tương tự ta củng có
A ( l n .r ) w — ; A ( l n y ) ^ = ^ ; A(ln z) « — . X y z Khi đó
Au u
A.r X
Au XI.
hay
Ay Az y z A x A y Az + + X
V
A u A x Ay Aổ„ — -—- — 7 + T—7 + -Ị—Ị- — Óx + Ốy + ổ2. \z\ I y ỉi
ý 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 Chú
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ì
d f A„ = Ẻ dxị A,.. 1
=
( 1 . 2 )
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| < ¿ 1=1
hay
d f dXị |A.r,l
n d f A„ = Ẻ dXị Ax, 1=1
Còn
d f s' = v r m ị Ở X ị 1 ớ/ ỡln/ A T ' Ax.. ÌỊ dx.ị / 1=1 i=1 n
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 A v -
dv dn
An
dv I
dd
A,i = 8.44
X
0.0016 I 21.5
X
0.05
= 1.088 a» 1.1 (cms). Vậy V = - Tĩd 3 = --(3.14)(3.7)3 ± 1.1 = 27.4 ± l.l (c m 3). „ . 3 . A v 1.088 Sai số tương đối ổv — 7777 — - ” « 0.04 = 4%. IV I 27.4 X
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ó: i—\
df\ A 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_ dxn dxi Í-3X1 dl2 d f d f A r.. —n Au ttìxị A, dxị i— 1 =
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 =A ¿ = 1. 2, .. ., «. (1.4) L*Xl d f dxị
13
2. Các phép tính về sai số Ví
II V
Cho hình trụ đứng, hán kính R — 2(m); chiều cao 3(m). Hỏi sai số tu y ệt đối của R và II là bao nhiêu để thể tích R2H của hình tru đat sai số tuyệt đối giới han là 0.1 (m3). tt
dụ 1.5.
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 Ớ7T
=
/?2// = 22 X 3 = 12;
6>v = 7r/?2 = 3.14 X 22 = 12.6; <97/ ỠV = 2tĩ RII = 2 x 3.14 X 2 X 3 = 37.7. 0« ỏ đây u = 3, theo nguyên tắc ngang bằng nhau ta thu đươc: 0.1 < 0.003; 3 X 12 0.1 < 0.001; An 3 X 12.6 0.1 < 0.003 A// = 3 X 37.7 A„
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: Hỏi phải đo bán kính R — 3 0.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
Ví dụ 1.6.
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ì Afí 0.01 A* —0 _ = 0.005. “ R n Từ đó suy ra • A* —
7T X
•
— X
A r
=
0.005 < 0.0016 vói 7T= 3.14; 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 A r
=
0.00983 2
X
30.5 < 0.15(cm).
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à
A\ — 0a + Aa. Aa = lỏ — A\ < |õ — n\ + ịa— 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.
15
2, Các phép tính ưề sai số 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
1.4
0.0001048576 0.00013422659 0.00147912 0.00014866399
1.41 1.414 1.41421 1.414213563
c ủ a A
vế phải
của yl
33.8 10.2 0.508 0.00862 0.0001472
0.00014867678 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 +
11=1
•+ (- »
n— 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 =
(n + 1)2
(n + 2)2
+•
chính là sai số của
phương pháp. Theo lý th u y ết chuỗi đan dấu th ì |S —¿>„1 <
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 < 3 \ s - s n\ < (n + 1)2
X
10-
n = 6.
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 = 0.899 ± 9
X X
10"4) 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 + = (3 + 0.9)
X
9
X
10' 1 =
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
Chương 2. M atL ab
18
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
d*b
0 -I 5 35
â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 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. Ma t L ab
2.2 Số sử dung ký hiệu số thâp phân theo qui ưóc vói số chữ số tùy 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ụ: M a t L ab
3 9.6397238
-99 1.60210e-20
0.0001 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,
Phép toán
-
/ \ A
/
( )
số, toán tủ, hàm
21
Ý ng hĩa Cộng T rừ N h ân Ch ia thông thường Chia trái 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 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 Mat Lab
>> help elfun
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 MatLab
>> 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
Chương 2.
22
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 i/ j eps
3.14159265... Đơn vị ảo, \ / - ĩ Sai số tương đối dang dấu chấm động, £
Số thực nhỏ nhất, 2.2251e —308 realmax Số thực lớn nhất, 1.7977e + 308 Inf oc N ot-a-num ber NaN realmin
Trong đó, đượ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.
• inf
• 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 >> a r r ( [ 2 5 ])
arr = 10
25
= []
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 >> x>0 ans = 0 0 1 >>
X (x>
0
6 7 4 9 ];
1
1
1
1
1
1
)
ans 2
3
5
6
>> X (x>2 & x<=5) ans = 3 5 4 >> x>2 ans = 0 0 0
1
7
1
4
1
9
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
27
3. Các dạng dữ liệu cơ bản trong MatLab 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 p o l ỵ v a l ( 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
X
ta sử dung hàm
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 số của đa thức đó bằng lệnh
có thể
tính các hệ
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 Ằx2 ‘ + 13x — 46. —
3. Cäc dang dü lieu cö bän trong MatL ab 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
29
Chương 2. Mat L ab
30
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 khoảng trắng; • Dùng dấu
hay
để 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 MatL 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
5.0
10.0
9.0
6.0
4.0
15. 0
2.0
13.0
11.0 7.0
8.0
12 .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.
zeros ones rand randn magic(n) pascal(n) eye(n)
Mat Lab cơ bả.n
Tấ t cả các phầ n tử bằng 0 Tấ t cả các phần tử bằng 1 Các ph ần tử có ph ân bố đều tr ê n [0,1] Các phầ n tử có ph ân bố chu ẩ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 Tạo ra m a trậ n có các phầ n tử lấy từ tam giác Pascal 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 >> F=5* o n es ( 3) F = 5 5 5 5 5 5 5 5 5 >> R=randn(4) R = 0.5377 0.3188 1.8339 -2.2588 0.8622
-1.3077 -0.4336 0.3426
0 0
3.5784
0.7254
2.7694 -1.3499 3.0349
-0.0631 0.7147 -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ỡ
n i 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 4
2 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
Hien thi cac bien trong khong gian lam viec
whos
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
Viet B = A ( : ,
7
12
[ 1 3 2 4 ] ) se tao ra ma tran B bang each doi thii tii
cac cot tit [ 1 2 3 4 ] thanh [1 >> B=A(:, [1 3 2 4 ] )
B = 16
2
3
13
5
11
10
8
9
7
6
12
4
14
15
1
3 2 4]
35
3. Các dạng dữ liệu cơ bản trong Mat Lab
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 [A A+3; A+4 1 1 1 5 5 5
1 1 1 5 5 5
1 1 1 A+6 ] 1 1 ] 5 5 5
4 4 4
7 7 7
4 4 4 7 7 7
4 4 4 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ừ N h ân m a trậ n N hân các p h ần tử tư ơng ứng vói n h au Chia Chia trái Chia các p hầ n tử tương ứng cho nh au Lũy thừa Lũy thừa từng từ
X X X X
Chuyển vi (liên hơp đối vói ma trân phức) Chuyển vi (không liên hợp) Nghịch đảo
X = A'
Dinh thức Hệ đại số tuyến tính Ax = b Phân tích Cholesky
■ det (A) N ghiệ m X = A\b R = c h o i (A) [L,Ư]= lu(A)
Phân tích LƯ Ph ân tích QR Giá tri riêng, vector riêng Quay ma trận Đảo m a trận từ trái sang phải Đảo ma trậ n từ trên xuống dưới Định dạng lại ma trận A với số hàng mỏi m và số cột mỏi n
= = = = X = X =
A - B A * B A.*B A / B , khi đó X * A = A\B, khi đó A*X = A. / B
B
X = AA2 X = A.A2
X = A. ' X = inv(A) d
[Q,R] = qr(A) [d,r ] = e i g (A) e i g A), ( B = r o t 9 0 (A) c = f l i p l r (A) D = flipud(A)
r e s h a p e (A,m,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 và lưu th àn h mộ t vector Chọn dư ờng chéo tùy theo giá trị của k k = 0 k >0
k < 0
d i a g (A) diag(A,k) chon đường chéo chính; chon đường chéo th ứ k phía trên đường chéo chính ; 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
1 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) Dat chu thich len do thi,
gtext
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 MatL 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): ' gạch chấm. • Dấu (m arker): ▼,
: nét liền, ' — ': nét đứt, ' : ' : chấm chấm, ' - . ' :
'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ẽ ___________ Độ rộng của nét vẽ, tính bằng pt LineWidth MarkerEdgecolor M àu sắc của đưồng viền dấu MarkerFacecolor M àu bên trong dấu Độ lổn của dấu, tính bằng pt Markersize Ví dụ 2.2.
X
= -pi pi/ : 10 pi : ;
y = tan(sin(x)) plot(x,y,,-rs'
- sin (tan (x) ); 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 aB >> 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
43
Mat L ab
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 tor/Debugger;
("m-files") sử dụng MATLAR Edi-
M at L ab
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
X=D(:,1);
% X is
the
y= D( :,2) ;
% y is
s ec o n d one
p lo t( x ,y )
first
a m a t r i x w i t h t wo c olu m n s column,
% 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 biế b iếnn (ỉươc s ử dung trong hàm là các biến đĩa phưnng 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. m-file” bao bao gi giờ cũn g có có dạng: về cú ph áp , dò ng d ầu tiên của h àm ”m-file” 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ách cá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(2,2) ans =
4 >> x=[ x=[l l 2] 2]; ; y=[ =[3 3 4] ; >> twosum(x,ỵ) ans =
4
6
twosum:
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 argum ents) và nargout (number of ou tput argum ents);
Chương 2.
48
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 l o t ( x , ỵ ) p l o t ( x , ỵ , ' s ' ) p l o t ( x , y , ' s ' ) p l o t ( x l , y l , ' s ' , x 2 , y 2 , ' o ' ) h= plo t(x ,y)
2 3 3 6 2
0 0 0 0 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ồm m h à m disp v à fprintf. Trong khi hàm disp thường được sử dụng dể xuất dữ liệu fpri rint nt f 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 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ệu liệu vào file thì bắt buộc phải dùng hàm fprintf.
5. Lập trình ưói
49
Mat L ab
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
2
3
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
ý 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. Chú
>> 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à Ví dụ 2.11. >> A=e ỵe (3 ) A = 1
>>
0
0
0
1
0
0
0
S=num2str (A)
s = 1 0
0
0
1 0
0
0
1
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 du:
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í
>> 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 vector hay m a trậ n , ví dụ: >> disp('z-'); disp(z)
1
disp
để hiển thị cột của các
52
Chương 2.
Mat LAB cơ bán
2
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 )] ) p i = 3 . 4 4 2 >> 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
53
M at L ab
fprintf(outFormat, fprintf(fileHandle,
outVariables) ; 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
Dạng %d Dạng Dạng %f Dạn g %e %s
xâu số nguyên dấu chấm động 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ả Chèn một tab sau xâu kết quả
\t
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.
Giá trị 2 sqrt(2) sqrt(2e-ll) sqrt(2ell)
%8 .4 f 2.0000 1.4142 0.0000 447213.5955
%12.3e 2.000e+00 1.414e+00 4.472e-06 4.472e+05
%10g 2 1.41421 4.47214e-06 447214
Matlab cơ bản
%8d 2 1.414214e+00 4.472136e-06 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 4 7
2
3
5
6
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 L ab
Toán tử < <= > >=
Ý ng hĩa < <
~=
Ỷ
cơ bản
> >
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
1 >> bisSmaller=b
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
57
Mat L ab
Toán tử && 11 ~ Ví du 2.13. >>
Ý n gh ĩa and or not
>> a=3; b=5;
aIsSmaller=a
bIsSmaller=b
>> 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
59
Mat L a B
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 % c o lo r i s a s t r i n g switch color case 'red' disp('Your color is case 'blue' disp('Your color is case 'green' disp('Your color is
y ou r f a v o r i t e c o l o r :
red'); blue'); 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
end
index=expression b l o c k o f s t a t e m e n t s
60
Chươn g 2.
Ví dụ
a t L a b cơ bàn M
2.16. Tính tổng các thành phần của một vector
x=l:5; sumx=0;
% create a row vector % 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
61
Mat L ab
• 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. đượ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 đó.
• break
đượ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.
• return
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ộ.
Chương 2. Mat L ab
62
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
63
Mat L ab
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
»
i=[l 2 51;
»
y=x(i)
2.8284
3.4641
4.0000
4.4721
ỵ = 0
Biểu thức
2 y=x ( i )
4
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
>> j=fi nd(rem(x,2)==0 )
j = 1 »
2
5
z=x(j)
z =
0
2
4
3.4641
4.0000
4.4721
64
Chương 2.
Mat L ab cơ bản
2.21. Vector hóa m ã vô hướng. Xét đoan mã:
Ví dụ
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) ; for i = l :m B (i , 1 ) = A(i / 1 ) ; end
B ( : , 1 ) = A( : , 1 ) ;
Để 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
65
Mat L ab
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)
Hàm sinc được định nghĩa bời sinc(x) =
sin(.r)/.T, .r/0 1,
So sánh đoạn m ã sử dụng lênh
X
= Ü.
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
Chương 2.
66
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
67
M at L ab
= > 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 hỗ trơ một trình gỡ lỗi tương tác, bao gồm các câu lệnh sau:
MatLab
• Các lệnh type và dbtype hiển thị toàn bộ nôi dung của một "mfì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 L ab
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à "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 M a t L ab
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
r hT' t 46If (
0 * «*>4
IM
Pf0fli8Summary IuuvỊkiinuil
C * -J f -X Ỉ >'4 > J? ««-V c;*.
ooo: * 0001» 00P1« 0002 t
•ÍOS*
fcata MkMfcdmihMtedigi «4>A»'i»'fcỌ‘*5r3 !ii.!Jê fcie Mit '
%
0000»
0001 0 X 1 1 OOUI t 00011 00»! 0 011 «
00ẼI 0000
.■4H..ii>.iiầ{^j:4
I
0 0211
0002»
0005 »
0061 »
0 004 »
0 004 »
ow* 0« 00M« oaw* 0306» 0000*
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 1. 10/2\5 - 3
+ 2*4
M atL a b.
5. 2+ floor (6/11)/2-3
3A2/4
2.
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.
1. 1 & -1 2. 1 3
& ( -6 )
3. 0 < - 2 0
^ 4 o
) I I A o N A I
o
5. 5 > 4 > 3 6. 2 > 3 & 1
Bài tập 2.4. Nhâp vào vector X = [ 3 1 5 7 các dòng lệnh sau và thừ lại bằng M at L a b . 1. X (3)
M a t Lab cơ bán
9 2
6],
dư đoán kết quả
5. X ( 6 : - 2 : 1 )
2. X ( ì : 7) 6. X ( [1 6 2
1 1] )
3. X (1: end) 4. X ( 1 : end-1 )
Bài tập 2.5. Cho X = [ 1 5 2 8 9 0 giải thích kết quả các dòng lệnh sau: X A>
!
2. ỵ
I 1 1 X < *
4. x < = y
5. ỵ>=x
7. sum (x) , min ( x ) , max ( x ) . 1]
và y = [ 5 2 2
6 0 0 2
6. X 1 ỵ 7. x &ỵ 8. x& ( - y )
9. ( x > y ) 1 ( y < 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.
2. a
6. b& (b)
3. a
7.
a 1 (a)
a=b==a
(xác định giá trị cuối
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.
2.
5. y ( (x<2 ) 1 (x>=8 ) )
X
(x> 5 )
3. y ( x<=4 )
X
6.
((x<2 ) 1 (x>=8) )
X (ỵ < 0
)
Cho X = [1 4 8], y = [2 1 5], và A = [ 2 7 9 7 ; 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 . Bài tập 2.8.
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
= [ 2 - 5 1 6]. Viết các lệnh thực hiện:
X
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ử. 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: Bài tập
' v(x) =
9
X-
- 4,
36 — X , Bài tập 2.11.
Cho
X
nếu
X < 6
nếu 6 <
X
< 20
nếu 20 < X < 35
= [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
2. Lũy thừ a mỗi ph ần tử của
thêm vào từng p hần tử của y. 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
2.
X
+ A
3.
4. A - [x ' y ' ]
x' + y
5. A - 3
Bài tập 2.14. Cho A = [ 2 7 9 7 ; 3 1 5 6 ; 8 1 2 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(:))]]
5 ], dư đoán
6. Bài tập
Bài tập 2.15. Tạo ma trận A cỡ 4 trong khoảng [—10,10], sau đó:
X
4 có giá trị nguyên ngẫu nhiên nằm
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 ' A = —2 5 -1 ; 3 4 9
' 3 n = -1
3
1 2 3 —2 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
— - 7 T : 0.1 : 7T. 2. Vẽ đồ th ị của h àm số y —X2sin X t heo đối X, tron g đó X 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 ] ) 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.20.
1. N hâ p vào lệnh sau và xem kế t quả:
Bài tập 2.21. 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)
z, contour(X, Y, z , contourf(X, Y, z , contour(X,
Y,
10) 20) 20)
75
6. Bài tập
2.23 . 1. Tao mô t th ủ tục các công việc sau :
Bài tập
với tên ’te s tl .m ’ thưc hiên
M a tL aB
(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
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.
Bài tập
(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?
Chương 2. M at L ab
76
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 = s q r t ( 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; Viết các chương trình
F„ = F „ _ 1 + F„_ 2 , n > 3.
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
77
6. Bài tập 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) = 2 xTn{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ố. 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 («): B ài tập 2.31.
• 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!" 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.32.
Viết chương trình vói input là một số nguyên dương n và n’1 * 2012 1 n ou tpu t là 2 SÔ Si, S 2 , trong đó Si — T k. s 2 = 53 Ap du ng tín h Yl -T, Bài tập 2.33.
k=i
sử dụng form at lo n g để in kết quả.
Jk=1
k=\ Kđ
Chương 2. M at L ab
78
cơ
bản
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. Bài tập 2.34.
• Chọn Xx = • Sử dun g công thức lăp: Xn +1 = ~(.Tn + — ); T„ 2 • Điều kiện dừng:
•En+l
3Cjị
< e.
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. Bài tập 2.35.
• Chọn X i =
ỏ
• Sử dun g công thức lăp: Xn+ 1 = -(-^- + 2x„); 3
Điều kiện dưng: •En+l
Xn
x ị
< £.
' * n 1 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. Bài tâp 2.36.
CHƯƠNG
G iải
T
gần đủng phương trình
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: rong
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ó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. Đ ị n h n g h ĩ a 3 .1 .
Để 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: 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]. Đ inh lý 3.1,
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}. Đ ịnh lý 3.2.
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ì X 0 = 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 X n =
g ( x n - 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 theo (3.3) hội tụ , tức là tồn tại nlim xn =X. ->TC Đ ị n h n g h ĩ a 3 .2 .
N ếu quá trình lạp (3.3) hội tụ, nghĩa là II—lim >oo fì là ng hiệm cỉúng của phươ ng trình (3.1).
Đ ịnh lý 3.3. •
X-
Chứng m inh. Do q(x) là h àm liên tuc n ên ta có ( lim x„-i)/ = g ( x ) . X = nlim x n = nlim g (.Tn_i) = g \n-¥ oo —K X —ĩoo Vậy X
— (X
là nghiệm đú ng của phương trình (3.1).
x„
} tinh
X
thì
83
2. Phương pháp lặp đơn
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 • 1- q
(3.6)
(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|T"n x n— 1 1
-(1 - q)
85
2. Ph ương phá p lap đơn
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
_
X
là nghiệm gần đúng thứ
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)
k
Chương 3. Giải gần đúng phương trình
8 6
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 r2 gân đúng của phương trìn h r — ợ(.r), trong đó q(x) = 1 f T —— trên đoan X
í 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 M] ta đươc 1
.. 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 •Tn — r n—1” 777 7’ ^ — 1)2,...
/Q r7\ (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 là a (hoặc b) sao cho
\fx G {(I,b\. x ấ p
x ỉ ban dầu Xo dược chon
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\ 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)
ịa. 6], hoặc trong đó 0 < m 1 < |/'( z ) | Vx G ịa. |.x’n - (A < với M2 M 2 > \ f "(x) "( x)\\ V.T G \a,b}.
2m.\
kn - 3:„_i|2 3:„_i|2 ,
(3.10) (3.10 )
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 nghiêm a của phương phương trìn h f{ 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) (zu)./ ./ (x) > 0 Vx- e [a,6].
Bướ c 3 : Từ xấp xi đầu Xo, tính • Bước
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àm hà 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 % _ m a 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
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 tron tron 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 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 thời f( (a, f {a) {a ) ) v à B (b, f{b f {b)) )) (hình 3.5). mặt phẳng toạ độ ta có hai điểm A (a,
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 X i 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: y =
f{b f {b)) - f ( a ) , \ I rf \ — f — ---- (X - a) 4- f ( a) . b — a
Cho y = 0 ta suy ra
Xi Xi = a -
Chọn X o
2 7 7 -t / ( q)-
(3.11)
- /(n) = a (hoăc Xo = b) thì d = b (hoặc d — a). Thay vào (3.11) ta có X\ X\ -
Xo Xo -
(x ~T-/ ~T-/ f[ f [ d)t -~ J/ ì(( o)
( t o)
(3 12)
AB . Lăp lại Từ (3.12) ta có điểm điểm A/i (xi, (xi, / (xi)) thuộ c cu ng AB. 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 cung c 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
Chương 3. Giải gần đúng phương trình
94
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|, Till
(3.15)
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
< —
— i n 1
A I 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 J . n
•»'0-1
f[d) - /( x „ _ i) r/
J\
[
!
\
•■/
V -^ n -l
I
7
"
*■• “ ! • • •
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 % vói sai số tuyệt đối err bằng phưong pháp
[a,b] 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: is the zero
%
X
%
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
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.
TRÌNH ĐA TIIÚC BẬC
§5. P h ư ơ n g
lì
Xét phương trình đa thức bâc n:
p{x) = 0 . tron g đó, p(x) —ao-Tn + <ïiÆ"-1 d
------
(3.16)
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 n 1 —1,
hoặc phức ) của phươ ng trình (3.16) thỏa mãn |.r| <14- -Ị—ị. l«o|
(3.17)
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 X c ủ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
97
n
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 +
Do đó, khi thay X
=
c
ữ i) X
+
G2 ) X +
• • ■+
Ũn—Ị ) X + ữn ■
ta tính dần bo
—
Ooi
b\
=
60C+
O1 ;
b ‘ỉ
—
b ịC +
«2 |
b tì —\C
+ ữn .
bn
(3.19)
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 c
(lo bo
(11
n2
b0c
í>lC
h
bo£
. .
^71— 1
(ln
bn- 2c
bn—\C
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.
Chương 3. Giải gần đúng phương trinh
98 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, V
2
)
=
-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 (.To, ỉ/o) . X uất ph át từ xấp xi ban đầu A/ 0 (.To, 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
f ( x , y ) , g ( x , y ) là nh ững hàm số khả vi đến cấp cần thiế t nào và giả thiết f( nào f ( x , y) v à g(x. y) tai điểm I\í0 ta có đó. Áp dung khai triển Taylor các hàm f( / (i'0 + ho, yo + ko) = / (x'o, yo) + 7ỉo^— |a/0+ /0 + ko~õ~\Mo + ■' '
(3.21) g (x'o +
kữ) = y ( x q , yo) + ho — IA/0 + k ( ) IA/0 + ••• ho, yo + kữ)
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) 7^0 Jo = J( J ( M 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 /iu = ko =
1
Ị (Mo) f'y ( Mo) .
J( J ( Mo) 9 (Mo) (Mo) g'y(Mo) 1
(3.23)
f'x (Mo) ĩ ( Mo) . J( J ( Mo) g'x(Mo) g'x(Mo) g ( Mo) Mo ) 1
đồng thòi ta được điểm gần đúng thứ nhất tốt hơn gần đúng Mo(xo,Vo) ba b a n đ ầ 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',
pn+ pn+l = Vn T k n,
(3.24)
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 ( M n ) f y ( A / n ) . = ____ Ị _ f(
J ( M n )
.
g ' y { M n) n ) '
ỡ ( A /„ )
f ( M n) n ì' n
J(A/n)
g( Mn) Mn) ’
(3.25) n = 0 . 1 . . . .
Ngư N gười ời t a đ ã c h ứ n g m i n h được đượ c r ằ n g , n ế u x ấ p xi đ ầ u A/o(.To .To. y0) 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ẽ y m) của hê (3.20) khi n —» oc (có t h ể xem t r o n g hội tụ tới nghiêm đúng (.T*. ym 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
Chọn A/q(.t0,
V
o
)
Ị*
= F{x,y)
Ịy
—
(3.26)
y).
làm xấp xỉ ban đầu và tính <
*1
Vi
= F { x 0 , y o )
=G{x0,yo).
Tổng Tổng qu át '
'
In
= F{ F { x n-\ n- \ , y n-i n- i )
í/n
= G ( z n—Ị , yn —i ),
Tì. =
, „ 1 ,2 , 2 ___ ___
(3.27)
Đ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* (3.2 (3.26) 6) khi n —> oc dươ d ươcc cho ch o bởi M* ( x * , y* y*) là nghiệm đúng cù° định lý sau Đ ịnh lý 3. 3 . 8. Giả a ử M* hình chữ nhật
X * . ỳ * ) ĩà
nghiệm dũn g của của hệ (3.26) nằm trong
= { a < X <
b, c <
y <
d}.
1011 10
6. Giải gần đúng hệ phương trình phi tuyến
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 dG d F + dx dx ÕF dG + dy dy
(3.28) 0 < <7 < 1.
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ế N ế u q u á t r ì n h lặ p t r ê n d ừ n g ỏ bước bướ c t h ứ n, ta có x n sa X* . y n sa y * và sai số đươc đánh giá theo biểu thức |x„ - x*\ {|fcc - n\ + \d - r|} r|} . x*\ + yn Iy n - y*\ y*\ < qn {|f
(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
2x2 2x2 - xy - 5x + 1
=0 = 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 y 2
— 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à các lân c ận tươ ng ứn g M vối các D n
=
{1 <
X
< 2; -2 < y < —1} ;
D m
=
{3 <
X
< 4; 4; 2 < y < 3}. 3} .
Chương Chương 3. 3. G iải gần đú ng phương phương trình
102
ở đây, ta tìm nghiệm trong lân cận cận của Thủ tục tính tính hàm F:
M vói
Xo = 3.4;
= 2.2.
^0
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.
103
7. Bài tập 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. sin X + cos X = Ax\
2. X-3 - 2x2 - 4x + 7 = 0;
6
3. .T2 —10 lg x = 2;
7.
4. (x - l )2 = ị r x ;
8 . X4 —'3x + 1 = \).
.
X
= sin3x;
X4
+ 3.r = 2.0;
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 (
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:
X 2 + y2 = « X 3 — y
1
—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
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:
rong
Oỉl^l
+ ^ 12 ^2 + ' ■ 4"
o.\nxn
— O l , n + l
■
ữ2nxn
= «2,71+1
+
Q m l^ l +
CL 22 X 2
+ •• +
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,
105
(4.2)
106
Chương 4. Phương pháp
vSố
trong đại số tuyến tính
trong đó, Ơ11 A =
«2 1
«12 «22
®ml «m2
••
« in
••
«2 n
••
«mn
• b = («!,„+!, «2,„+ 1 , •• •
X
=
( x \ , X 2 , ■■
e
Rmxn là ma tràn hê số;
+ )‘ € Rm là vectơ (cột) vế phải;
71 1
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 +
«
1 2X 2 + 0 1 3X 3 + 0 1 4X 4
=
O i5
O21X1 + 0 2 2X 2 + O23X3 + 0 24 X4
=
025
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
n
Ta luôn có th ể g iả thiết 0 n Ỷ 0. Trường hơp
Oii
.
(4.6)
=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
trong đại số tuyến tính
số
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ý
ttll
(4.7)
còn (1)
«à =
O ii« n
A
0 ,1 ---- ----- = 0 ,
I -
n
A
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
(1)
,
0 2 2X 2 +
(1)
«2 3
,
£3 +
(1) O ụ X ị
(1) , (1) . (1) O32 «-'2 + O33 £3 + «34 £ 4 (1)
,
a 4 2 x 2 +
(1)
,
O43 £ 3 +
(1)
0 ^ 4 '£ 4
— «15
_ (1)
=
0-25
_ (1) — «35 =
(4.8)
_ (1) « 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;
0 4 ni2 -n2j _ Q3 c 7n ’ i = 3,4; j = 3 , 4. 5. ,i = « ò -------
(2 )
(1)
„ (
1)
„ (1)
(4.9)
««22 (1)
Kết thúc bưóc 2 ta được hệ O l l l l + a 1 2 x 2 + Q 13£3 + « 1 4 ^ 4 «22^2
+
023 £ 3 +
0 2V j -4
— 0 [5 — fl( l) — °25
„(2)-. 4 _(2)T O33 £ 3 + O34 £4
O M « M I I 3
(2) . (2) «43 £3 + «44 £4
_ ,,(2 ) - O45
(4.10)
2. Phương ph áp giả i đú ng và chương trình
Mat L ab
109
• Bước 3: Loại trừ ẩn ,r 3 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:
Xi
4
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
«11 «12 «13 «14
«1 5
Các công thức tính («)
H ĩ
I
O Q
«21 «22 «23 «24
«2 5
«31 «32 «33 «34
«3 5
«41 «42 «43 «44 (1) (1) (1) «22 «23 «24
«4 5 «25
(1) (11 (1) «32 «33 «34 (1) (1) (1) «42 «43 «44 (2) (2) «33 «34
«35
(b) (1) « l — j — -«-i l---0 ilij — ỉằ'ij
«4 5
i = 2 ,3 ,4 ; j = 2 , 3 , 4 , 5
ai>
(c) «(2) uij = «(1) uij
Ai (2) (2) «43 «44 (3) «44
«45 «45
„(1)„(1)
"
(1) «22
*= 3,4; j = 3,4.5 WAĨ) (3) _ (2) «43_«3 j . (d) «4 j «4i (2) ’ 3 ___________________
4 -
«
«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,X 3 , x 4)t của hệ (4.6) được tinh như sau: • Từ (d) suy ra X 4 = % r; «14
r (2) -
Từ (c) suy ra x3
«3 5
. ( 2)
«34 X ị
'
«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
2.2 Chư ơng trìn h
I l l
Mat Lab
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 +
<
8.5xi - 4.8x 2 + 0 .8 x3 +
7.2x4 = 6.68 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
-
8.9X 3 +
3 .3 x 4
=
1 0
1 4
x
2 -
Nghiệm tín h th eo chương trìn h X! -
5.7x 3 -
0 .9 6 7 1 0 ;
x 2 =
M a t L ab
0 .12480;
x3 =
là: 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, .. .
Chương 4. Phương pháp số trong đại số tuyến tính
112
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
•
■
CLị\
ftlq Qln
dỊj
[ÕĨ7|
■
■■•
1
ttiq Qin
ơi,n+1
(Ipq
opn
ơp,n+1
^ n g
^nn
* ln .n + l
[yl|fc] = ^ 0) =
dpi CLn\
.
a PJ
••
fl'Tlj
•••
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,
—1 , 77; cột thứ j ứng vói ẩn
7
: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 atL ab
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ì Ị . , -ơpqũịq aỴq = a-iq = 0 . ỉ = 1, n , ? / p , (Ipq (1) _
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 ) 11
■
« í?
.
(?) »1
■
a«;>
.
(Ị) p i
.
o ( 1) w
nì
0
an (1) in
„(1) “ 1,11+1
0
a (1)
uj,n+l
o ' 1)
m
a<0
ịẫ/pn
fl(l)
0
^nn
„(>)
aw
a p,n+ 1 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 = — (2 n 2 + 3n 6
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 4 5
17
11
10
36 26 65 50 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
Chương trình
115
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 "1 2
- 6
-\- x 2 ~
3x3
Xi
— 2x2 -
X ị
= -6
x 2
+ x3 +
3 x'4
= 16
X \
2xi
— 3x 2 +
2. 7:3
x'4
= 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 trậ n chuyển vị của 711
7l2
■
q
0
722
■ ■•
72
0
0
. ■■
7
p là m a
1. ,
n
Từ Ax = b ta suy ra:
Q'Qx = b.
(4.17)
Qx = y ,
(4.18)
Ợ y = b.
(4.19)
Đăt:
thay vào (4.17) ta thu được:
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
117
Mat L ab
2 .3 .1 . P h â n t í c h A = Q l Q Ta có: «11
« 12
«21
«22
«112
1
.
0
9n
921
922 •
0
0
922
•
Q‘2n
9m
9n2 '
^/nn
0
0
.
Qrtĩì
«ln
9n
■
«271
•
«1171
=
0
912 ■ • 9ln
n
=>
hay 9n — \/«ĩ7; 9i j — —"> i —2, n; 911 ?V - ỉ ^«li - V2-7 7fci 9li. — J ) i = % n; Qij ~
«ij
(4.20)
~ £ f c = l QkiQkj .
' (* < 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
921
92 2
9nl
9ti2
■.
0
91
'6 1 '
0
92
(>2
9nn
=
V
ỉ/n
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
Vi =
<1\1' bj -
(4.21)
E U 1! 9ifcì/fc
( Ỉ > 1 ).
7«
2.3.3. G iải h ệ d ạ n g (4.18) Từ Qx —y ta có
(]ln
Vi
Xl
Ợ ll
Ọl2
•••
0
<722
• ■■ Ợ2n
x 2
0
0
... Ọnn
x n
=
m
'Jn
Từ đó suy ra:
%TI —
Vn
(Jnn1 Vi -
n Ẹ
(4.22)
7«*-TJfc
= -------- — --------, (j < n).
( / / 1
, /72, . . . . ỤnỴ đươc tính theo
• 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
A -
2 5 1
1
2 'ì 1 ,
1 3
b
= 1 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
0 0
712
713
722
723
0
733
=
Ì
2
r
0 0
1
-1
0
1
• Bước 2: Giải hệ Qly = b the o công thức (4.21) với
Q1-
’l
2
0
1
- 1
0
0
1
r
1 " ,
b=
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) ;
Chương 4. Phương pháp số trong đại số tuyến tính
120 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 =
'
—7/l2-t’N - l +
X N
=
i = \ , N - ỉ
(4.23)
Ơ 2 -
tron g đó: a, > 0, bị > 0, Cị > a, + bị, i — 1, N —1 0<
ĩ
U
<1;
0<
ị
/ 7 ? 2 <
1;
(4.24)
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 X i
= 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' Cị - a,a,
c, - n,a,
7 = l , N -
1.
(4.26)
1,0.
(4 .2 7 )
n 7)2 + rn2 + P
XN — — xi —
——— ;
ơti+\Xi+i + 0i+i, i =
N
— 1, N — 2 , . . . ,
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).
Chương 4. Phương pháp số trong đại số tuyến tính
122
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: =
íi
_
3-0 X'j+ 1
™2\ V n =
n2; (lị ' ft' _ ^ihi+1 T fi Ci Ẹi-ị-lbi Cị íi+l^i
= N — l . N - 2 , .... 1.0:(4.29)
ni 4- m i/ii
“T £ ! 1 - m ^ i = €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.
X'9 — 2xio
i = 1 ,9
= —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| m
||/ 1 ||(1) = m a x ^ |a ,j | nj=i
r m n_
(2)
Ẽ Ẻ K'ỉ i= 1 J=l
1
>/3 (chuẩn Euclide).
(4.31)
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, và ta cũng có các chuẩn của vector X như sau: m a x |.7 I
^(°°)
®||(1) =
|z»|
(clxuẩn cưc đai) (chuẩn tu y ệt đối)
j=i rn
^ ()=
1 11 2
j|
„)' e RT"
X r
(4.32)
1 1/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 ^ . *= 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 Đ ị n h n g h ĩ a 4 .2 .
lim a\k^ — a,j Vi,j
(hôi tu theo dãy ph ần từ)
hoặc
\\A^-A\
(p)
0
khi Ả: —» oc (p — 00, 1 , 2 ) (hội tụ theo chuẩn)
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
— X, Vi = 1. m
lim k-Võo hoặc
||.T^ —.r||ll(p) —>• (} khi Ả: —>oc,’ p1 — 00, 1 , 2 . II
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 IMI(p) < 9 (p =
tia trận a th ỏa m ãn diều kiện . , ),
(4.35)
00 1 2
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 11
II(p)
< —^ - | | x (fc)- x (fc~1)|l 1 — II
. p = oc. 1.2
II(p)
||x (fc) - x*|| < —^— ||x(1) - x (0)|| II ll(p) 1 — rj II ll(p)
p = 0 0 , 1 , 2
Để sai số giữa nghiệm đúng X* và nghiệm gần đúng cho trước thì từ (4.36) ta suy ra ||x(fc) - x(*-1)| |
II
II (p )
< (' ì ~ qK = q
x (fc)
.
(4.36)
(4 .37 )
nhỏ hơn £ >
0
(4.38)
s.
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" Khi đó chọn k — ỊJ] + 1 .
= J '
p ™ - Ẩ ll,, ,
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 = 0.09xi 4” 3x*2 — 0.15x3
8
= 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 đó: a =
0
-0.06
-0.03 - 0.01
0 0.02
0.02
2
0.05 ; 0 = 3 5 0
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)
=
,x(3) =
(1.92; 3.19; 5.05)' ; (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)); X0=X; if
relerr=err/(norm(X)+eps);
numites=numites+l;
(err
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 8x 1
= 22.99
+ 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: X i
= 1.50; a,’2 = 0.15; x3 = 1.19;
X i
= 0.89.
129
4. Sư không ổn định của hệ đại số tuyến tính 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 .01*1
thì nghiệm sẽ là
*1 =
5;
*2
+
=2 *2
= 2.05
= - 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 < Giải hệ ta được
*1 =
0.5;
2*1
+
8*1
+ 3.03*2 = 7.03
*2
*2
=
2
= 1 . Thay đổi hệ trên bởi
Ị 2* 1 + *2
=2
[ 8*1 +3*2 = 7 và giải ta được
3 1 =
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
5.2 Phương pháp tìm A
131
MatLab
trong đại số tuyế n tính
Công thức tìm A~l đươc cho như sau: /T' =
- . ư l . (dot A / 0), dct A v
(4.40)
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),+J M , 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ó: (l\n
«11 • au • «21 • «2j • •
«,! «Il 1
■
«ư
•
•
(ln j
^211
«.'11 ■ • «21 ■ •
ain
«il
ũnn
«ni ■ ■
«Il J
.. 0 .. 0
%2n Xịn
0 ...
1
.. 0
£ nTt
0 ... 0
.. 1 (4.;
X Ỵị
• • xij ■
0 1 0
1 0
l
• •
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: (4.42) AXj = Ej, j = T J i . ứ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.
ý 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: Chú
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
Chú thích A E 50 107 36 1 0 0 Ã 25 54 20 0 1 0 31 66 21 0 0 1 0.02 0 0 1 2.14 0.72 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.62 0 1 0 -0.34 -1.32 Tính theo sơ đồ (4.15) 2.16 -4.28 0 1 0 -7.84 1 (2) -1 2 0 Chia hàng thứ hai cùa A{ 1!cho 0.50 0 1 4 Tính theo sơ đồ (4.15) -0.96 0.68 1 0 0 0.04 -186 129 196 Tính theo sơ đồ (4.15) 1 0 0 Ã(3) 95 -66 -100 0 1 0 Chia hàng thứ ba của .4l2i cho 0.04 -24 17 25 0 0 1 Bước
-186
Vây A-' =
95
196
-66 -100
-24
C h ư ơ n g t r ìn h
129 17
25
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
Chương 4. Phương pháp số trong đại số tuyến tính
134
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ử
Q~l —
Từ đồng nhất thức Q.Q~'
Qn 712
=
•
« 1,1
«11
«12
«21
« 22
•
«2,1
«nl
«n2
•
« nn
E, ta
CÓ:
■ ■ 7 ln
«11
«12
• •
«ln
1
0
. .
0
0
1
. .
0
0
0
. .
1
0
722
•
72n
«21
«22
•
«2,1
0
0
.
7rm
«nl
«n2
• •
«rin
—
(4.44)
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 < Ả:); f/n-2,n-2 j=„_i 1 " « 2,fc =
£ < /2 jt tjfc , 922 j = 3
(4.45)
A. = 3 , 4 , . . . , 77 (.7 < A;);
1 n «I.fc = - — 9n j=2
k = 2,3,. ..,77 u < k ) .
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
1 2
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
Q Tìm 0
1
1
2
1
0
1
-1
0 0
1
the o công thứ c (4.44) ta thu đươc:
o
1
1
-2
-3
0
1
1
136
Chương 4. Phương pháp số trong đại số tuyến tính
Khi đó:
A~ l = Q - ' i Q - ' Y =
C h ư ơ n g tr ìn h
14
-5
-3
-5
9
1
-3
1
1
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
137
M at L á B
§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)
\A —XE\ gọi là đa thức đặc trưng. Giải phương trình đa Da thức P{X) 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:
dcỉ{P - \E ) = det
P\ - A p2 P-.Ì ■ • pn-ì pn 1 0 0 -A 0 0 0 0 1 -A . 0
0
0
0
0
0
.
-A
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. — An = [dị]’] = [ a , j ] . Vi. j = 1,71. Giả thiết Đặt 1
0
.
0
0
0
1
.
0
0
11 11,11-1
n i»
0 Ó) 0
n u2
■ ••
0
0
Ỷ 0- Chọn
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 ọ j l 'nĩL
'nl" ,
7 ’)
'll.tl— 1
Chương 4. Phương pháp số trong đại số tuyến tính
140 Tính A& =
ta đươc: r
„(2 )
„(2)
“n 2(2) 1
f l
a
„(2 ) « 1 ,7 1 - 2 „(2) « 2 ,7 1 - 2
“ 12
i l
<2 ) “ 22
(2 ) “ 1 ,1 1 - 1 „(2) “ 2 ,11— 1
n
t
C N
c
•
(2) “ 2,11
n
-4i2)
(4.50) „(2 ) ««í71- 1 ,1
(2)- 1 ,2 «0 71
0
0
• Bưóc 2. G iả thiế t
„(2) « 71 — 1 ,71—2
•
...
„_2
„(2 ) « 71 - 1 ,7 1 - 1
„(2 ) "' 71- 1,11
0
Ỷ
chọn
1
0
0
0
0
0
1
0
0
0
„(2) « 71- 1 ,1
„(2 ) « 71- 1 ,2
(2 > « 71- 1 ,7 1 - 1
„(2 ) '^ n — 1,71
0
0
0
1
0
0
0
0
0
1
Mo
(2 ) « 71- 1 ,7 1 - 2
•
f l
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à
M ĩ ' =
1
0
0
0
0
0
1
0
0
0
fl( 2) «71-1,1 a (2)
^ n —1 ,7 1 -2
„(2) «71-1,2 fl(2) ^ n - l ,n - 2
...
(2) «71
1
„(2) «71-1,11-1
„(2) ^71-1,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: «ĩ? 4
/1(3) _
J l n
?
(3) «71-2,1
(3 ) “ 12 (3 ) «22
„(3)
«7 1-2 ,2
„(3)
„(3)
„(3)
a (3)
«1,71-2 «2,71-2
•
••
«1,71-1
« l 3n
«2,71-1
„(3)’
i3 )
(3 ) «11-2,71-2
^ n —2,71 —1
«7 1-2 ,7.
0
0
1
0
0
0
0
0
1
0
(4.51)
6. Tri riêng, vector riêng của ma trận và chương trình
141
Mat L ab
• 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 _,M b b_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 ~ \ tức là p ~ An. Số lương phép tính để biến đổi từ nhân và chia.
(4.53)
đến p cỡ N = n3 —n2 phép tính
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 sẽ là: 2
det(A<,2)
- XE) =
«n - A «ỉ?
«12 «M - A
n{2) «n-2,1 0 0
„(2) «11-2.2 0 0
[-A
„(2) «1,0-2 n(2) «2,11-2
„(2)
«1,71-1 „(2) «2,71-1
A «n-2.11-1 fl(2) ••• „(2) «11—2,71—2 - A „(2) A 0 « - ,n-l - ^ 1 0 11
1
- A) - «n— l,nj det ( ¿ S a - A /ĩ) ,
J2) „(2) «2,71 «i,n
J2) «71-2,71 J2) ** n—l,n -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
c ~ l = c . Tính à •12) = C A P c thì A&C Dễ thấy dctC = ±1 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à
14: ỉ
chương trình Mat L ab
Y - 0 / 1 ,// 2 . ■• .,yn)1 ta có: 1
p i
P 2
P n
P n
1
0
0
0
0
1
0
0
0
0
1
0
U\
V\
1) 2
ì ) 2
=A
Vn
Vn
hay P 1Ỉ/I+P 2Ỉ/2 + -----tPnỉ/n = A■yì V\
= Aị/2
U2 =
Aỉ/3
(4.56) Aj/„_1
Vn—2 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 Ví du 4.11.
Tìm tri riêng và vector riêng cùa ma trâ n A
A = ylh).
Mi -
(1) — « 3 2 = 1 ^ 0 nên chon Do n 12
ì
0
o"
0
1
2
0
0
1
=>
A/r1
=
Từ đó ta có: 2
.4(2 _ M l A (ỉ)M ị ì =
0
0
1 -2
0
0
1 __o
1 5 -5 0
0'
1
1
0
1
0
1 3 1 0
Giải:
1
1
2
144
Chương 4. Phương pháp số trong đại số tuyến tính Bước 2:
a^2
Do
— 1 ^ 0 nên ta chọn 1 5
-5
M* = 0 1
0
0 0
1
M ĩ
=>
1 _
1
-5
5
0
1
0
0
0
1
Từ đó ta có: 7 / 1(3)
- -14 8
= 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: ì
Xx
=
- Vói A'2 =
x2' ệ
c o
i í
0
-5
5
V
0 1
-2
0
1
0
4
0 0
1
0
0
1
1
-5
5
‘4
Y —
9
1
2 thì
{ M ỹ ' M ỉ ' )Y 2 -
0" ì
ì
0
0
1
-2
0
1
0
2 — 0
0 0
1
0
0
1
1
1
-5
5
Y
’ 1 "
0
1
0
1
1 0
0
1
1
’- Y
2
/H
x 3 - ( M r 1M2- 1)y 3 =
ì
0
0
1
0 0 C h ư ơ n g tr ìn h
0‘ ì
0 ’ ì _2
=
-1 1
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ị y\(n) !Ẩ V 1 .. ứ" y\ (0) (n-1) bi Àn) V2 V?-* .. yị]) ?/2 = —
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 ( 2) y(n) y(i) 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. ý 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. Chú
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. ý 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. Chú
Ví d ụ 4.12.
1 2 3 4 2 1 2 3 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 .
A
đúng trị riêng Y°
ỵ(0 =
4 y(0 )
ỵ ( 2 ) = a y [ ì)
12 3 4 2 12 3 3 2 12
1
1
30
0
2
22
18
4 32 1
0
3 4
0
147
và vector riêng
2108 1704 1656 1992
208 178 192 242
20
o t
I I
I I
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, ta có đa thức đặc trưng
ỉ>2
= -40,
63
= —56,
64 — —20 và
p( A) = det í A - XE) = A4 - 4A3 - 40A2 - 56A Chương trình
20
từ đó
.
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 ị ỷ 0fc=i
(4.64)
148
Chương 4. Phương pháp số trong đại số tuyến tính
Do AXk = xkx k nên n
AY
n
= Ỵ] ckAXk —Ỵ2 CfcAfcX*; k=l
1 k=
A2Y = A( AY) = ¿ 2 c k\ kA Xk = t c k X ị X k , k= 1
AmY
(4.65)
fc=l
= 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Ị. Từ hệ (4.65) (vói
Ci
(4.66)
Ỷ 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 ì ( — Ai
—> 0 {k — 2, n) và khi đó ta có:
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ó:
Al* l k v
j = 1’n-
(4.68)
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 ;
(4.69)
|Ar|> |Ar+i| > • • • > |A„| Từ (4.65) ta có: AmY = \ ? ị i r.kX k + Ề CjXJ'Xj k=\ j=r+l
= K ¿ r t x t + Ề k = 1
,
c,ărx,
j = T + l
rk ^
0, k = l,n.
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; |Ai I =
IA2 1> IA31> • • • > |An| .
(4.71) (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ó: A Y
= Á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 « -42fcy
«
A?*-1^ ! * ! - C 2X2); 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 Aĩ ~
(A2kY)
(4.75)
’ J ~ '
Tro ng công thức (4.75) cũng có thể lấy: A1 ~ ị 4'2/t-iy) ’ "7
(4.76)
n'
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 « A2kY «
A f - 1 {Cl x l -
c 2x
2);
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 232 435 329
Y A Y
A2Y Á3Y
A4Y
AbY
A*Y
1 1 1
78 134 171
900 1569 2041
10589 18512 24207
125128 218927 286654
1480345 2590563 3393124
7 12 14
Ta thấy ^
11.8306, 3 =
«
{ A * Y ) j
1
« 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à:
Ai
— «11 > 0;
«11
A2
«12 >
«21
A,
0;
0.22
. «lfc
«11
«12
«21
«22
••• n2k
Ofcl ak2
(*kk
>
0, VẢ; = 1, n.
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 hay
n
y 'aqXi j=i
—
\Xj,
(4.81)
i = l,n.
(4.82)
Ta thấ y h ê (4.82) gồm phư ơng trình, n + 1ẩn là Xị i = I Trĩ và A. Nhưng do các vector riêng ứng với trị riêng nào đó sai khác nhau một hằng số 2 , . . . , xn, ta có thể chọn một ẩn nào đó bằng Iihân, nên trong các ẩn Xi,X " 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: 11
• Bước 1: Chon x„ — 1 , hệ (4.82) được viết lại dưới dạng:
Xi -
1
à n -1
X = j = 1
n—l ^
OịjXj
T
Oị.n
i — 1 , n — 1
2 = 1
0-ijXj+
(4.83)
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: (m)
x i
T ry 1
=
A(m) =
n - l
\ ->
(m -1)
b=' +
j=i
«n,n,
i = l ,n + <*i.n , iì
rn
=
1
(4.84)
1,2,
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 , j=i
(4.85)
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
j=i
x i V j
- Xn-1-
(4.86)
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 2
1
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
— Ax'2
+ 5.i.'2 4“ X'3
2x i 4-
•
Bước 1: Chon x 3 =
1,
X2 4“ 6x3
(ư)
— A.X3
từ (a) ta suy ra = J (4x'i 4-
X ' i
4“ 2)
2x2
I X2
= J (2x'i 4- 5x2 4-1)
Ịa
— 2xi +
(b)
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 = 0.89, xịp — 1 . Cứ thế tiếp tục ta thu được kết và xị1^ = 0.89, quà lính nhu trong bảng sau: 2
m
r (m)
Xj
J r n ) JU<2
A(m)
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 + X 2y2 + =»
2/3
= 0
= -0.80771/! - 0.7720.
Từ hệ (a) ta thay Xi bỏi yt, với
yx
2/3
2/2
(c)
= 1 , J 1 3 theo (c) ta thu đươc hê
= 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: (m) \(rn) V\ 0 1 5.42 1 4.85 0.52 4.64 2 0.35 0.28 4.56 3 4 0.25 4.53 4.50 5 0.23 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
rn
Chọn A2 « 4.4867; yx ~ 0.2170. Tha y V i vào (c) ta có Vậy A2 4.4867 và Y = (0.2170; 1; -0.9473)'. ss
2/ 3
« -0.9473.
157
8. Bài tập • 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 +
K 0.21702! +
22
-
23
= 0;
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:
Chương trình
\x «
8.3871. X ss (0.8077; 0.7720; 1)';
A2 ~
4.4867,
A3 «
2.1260, Zta (1; -0.5673; -0.3698)'.
Y «(0.2170; 1; -0.9473)';
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 4 7 2 1 , 1 3 9 2 9 1 0 8 ■3.5 1.0
3. A =
0.1
-
0.1
1.1
-
-o.r
1.0
0.2
1.0
5.7
-
0.2
0.2
0.1
-
0.1
1.3 -0.4
c t
10 2
0.1
3 .1
0.2 1.9 4. A = - 0.1 0.1 0.3 0.2 1.7 0.2
h=
‘6 6
-
0.2 2.1
0.3 0.2 -0.4 4.1
,
I I
7 2 0 1" 1 0 3 2 , 2 1 0 3 3 0 2 7
’ 0.2 ■ 0.8 b= 5.9 -2.3
3 2
158
Chương 4. Phương pháp số trong đại số tuyến tính 6.1 1.7 1.0 1.7 1.6 1.1 5. A = 1.0 1.1 1.0 9.1 8.1 0.8
9.1' 8.1 , 6.1 7.1
18.27 12.88 b= 9.51 26.07
3.2 7.7 0.6 1.7 1.6 1.1 6. A = 1.0 1.1 1.0 9.1 8.1 0.8
9.1' 8.1 , 6.1 7.1
8.26 1.89 b= 1.15 2.40
Quá trìn h tính theo chương trình (nếu có).
M a t L ab
lấy tới 7 số lẻ sau dấu phẩy
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.r 3 + x 4
6.X — 5y +
1
=
3.X + \ \ y
7 z +
8í
=
3
- 3x 2 + .r3 +
T ị
= 0
4.X] - x 2 - x 3 -
X ị
= 1
3x + 2 y + 32 + 4/
= 1
= 9
X +
= 0
.Ti
\x.\
+
3x 2 — 4x 3 — X ị
2. <
y
+ 2 z +
4 1 = 6
+ z
Bài tâp 4.3. Giải hê phương trình sau bằng phương pháp Choleskv (khai căn).
1.
A =
5 3 3 6
2
1
1
1
2
2
1
5
1
4 ; 7
1
2
1
6
,
6=
2
7 4 3 1 4 8 2 5 , 5= 2. A = 2 7 4 3 1 5 4 11
l.í 5.0 2.2 1.0 6.4 1.2 0.2 3. A = , ỉ>= 3.7 0.1 1.2 3.6 1.1 2.2 1.1 0.2 1.1 6.4 '4.9
1.0
0.1
{ 10
9 9
8. Bài tập
159 7.7 1.2 1.2 8.7 1.1 1.3 2.1 1.1
1.1 1.3 8.3 1.0
2.1 1.1 , b= 1.0 4.9
’9. 8 2.3 2.1 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 1
.
X 1—
5.T2 + .T3
.T1 +.T 2 — 4 .T3
2
.
2 x i + 3 x 2 — 4 x 3 4- X ị
= 16 ;
3.
=7
X i
5
1.02i' - 0.25y - 0.302
= 0.515
—0.4la: + 1 .1 3 y - 0.152
-
.
1 555
- 2.T2 - 5.T3 +
.T1 -
T ị
.T + x 3 - 4.T4
3 2
10.T] + 2.T2 — X3 + 2.T4
3 2 1
-4
;
- 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.
1. A -
3 2 2 1 3 1 y 5 3 4
3. .4 =
1 9 6' 2. A = 2 5 15 ĩ 6 15 46
13 14 6 4 ' 8 - 1 13 9 KỊ 6 7 3 2 9 5 16 11
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
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:
Bài tập 4.7.
1
. A =
6.1
1.0
5.1
1.0
0.5
6.1
5. 1
6.1
7.2
2.
;
A =
5.1
1.1
l . o
1.1
6.1
1.1
1.0
1.1
5.1
"
Từ đó tìm trị riêng và vector riêng tươn g ứng. 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. Bài tập 4.8.
1. A =
5.7
1. 2
2.0
1. 2
2.7
1.0
2.0
1.2
7.2
;
1.0
Xây dựng chương trìn h Bài tập 4.9.
'6.1 1.7 2. A = 1.7 1. 6
M a t L ab
1. 1
l.o' 1.1
5.1
minh họa th u ậ t toán trên.
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 1.9 2.0 1.7 1.8 ; 1. A = 1.8 1.7 2.1 1.9 1.7
1.9
1.8
2.0
'5.1 4.1 3.1 2 . 1 ' 4.1 6.1 2 .1 5.1 2. A = 3.1 2.1 5.1 4.1 5.1 4.1 6.1 2 .1
Kết qu ả tín h lấy 5 chữ số sau dấu phảy. Tìm trị riêng và vector riêng của m a trậ n A theo phương pháp trư c giao. Bài tập 4.10.
5 3 1. A = 3 6 2
1
2 1
ĩ
2. A =
5
Xây dựng chương trình
M a t L ab
4.9
0.1
Ì . r
0.1
3.6
1.0
1 .1
1.0
4.9
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
thực tế, ta thường găp dang hàm số ỊJ — f(.r) mà không 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 rong
T
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 ;
161
X ị
£ [a, b}.
(5.1)
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 ị
Ị thì ta gọi
|(7. 6
y = pn (f)
Rí / ( f )
là giá tri ngoai suy. Hiêu số
Rn(x) = f ( x ) - P n (x) gọi là sai "ố của phép nội suy tại điểm X .
(5.3)
162
2. Da thûc nôi suy Lagrange
1.2 S iï du y n h ât cùa da thiic nôi suy 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.
Dinh lÿ 5.1.
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„ nghîa là //(.r) là da thùc bâc < chï xày ra khi
= y,
-
yt = 0, Vi = Ôÿn,
n cô n f 1 nghiêm r, (i = 07 n). Dieu này
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 (5.4)
y» = / (-T.), ' —0, n vdi câc môc nôi suy n < .r0 < x\
<
<
x,n
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
cüng là da thùc
0
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 ] )
Lj
X J _ ị ) {X
. . (./
(l ) =
0
ị , i,j
l , j
1
Chon
7
3'j-f 1 ) •
,=;)
*
• (./■'
Xjì
__
= 0,7/. 0,7/ =
(5.7)
Tỉ
n('i')= Y t'MVy
1
(5.8)
I-il
Đ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). (ĩ/ + 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.10)
(5.11)
165
3. Đa thức nội suy Newton có mốc cách đều
2.3 Ch ưở ng trình
Mat L ab
function v=lagrangeinterp(x, ỵ, u) % lagrangeinterp computes % the Lagrange interpolation polynomial %Input: _
ỵ are vectors of the same length
X,
% 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
T,
1
Vi
17
Áp dun g chương trình
1 2
2
3
3
4
17.5 76 210.5
M a t L ab
4
*ỉ 7 1970
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
=
X o
< Xi < •■•
<
xn =
b
và /? = Tị —.Tj_I = - — - , (j = 1, n) gọi là bưỏc từ mốc Xi n
I
đến mốc Xị.
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) . fc=o
(5.15)
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 - ì )
h(t - k)
- :r-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)
Ta thấy
= Prxựi)
=
Vi,
í' = H T n .
(5.17)
169
3. Đa thức nội suy Newton có mốc cách đều • 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) -
Pn (t 2)
= p„(2) = «0 + « 1.2 + nọ.2 = i/o + 2 (?/i - i/o) + 2(72 = ì)2
«0 +
hay
a2 =~
«1-1 - y ỉ -=> (Xi - Ỉ J \ - a0 - Vỉ - y0 - A y0;
yo — 2 j/i -f ị /2 _ 1 . 2 Ọ ~ 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 + /í) P)1 (() - yo +
Ayo +
<(<- 1 )■Aa 2 i/o 91
+
+
i( í - ! ) • • ( « - n +
l)
A"//o,
(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 X 0 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;
Chương 5. Phép nội suy và xấp xi hàm
170 • khi X
-
• khi
=
,rn_i ta có
X X k
thì X k
.T„_1
— xn
— T,n — -lĩ = ht suy ra t. —— 1 ;
=
— ht suy ra / =
— hk
— k.
Hoàn toàn tương tự như trê n ta được Pn(x) = 1>„U„ + ht) = pn(t) = y „ + YịVy„ +
— V 2 y 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) + 1 ') t A. >1 , 4 - t{t. ' — — Vn + 77Ay« ! + “ 9I—-A 2y„_2
, tịt + \){t + 2 ) • • • (t + n - 1 ) Ar( 4 ^ ỈA>n\; (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+,,(í) ’ w = („ ị ì) ! w " + l ( z > -
Neu sử dụng công thức nội suy Newton tiế n (5.19) với X
(5.22) :í.'o + ht thì
w„+i (x)= n (x ” * < ) = ,|n+i n ( í - * ì Jfc=0 1=0 Lai do /(n+0(x) = lim — — — , nên ta có th ể xem v ’ AAÒ hn+l A n+1ỉ/o
/ (n+I)(0
Vây
là công thứ c đ án h g iá sai số.
Ạn+I.,
))1+1
n
(5.23)
3. Đa thức nội suy Newton có mốc cách đều
171
ý 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 bảng), trong trường hơp này Chú
• nếu X <
Xo
ụ
tại điếm X
ị
[xo,x„Ị (ngoài
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 0.9523
1.5 0.9661
1.6
0.9763
1.7 0.9838
1.8
0.9891
1.9
2.0
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 tiến (5.19), vói ĩ = — = 0 .8; h = 0.1. Kết quả thu đươc h
SUV New ton
<Ị>(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
173
4 Phép nội suy ngược 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 p{y) w
X -
Qn(y) =
j =0
Lj( y)xj .
( 5 .2 4 )
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 +•
trong đó
Á t ) = /
+
ta suy ra
t= trong đó t =
y - y
Ayo
0
1 ^(f) =
A(/o
0 (0 ,
(5.25)
X —Xo /) '
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 =
(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 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.
1. v). Hãy
177
5. Phương pháp hình phương tối thiểu...
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 {
{k = 0 , m )
(5.31)
là các hàm đối với X . Ta gọi m
Pm(x) = ỵ,akVk(x) fc=o
( 5 . 32 )
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»; Hãy tìm hàm
(5.33)
Hì
(5.34)
rn
ộ («0, « 1,.. ., am) = Y , V i - Y l ơk-Pk(Xi) Í=1 L
đạt min
(5.35)
k - 0
trên ịn. h} theo ph ân hoạch A = {fl = Xi < X2 < ••• < x n = 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 ơnk
(5.36)
178
Chương 5. Phép nội suy và xấp xỉ hàm
hay
n !Ji 1£— I
-
£ ak M k=0
* ,)
ỊJ ý>o(;<;i) — 0
m 11 ỉ/i - E nkpk{:rt) > 'Pki^ i ) —h £ i=1 JJ k=0
//, - E akSk(-Xf) ( ĩptn{3'i) — 0 £ i=1
fc=o
JJ
hay
n £ 1-1
n pa (•!',) ý>k ( !-,) Vl) +
n
£¿>1 1=1
[ j ’i ) p k { ! ,) ữ l +
—
■• • + j=l
i=l
( ri)'pk (•»■■;) «m
yi Pk(^i) 1
A: — 0 . / / /.
Ký hiệu '¿V — ('Pr(^’l ) ị pr{x 2 ). . . . , 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-
Ị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 .3 7 )
179
5. Phương pháp bình phương tối thiểu...
Hệ (5.38) là hệ đại số tuyến tính /// + 1 phươ ng trìn h , III + 1 ẩ n là (lo. II I ,.. .. 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
( I \go- 'pl 1 • • • 1
[v^O5 go
Ị gi •y^o] ■• ■ \gm) go\
[‘A l - T? ij
[^1' V^l]
• ••
[ ■p Ti nV 'l ]
(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ố ộ{
V3(*) = x > i ^ ( - T) j =0
(5.40)
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 -
(5.41)
Y , [.Vi - Ĩ5( ir1)l2j
là sai số của phươ ng ph áp xấp xì trun g bình phương. Xét lì
52 lĩii ~
Ĩ--I
^ T')]2= [y - 7- ?/ -
7}
= Ị.v- 7. y\ -
7]
[y - g-
(5.42)
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
[y - ỹ M
=
[y. p\ -
ty- ỳ\
= 52 ặj [y, V3j] -
j =0
=
m
52 a j lP j
U-
j = 0
ậj
j=0
(
52 (ì j p } ' 52
[_j=0
~
k =0
(íkpk
>52 ãfc P k
ự > j
L
fc=o
= ¿ SJ I ỉy- pj) - ê ã* bj>
j=0
J
rn
k=0
V k \
1 = 0.
)
Vậy từ (5.42) ta có
52 [Vi - v ty i)} 2 = [y - ỹ- y\ = Ịy,.< /]- [Ụ5.y} i=l Từ đó, theo (5.41) ta có công thứ c đá nh giá sai số: wm =
(-1 2
~ ^ ('r *)]2ì
\ n i=1
/
= ( - { [ y , y ] - t y , y } } ) ' /2
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 ) } giao trên phân hoạch A của đoan [a, b) nếu n
I -pr ) ps I
5
i=l
-prtyi) ps ( X , )
được goi la hệ trực
= 0,
nế u r Ỷ -s
/ 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-pk I
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 j=n
(5.46)
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) =
j=l
x.ị
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 W o + E"=1 x ĩ m + E?=1 x ĩ ” 2 + •■■+ EỈU * r+1flm
<
e
;*=i .t> 0 + E"=1
+ e ;Li x T + 2 a 2 + • ••+ E?=1
=
E "=1 Vi
“ E?=1 W ' i =
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 trong đó
là đa thức bậc
Từ đó suy ra
n k k — 0,111.
/"(.r)
% p ( x )
m pm(x) - Y ^ ã kr k. k-0
(5.48
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 (5.49 Tk{x) —an + ^2 (ar cos I X + sin rx) 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à cos .r; p2{x) = sin .7:----
=1 ;
ự> 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 y l 2 - n; Ịy.ipol = Ty,] bo. *?()] 1=1
' n
53 r
bo- -pj\
1=1
o
s
•V ¿sin/Wj, ti=l
j
= 2 p
7
= 2 p
-
1
____
__
ì.2k
, p - l,fc;
r i
53 cos TXị c o s px.ị. i= l
{'Pti'pj\
n
53 sin rxicospXị, i= 1 n 53 sinr.TjSinp.rj, 1 1 ' n 53 7/i cos px,,
1; //— 2p ( = 2r —
c-
2 r;
t=
r; j = 2p 2
j = 2 p -
'n
53 //, sin pxị.
1
=
1
;j - 2p.
1
j = 2p -
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
(
m>(, f X]1 ,Ỷr X] cos rx' +
ĨI no Y
r
I1
4-
n p
1=1
x^ ì
a T
r=l l
1 .2
...........
J
1= 1
Ẻ 1=1
n
£ « r X I C0S r x i C0S /'•' » + /Y X r=1 l j = l i=
k( n
^ sin p.r, +
=
1=1
k ( 11
1=1
('Vo
X! s' n rj >í
1=1
c o s p X ị
n
71'Ị
Tì
sin rxj cos pXị
i=l
(5.50)
n
E
ỵ, Uicosp.i,
ri
co s r.r, sin px, + t% XI sin rxisin pXị > — x^
J
1=1
1=1
fc.
Hệ (5.50) gồm 2Ẳ; + 1 phương trình , 2 k + 1ẩn là ao, a r, Pr, I' trên ta thu được ã 0.7Ir. flr và do đó ta có
1. Ả. Giải hệ
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 ‘V h= — , tức là Xị = i / í , ỉ = 1,«. Trong trường hơp này ta có II 1
! 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 tl , , . £ ? = , 1 c o sr r x* = E - L , s i n r -' i - 77 . r -
o
1 . Ẳ-
.
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
y
0.56 -0 .8 0
0.84 -0.97
1.14 -0089
2.44 3.16 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.
//í si
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 + ch uẩn (5.47) ta có:
Theo hệ phưổng trình
o2. r 2.
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ố A
A
A
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.69
-1.12 -1.27
Vi
X i
1.48
2.44
1.07 5.95 14.53
3.16
3.66
E 8.14
1.98
9.99
31.55
■í,!lĩ
Av>
35.45 2.61
6.37
99.71
36.55
11.57
137.456' 11.791 40.710
18:260 48.335
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;
/(:r) «s p ( x )
= 1, từ đó
«2
— X 1
— 2x.
Sai số được đánh giá theo công thức (5.43): / 1
Ỡ2
=
2
[ Ậ E
\
[Vi - V ( x , ) |2J
1 /2
Ị
=
(ị
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 300"
330°
185
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
«2 £Ỉ=1 cos2 2xj = A E S i sin2 Xi 02 E Ỉll sin2 2xi
E := l
>M cos xt
y. cos 2x
= E , = 1 Vi sin Xi = 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
— 0.007 + 0.860cos.r + 3.004sin X - 0.021 cos2.r + 0.432 sin 2.T.
T2{ x )
5.8 Chương trình Mat L ab Bạn đ ọ c h ã y dự a t h e o v í cho phần
dụ đ ể l ậ p c h ư ơ n g t r ì n h
M a t L ab
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
3.
— fì + b.r 4-O.T2;
y — a -ị- bx +
4. y —
C.T2
+
a + b cos .T +
r/.T:i;
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ừ (5.53) y = arbx. lấy lôgarít hai vế ta dươc lgy = lgn t bxìgt. Đ ăt lg a: lì — (dgc; X — X. Y — lg y; A —
(5.54
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=
6.2
lo'4; b = -— , lge
( l ge w 0.43429).
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 — l gy; 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 k 0 0.004 0.018 0.029 0.051
94.5 98.9 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: 30.0 t 14.5 -2.3979 \gk —
Vây quan hệ có dang
64.5
74.5
86.7
-1.7447
-1.5376
-1.2924
94.5 -1.1367
98.9 -1.0458
k = a e b t hay
lgẢ,- = \ g a
+
lg e.
bt
Đặ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
b
—
10no =
\gc
° = 1.00 774, 0.01965 = 0.04525. 0.43429 10 00335
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 í cho phần
dụ đ ể l ậ p
chương trình MatLab
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 y =
/ (* )
2
4
0
3 5 4
6
8
10 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 agrange từ bảng số sau: X y =
/ (* )
321.0 2.50651
322.8
324.2 2.50893 2.51081
325.0 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 5.0
5.2 cos X 0.283662185 0.377977743 0.468516671 y — X
5.4
5.5
0.63469287
0.70866977
5.1
5.3 0.554374336
5.6
5.7 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ố
y =
3.r — r3 a r d a n ------ - —
1 —3./:2
X 2
3a r d a n . ỉ '+ — (21n.r — 3)
I
trong dang bảng số sau: X
y
58 4303.52
58.34 4364.11
58.68 59.02 4425.17 4486.69
59.36 59.7 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.
Ị)
Từ bảng số
Bài tập 5.8.
6.3 V 21.4259
6.72 7.14 7.56 23.377 25.3622 27.3831
X
7.98 8.4 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 ĩ. 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:
Bài tập 5.9.
3.55 3.60 3.65 3.70 3.50 y = ('x 33.115 34.813 36.598 38.475 40.447 X
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 0.48 0.49 ụ 0.4846555 0.4937452 0.5027498 0.5116683
X
0.46
Hãy tìm X sao cho y
0.47
- (nội suy ngược) bằn g đa thức nội suy Lag rango .
191
7. tìài tập 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 I/ I 0.475818 Tìm
X
0.46 0,47 0.4846555 0.4937452
0.48 0.49 0.5027498 0,5116683
0.50 0.52049999
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 25 1.3979
20
X
1.3010
// = Ig
ụ lg X cho bởi
30 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
y
2,4 0.0025
2,5
2.6
-0.0484
-0.0968
Tìm nghiệm của phương trình ./(,(:/:) chính xác đến 10 3. Hài tập 5.14.
0 trong
khoảng (2.4; 2 .6 ) có độ
Tìm hàm thực nghiệm dạng
F(x) = (I qx + 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
í
!) 3.1
8
4.9
X
0.78
1.56
u
2.50
1.20
X
ụ
9 10 5.3 5.8
_2 -3 -0 .7 1 4.9
11 6.1
12 6.1
13 5.9
2 34 3.12 3.81 1 12 2.25 4.28 1 f .3 5.8 6.1 -1
0
2 6.1
3 5.9
Chương 5. Phép nội suy và xấp xỉ hàm
192
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ố Bài tập 5.15.
Bài tập 5.16.
X
0
2
4
6
8
10
12
s
1280
635
324
162
76
43
19
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ố 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.
N
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 j
( 6 . 2)
=0
trong dó {x - x0).(x - X i ) . . .{x - Xj-i)( x - xj +l ) . . .( x - x„) _ 7 T Li(x) = - - • 3 = 0. n. ----- -— _ . \ f - ~ t -- T-- / [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à ph ương trình ui phản
194
Từ đó ta suy ra f'{x) « p'n(x) = ]T L]{x)yr j=0
(6.4)
R'n(x) = f ' ( x ) - p ; t(x).
(6.5)
Sai số 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)
A 2y0 + • • • +
= Ưo + ỶỵAyo +
t(t — l) • • ■(t — n + \) 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 tương ứng là y, = f (x<), i = 0 , 1 . 2 . Từ (6.7) ta có f \ x ) w Pá(x) = |[A y 0 + — =
^[(yi - yo)
- [t -
X o, X i , x
2
và các giá tri hàm
A 2y0]
ị ) (yo -
1 y\ +
y2)].
trong đó í — -———. h
Đặc biệt, khi cần tính đạo hàm tại các mốc nội suy x0.
. x2:
Xi
( 6 .8 )
195
1. Tính đạo hàm 1. Khi X
x0
—
=> t. = 0, thay vào ( 6 .8 ) ta đươc / (xo) ~
2r
" y*) ■
(_3ụ° +
(6.9)
2. Khi .r —.Ti => t. = 1 t h ì (6 .10)
/ (x'l) ~ 7ỊT (~yo + 3/2 ) •
3. Khi X —.r 2 => 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 0
số cấp
(/i2).
1.4 Trư ờn g hơD n = 3 Ta có 4 mốc nội suy là X 0 ,Xi,X 2 .X 3 . Theo (6.7) ta đươc l fA 2/-1.2 3t 2 6í + 2 3 / (x) ~ P-Áx) = ^[Ayo + — A y0 + -------22----- A 3y0Ị ,
...
voi
t
—
,
( 6 . 12 )
X - Xo —
—— — .
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) =
6/ỉ
(yo - 6yi + 3y2 + 2 y3)
(6.15)
4. Khi X = x 3 => t — 3, ta có / (t 3) w P-i (*3) = 77 ( - 2yo + 9;Vi - 1%2 + 11373) 6/i
(6.16)
Ch ương 6. Đạo h àm , tích p hâ n và phương trìn h vi p hân
196
Trong trườn g hơp này sai số đạ t cấp o (/í3). ý 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 sai phân). Chú
0
ý 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. Chủ
Ví dụ 6.1.
Tính gần đú ng / (55) của hàm f (x) — lgx cho từ bảng số X
50
f ( x ) = \ g x
1.6990
55 1.7401
60 1.7782
65 1.8129
Giải
0 dày có bốn moc nội suy là Xo = 50 -» Xị — 65; h. — 5. 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
3 và ta cần
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
J
X
- = 0.007896. 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
/ =
J
6
f{x)dx « Ị
a
(6.18)
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à phương trình vi phân
198
Á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
X — X \
4 L\(x)yx X — X q
-yo + - — — 2 /1
X o -
Xi
X-l -
-To
Từ đó suy ra / = Ị J
f( x ) d x
« J
a
lo
y° 2 (x 0 -
+
ĩ i Ẽ - ^ - y o X o - X\
( . .—X\) . (xo 4,
X i)
^ - z p - V i ] d x x x - Xo 2 /1
2 (xi -
X o)
(xi
-
X o)
1 2
(3;1
- ®o) (,7o 4- 2/1 )!
hay
ỉ = I f ( x ) d x
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 chia
n
p h ầ n đều n h au có khoảng cách là h — ----- — bỏi các điểm
a = X 0 < X i < ■• ■ < x n = b,
h =
a.'j+i —
Xi, i
= 0, n
— 1.
Vậy 6 I = Ị
x„
f(x)d x
á =
=
j
f{x)dx
Xo
J
f ( x ) d r
XO
+ 1
f { x . ) d x +
•••+
X\
J
f{x,)dx
(6.21)
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à ph ương trìn h vi phân
200
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
(b —a)h 2
12
M 2 (h - n )3 12
n 2
< E,
— )I/21 + 1 (với ký hiệu Ịa] là phần nguyên của
từ đó suy ra n — 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 = X o <
Xì
<
■■■ <
Xn
— h,
h — X ị + \
— X i , i —
0,
n — 1.
Tiếp đó, tín h (6.24)
Vi = ĩ{*i)> »=^Tn
thì
ỉ
b —J f ( x) dx a
, ~
/* =
— [(.Vo +
Vn)
+
2 ( yi
+
ụ 2 +
• • • + ,Ợn- i)] •
(6.25)
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 ỉ = Ị [ —
sai số < 0.002 . Giải:
sao cho đat
201
2. Tính gần đúng tích phản xác định Để |/ - /*| <
{h - n )I 2 M 2 1 2 ~n>
<
0.002 thì
trong đó b — n\ — 1 ; M 2 — max
cần chon n
( , ] I v 'I
16 0 1
— max
xe[0,l] T Pfo.il
M2{b - a )3
(1 + t )3
12 X 0.002
+
< 2.
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 + X i ta th u đươc
- / - ^ J 0
2 .2 .5 . C h ư ơ n g t r ì n h
1 + X
= 0.69377 ± 0.002.
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: n=npanel+l;
I = gia tri gan dung cua tich phan % So diem chia
h = (b-a)/(n-l); X
% Buoc
= 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à phươ ng trình vi phân
202
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à X o
= a,
=
X i
a+b
x 2 = 6,
h
b —a = ——
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 ta th u được
X
Xo + /í/
f ( x ) « p 2 [ x ) = p 2 ( x o + h t ) = p 2 ( t )
Ayo , A2í/o
—yo + -yp-/ 3— 2 1 <(í - !)■
(6.26)
Từ x — . x o 4- /lí ta có b
2
*2
I = J ĩ ( x ) d x = J f ( x ) d x «
ã
Xo
2
[ y 0 + Ay0/ + — ^ / ( í - l)]/j ( ỉ t 2
j
0
=
- £ )] (6.27)
-fc[2 « , + 2Aito+ ^ ĩ ( ? - 2 ) | . 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) =: /*.
a
¿0
Công thức (6.28) được goi là công thức Simp son (h ình Sai số
6 . 2 ).
(6.28)
203
2. Tính gần đúng tích phân xác định
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)
y /(*) /(«) P2(x) /(&)
o
(1 -Ị- b 2
&
) 1
X
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 = X o <
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
(6.30)
= 0, 2n .
Khi đó ta có / = / f ( x ) d x = Ị f(x)dx = Ị f(x)dx + Ị f(x)dx + ----- f a
~
10
ị(y0 + 4?/i + y2) +
¿0
(ịẹ/2
¿2
[ f(x)dx X2n-2
+ 4ị/3 + yì) + ----- h (ĩ/2n-2 + 4t/2„_l + ỉ/2n)]
Chương 6. Đạo hàm, tích f)hãn và phương trìn h vi ph ân
204
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 ) ị ,
iẽ[a>]r
h=
'
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. Ví du 6.3.
Áp dung tính gần đúng ỉ —
} dx -
./ 1 +
0
tổn g q u á t vói (6.31) n = 5.
■= the o công th ức Sim pson
X -
Giải:
Do n — 5 nên suy ra h = ~ = 0.1. Tiếp theo, tính Vi =
1
/ (x,) = 7 - 7 - 3 ,
X'i
1 + X,
= í/i. / =
0 , 10.
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
Sai số đat đươc là 0.0085%.
0
- = 0.78539816. 4
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 =
%
buoc
(b-a)/(n-l);
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.
206
hàm, tích phân và phươ ng trình vi p h à n
Đ ao
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 đó IJ 0, 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) , V (-To) = ỉ /0
Thuật toán: Giả sử biết nghiệm
Xo
< X < X. (6.35)
=* 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 . y
,‘ỉ. 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
Ị ý ( x
h +
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) +
(6.37)
0 ( h 2).
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 =
+
X i
X ị + I — X ị
+
ìl, . . .
Áp du ng công thứ c (6.38) ta đươc y (.To) = y
(đã cho theo điều kiện đầ u của bài toán)
0
y (x'i) = 2/1 = 2/0+ /ỉ/ (zo, 2/0)
y (xi) =
y{*k+i)
2/2
=
2/1
+ h f (
t i
,
2/ 1 )
Vk+I = V k + h f (xk, yk)
(6.39)
Chương 6. Đạo hàm, tích phàn và phương trình vi phâ n
208
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 y
,
2x
= 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
=
Vì
=
1. y
(0.2) = 1/0 +
h { y o -
) = 1.2000.
— 2/0
2/3
= y (0.4) = yi + h(yi - — ) = 1.3733, y = 2/ (0.6) = 1.5294,
ịị/4
=
2/2
1
ys =
y ( 0 .8 ) = 1.6786,’
2/(1) = 1.8237.
Nghiệm đúng ỹ = y/2x + 1 và ta có các giá tri tươ ng ứng Vo =
Vi
1.
= 1 1832,
ỹ 2 = 1.3416,
v3 = 1 4832, a V
=
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) C h ư ơ n g t r ìn h
209
M a t LAB
function [x,ỵ]=euler(fun,xO,xn,ỵO,h) % T his
fun tion
% Í IV P :
illu st ra te s
the euler's
d y / d x = f u n ( x , y ) ; x O <= x < = x n ;
m ethod
fo r t h e
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à phương trình vì phân
210
Thay vào (6.35) ta có y[x + h) = y( x) + ^ [/(X + h. y( x + h)) + f{x, y(x))\ +
Bỏ qua được
o
0
(/t3).
(/í3), ta được xấp xỉ. Sau đó thay xấp xi bởi dấu bằng, ta thu
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 (6.41)
y(x + h) —y* = 0{h2),
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 *
= y{x) + ^ [ f ( x , y { x ) ) + f ( x + h , i / ) \ , = 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, — Vo + h f (x0.Vo) •
v\
V (Ti) = y{xo + h) ~ Ỉ/1 = yo + I ( /
(t 0,yo) +
/ (.To+ h. y{))
Tổng quá t v*i
\ ,
Ví dụ 6.5.
= Vi + h f
1J {Xi + h) =-
(Xi,
Ui) ,
ỉ / i +1 =
i
Vi
+
= 0,1.2,.. . I, _
[ / (.T i, Vi)
+ f{xị + h , y * ) ] .
( 6 .4 3 )
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: i. quả tính toán đươc ghi tro ng b ảng sau: ỹ = e ỉl4 . Kêt Nghiệ m chính xác — 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 4 0.4 5 0.5
1.0227
1.0227
1.0408 1.0645
1.0408 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à phương trìn h vi p hân
212
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
ý 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à đúng nữa. Dựa trên gần đú ng này để đi tìm gầ n đ úng tiếp theo dẫn đến Chit
0
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 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 0
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 (6.44)
y( x + /i) = y(x) + Ỵ^PrkrỤl), r = 1
trong đó ki(h)
=
hf(x,y{x))
k-ỉ(h)
— h f ( x +
k- 3 (h)
=
hf{x + a 3 h,y{x) + IhikiỤi) + fixìk 2 {h))
kq(h)
=
h f ( x + aq,
0 2
/ t , y{x) + fiĩìk\ (h))
3
(6.45)
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
v(x+h) = y ( x ) + h ý ( x ) + ^ - ụ " ( x ) + - • ■ + ^ y {m\x) + 2
!
m!
km+l
’ .,s/(m+t)(c-) (6.46) ( m + 1 )!
Chương 6 . Đao hàm, tích phán và phương tr ìn h vi phân
214
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 2 \ như sau: phương trìn h để xác đ ịn h bốn hệ số pi,p2,«2, fi‘
Pỉ + P 2
' « 2 p 2
=1 .1
= ị
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ì P 2 = 1và suy ra
«2
=
í h ì
— - ta thu đươc công
thức
y{ x
ki(h)
=
h f (.T, y{x) )
b2{h)
=
h f ( x + ^ , y {x ) + ^ Y ^ )
+ h)
=
(6.48)
y(x) + k 2 {lĩ)
(b) Chọn p \ = P = - thì o 2 = ft 2 = 1, ta có 2
h(h)
=
hf{x,y{x))
k2(h)
= h f (x + h,y{x) + ki(h))
y(x + h)
= y ( x ) + ị ( k ĩ { h ) + k2{h))
(6.49)
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)
4 '2 + k3) y(x + h) = y(x) + ^ (ki + Ả
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à phươn g trình vi phân
216
3.4 Chương trình function
Ma t L ab
[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
Áp dung chương trình phương pháp R-K 4 Ví du 6.6.
M a t L ab
giải bài toán sau bằng
ý = 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 ■i
X,
0
0
1
0.1
2
0.2
3 0.3 4 0.4 5 0.5
§4. G iải
cao và
hệ phương trình
vi
phân
217
y , 1
1
1.1103 1.2427 1.3996 1.5836 1.7974
1.1103 1.2428 1.3997 1.5836 1.79744
p h ư ơ n g t r ì n h 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 X €
(6.53)
[.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à ph ương trìn h vi phán
218
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
Zi+ 1
V i
+ hf(xt.yt,Zi);
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, !Ji+1 =
ỉ/i +
Zị. Khi
7
0
A y ,;
đó 2 j +
i =
+
^ A z i ,
fj
(6.57)
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
và
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à ph ươ n g trình tr ình vi p h â n
220
k3=h*feval(funl,X (i-1 i- 1 )+h/2,y (i-1)+k2/ i-1)+k 2/2, 2,z z (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
=
— y .
<
—X — X z
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 1 0.1 2 0.2
0 0.1 0.1
1 0.9908
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 \ . ¿ - .+■). tính đạo hàm của hàm y — f f ( x ) tại 5 mốc đã cho. 2
Bài tập 6.2. Tính gần đúng đạo hàm của hàm từ b ảng số sau:
ụ
J'.|.
Hãy lâp công thức
— log X
ta i điểm điể m ./
1
5. Bài tập
221 22 1
X
0.98
1.00 1.02 0.7651977 0.7563321
V = Iog X 0.7739332
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. X —0.4 —0.4 4.2 J 4.2 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 0.5] theo công thứ c E u ler lấy lấy /í —0.1. t/(x) —ụ — x\ ụ{0) {0) = 1 trê n đo an 0: 0. Bài tập 6.7. Tìm nghiêm gần đúng của các bài toán Cauchy sau: , J
(x + y) 1 - xy) xy ) x + 2 y
2/ ( 0 )
=
1;
2. ý = y - — , y( 0) 0) = 1; y
2) = X y{ 2)
3. ý = y2 + - ,
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à ph p h ư ơ n g tr ìn h vi p h â n
222
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.
Bài tập 6.8.
/
1.
y
= X + 22, 2/(0) 2/(0) = 1
x y, 2 (0 ) = -1; = xy, = y + z, z,
0) = 1
y{
~--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 Đì nh T hịnh hị nh,, Cơ sở I, II, NXB phương phươ ng pháp ph áp tính tập I, NXB Đại học Quốc gia Hà Nội, 1996.
Phương ph pháp áp tính, tín h, NXB Đai hoc và Trung [2] [2] Ta Vãn Đĩnh, Đĩnh , Lê Trọng Trọ ng Vinh, Phương hoc chuyên nghiệp, 1983. Phương pháp phá p tính và các thuật thu ật toán, NXB [3] [3] Phan Ph an Văn Văn Hạp, Lê Đình Thịnh, Phương Giáo dục, 2001 phá p tính tín h tập I, [4] [4] P han ha n Văn Hạp và các các tác giả khác, Phương pháp học và Trung học chuyên nghiệp, 1970 - 1971.
II, NXB NXB
Đại
[5] [5] Lê Trong Tro ng Vinh, Giáo trình Giải tích số, NXB Khoa học và Kỹ thuật, 2007. [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 differential equations, Welley interscience, 2005.
Master ing MatLab Ma tLab 6, Prentice Hall, [8] Hanselman L. and Littlefield B., Mastering 2001 .
MatL ab guid g uide, e, SIAM, 2000. [9] [9] Higham Hig ham D. D. J., J. , MatLab Nume rical Methods Method s Using MatLab Ma tLab,, [10] John. H. Mathews, Kurtis D. Fink, Numerical Pearson Prentice Hall, 2004. Anal ysis of numerical nume rical methods, J. Wiley, 1968. [11] Jaacson E., Keller H Analysis
2233 22