Professional Documents
Culture Documents
TRỌNGVINH,
VINH,TRẨN MINHTOÀN
G iáo trình
rình -t
Phương p h á p tính
tín h
và Matlab
Lý thuyết, bài tập và chương trình minh họa
(Dùng cho sinh viên khối các trường Khoa học Công nghệ)
ir
NHÀ XUẤT
XUẤT BẢN
BẢN BÁCH KHOA - HÀ NỘI
NỘI
LÊ TRỌNG VINH, TRÁN MINH TOÀN
Giáo trình
PHƯƠNG PHÁP TÍNH VÀ MATLAB
Lý thuyết, bài tập và chương trình minh họa
Mã số: 1264
1264 - 2013/CX
2013/CXB/0
B/01
1 - 51/BKHN
Biên mục trên xuất bản pháni của Thư viện Quốc gia Việt Nam
Lê Trọng Vinh
Giáo trình phưưng pháp tính và matlab : Lý thuyết, bài tập và chương trình
minh họa : Dùng cho sinh viên khối các trường Khoa học Công nghê /
Lê Trọng Vinh, Trần Minh Toàn. - H. : Bách khoa Hà Nội, 2013. - 228tr. ; 24cm
Thư mục: tr. 223
ISB
ISBN 97860491155
97860 49115578
78
1. Phương
Phươ ng pháp
phá p tính 2. Phần mém Matlab
Matl ab 3. Giáo
Giá o trình
trìn h
515.0285 - dc 14
BKF0033p-CIP
11
LỜI NÓI ĐẦU
HƯƠNG pháp tính còn được gọi là giải tích số hay toán học tính
P
toán là môn khoa học nghiên cứu cách giải gần đúng, chủ yếu là
giải số các phương trình, các bài toán xấp xi hàm số và các bài
toán tối ưu. Ngay từ đầu, toán học sinh ra do yêu cầu giải quyết các vấn
đề thực tế như tính diên tích môt mảnh đất; do chiều cao của các vật có
độ cao lớn; tìm quỹ đạo của sao chổi, đường đi của tàu buôn trên biển,...
N h ư vậy,
vậy , có t h ể n ó i t o á n họ
họcc b a n đ ầ u x u ấ t h i ệ n c h í n h l à t o á n ho
hocc t í n h
toán.
Từ những năm cuối của thế kỷ XX, phương pháp tính đươc phát triển
m ạn h mẽ cù ng vớ với sư bù ng nô của tin học. học. Đặc biệt, vớ với sự xuấ t hiện của
các siêu máy tính thì khả năng song song hóa các quá trình tính toán
ngày càng được mỏ rộng.
Các n hiệm vụ chínhchính của phương pháp tính là:
1. Giải gần đúng các loại phương trình đại số hay siêu việt; giải hệ
ph
p h ư ơ n g t r ì n h ; t ì m t r ị r iê n g , v e c to r r i ê n g c ủ a m a t r ậ n ; g iải
iả i g ầ n đ ú n g
ph
p h ư ơ n g t r ì n h vi p h â n ,...
,. ..
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.
Mue
• lu
• e .................................................. 1
( 'h ư ơ n g 1 . S a i s ố ....................................................................................... 7
1 Số xấ p xi, sai s ố ............................................................................. 7
1.1 Sai số tu yệt đối ................................................................. 7
1.2 Sai số tương đ ố i ................................................................ 8
1.3 Chữ số có n g h ĩ a ................................................................ 8
1.4 Chữ số tin tưởng, chữ số khả nghi trong một số . . . 8
1.5 Sai số quy tròn và quy tròn s ố ....................................... 9
1.6 Cách viết số xấp xỉ .......................................................... 9
2 Các phép tính về sai s ố ................................................................ 9
2.1 Các phép t í n h .................................................................... 9
2.2 Công thức tổng quá t về sai s ố ....................................... 11
2.3 Bài to án ngươc về sai s ố ................................................. 12
2.4 S ai số phư ơng pháp, sai số tín h toá n và sự ổn địn h . 14
C hư ơn g 2 . M a t L ab cơ b ả n ....................................................................... 17
1 Khỏi đô ng Ma tL a b ....................................................................... 18
1
2 M ỤC LỤC
3.1 V e c to r.................................................................................. 22
3.2 Đ a t h ứ c .............................................................................. 27
3.3 Ma t r ậ n .............................................................................. 30
4 Vẽ đồ th ị tro n g M a t L a b ........................................................... 37
4.1 Đồ th ị 2 D .............................................................................. 37
4.2 Đồ th ị 3 D ........................................................................... 41
5 Lậ p trì n h với M a t L a b .............................................................. 43
4 P hư ơ ng p h áp dây c u n g ................................................................. 92
M Ụ C L ỰC ____________________________________ ______________________ 3
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
.................
T
rong tín h to án, t a phả i làm việc với các giá trị g ần đún g của một
đại lượng, vì vậy luôn có sai số. Việc hiểu rõ sai số đó là rất cần
thiết. Giả sử A là đại lương cần ng hiên cứu, nh ưn g thưc tế ta chỉ
thu được đại lượng gần đúng với nó, ký hiệu là a. Khi đó, ta nói a là số
xấp xỉ của A và ký hiệu a. « A.
ra càn trên của A và goi là sai số tuyệt đối giới han cho phép của a.
D inh n g h ĩa 1.1. Sai số tuy ệt đối giới han cho phép của số gần đ úng a là
số A„ > 0 th ỏ a m ãn
T ất nh iên, ta luôn m ong tìm đươc A(1 càng nh ỏ càng tốt. K hi đó, bất
đẳng thức (1.1) cũng có thể đươc thay thế bởi đẳng thức
Ia - A\ - A„ hay A = a± Aa.
7
8 Chương 1. Sai NO
ỏ, = 7 7 X 100%.
M
Từ định nghĩa trên ta dễ dàng suy ra, nếu chữ số as là chữ số tin tường
thì moi chữ số đứng trưóc nó đều là chữ số tin tưởng, nế u as là chữ số khà
2. Các phép tính về sai số 9
nghi thì mọi chữ số đứng sau nó đều là chữ số khả nghi.
Ví dụ 1.2. Giả sử số a — 2.5785030 có sai số tuyệt đối là Aa = 0.0043.
Do Aa 0.43 X 10 2 < 0.5 X 10 2 nê n chữ số th ứ h ai sau dấ u ch ấm là
chữ số tin tưởng. Vây số a có 3 chữ số tin tường là 2,5, 7 còn các chữ số
8. 5, 0, 3,0 là các chữ số khả nghi.
2. Cho số h — 237865. Hãy quy tròn số h để thu đươc số ỉ) chỉ gồm 4 chữ
số. Theo quy ưóc trên ta có h — 2379 X 102.
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,...).
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ự.
u —xyz = > ln u — ln X + ln y + ln í
==> A(ln u) = A(ln x) + A(ln y) + A(ln z).
A ( l n .r ) w — ; A ( l n y ) ^ = ^ ; A(ln z) « — .
X y z
Khi đó
Au A.r Ay Az
u X y z
Au Ax Ay Az
+ +
XI. X V
hay
A u A x Ay A-
ổ„ — -—- — 7 + T—7 + -Ị—Ị- — Óx + Ốy + ổ2.
ỉi I y \z\
Chú ý 1.1. Trong công thức hiệu, nếu \x —y\ quá bé thì sai số sẽ lớn. Vì
vậy, trong tính toán ngưòi ta tìm cách tránh phép trừ các số khá gần
nhau khi tính sai số tương đối của hiệu hai số.
2. Các phép tính về sai số 11
df
A„ = Ẻ dxị A,.. ( 1.2 )
1
= 1
Còn
df
s' = v r m ị Ở X ị
1 ớ/ ỡln/
n
ÌỊ A - T ' Ax..
1=1 / i=1 dx.ị
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
ĩ - ỉ ' ■ ỉ ' « - - «
= I ttíÌ2 = i(3.14)(3.7)2 = 21.5.
12 Chương 1. Sai số
Theo công thức (1.2) ta được sai số tuyệt đối giói hạn
dv dv
Av - An I A,i = 8.44 X 0.0016 I 21.5 X 0.05
dn dd
= 1.088 a» 1.1 (cms).
Bài toán: Cho hàm số u = f (xi, X2, ..., :/:„). Hỏi sai số tuyệt đối (hay
tương đối) giới hạn của mỗi đối số là bao nhiêu để sai số tuyệt đối (hay
tương đối) giới hạn của hàm số không vượt quá một số dương cho trước
(số dương này được gọi là sai số cho phép)?
Để giải quyết vấn đề đã đặt ra, có hai cách thường được sử dung.
1. Cách giải quy ết theo n guy ên tắc sai số của các đối số ng an g bằng
nhau.
Theo công thức (1.2) ta có:
df\
A
i—\ dxị I Z| •
Ta xem ảnh hưởng của mọi thàn h phần như n hau , tức là
d f Ar - à f Ar - ■■■- d ĩ A r_
dxi Í-3X1 dl2 dxn
df
Au ttìxị A,
df
—n A r..
=
i—1 dxị
Từ đó ta có công thức sai số tuyệt đối giới hạn cho phép của mỗi
thành phần:
A =-
L*Xl A ¿ = 1. 2, .. ., «. (1.4)
df
dxị
2. Các phép tính về sai số 13
Ví dụ 1.5. Cho hình trụ đứng, hán kính R — 2(m); chiều cao
II 3(m). Hỏi sai số tu y ệt đối của R và II là bao nhiêu để thể tích
V ttR2H của hình tru đat sai số tuyệt đối giới han là 0.1 (m3).
Giải: Ta có
Ss = % = -A „ + j - A R = 1% = 0.01.
s 7T R
14 Chương 1. Sai số
Theo nguyên tắc ngang bằng nhau (có hai thành phần) thì
A* —0 _
Afí 0.01
= 0.005.
n “ R
Từ đó suy ra
Rõ ràng đối vói R khó thực hiện được vì Alì quá nhỏ, do đó cần phài
t ă n g A r lên. Đo tổng cả hai thà n h phầ n là 0.01 nên khi A r tăng thi
A* phải giảm, nghĩa là cần phải lấy thêm chữ số thâp phân trong
số n.
", , , 3.142-3.1416 T„ , ,
C hẳ ng ha n, lấy 7T= 3.142 th ì —- — ----- ------ :------ —0.00013. Khi đó
7r 3.142
2 = ^ = 0.01 - 0.00013 = 0.00983, suy ra
0.00983
Ar = X 30.5 < 0.15(cm).
2
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à
N hư vậy, nếu chọn phương pháp tín h đúng thì sai số phương pháp A„ - 0,
số gần đúng thu được chi là do quy tròn số trong quá trình tính toán.
2, Các phép tính ưề sai số 15
{ V 2 - l ) 10 = A = 3363 - 2378>/2.
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!
Khi đó
_Ị_ _ J_ _Ị_ J_ _Ị_ _Ị_
‘i ’6 — 12 — 2 2 ^ 3 2 ” 4 2 ^ 5 2 ” 62
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
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.
Để thuận tiện cho việc giải số các bài toán, trong giáo trình này chúng
tôi giới thiệu ngôn ngữ lập trình được sử dụng rộng rãi trong môi trường
khoa học và công nghệ - ngôn ngữ lâp trình tính toán M a t La b . D o khuôn
khổ có hạn, trong phạm vi giáo trình này chúng tôi chỉ giới thiệu những
phần cơ bản nhất về M at L a b , đặc biệt là ứng dụng để xây dựng các
chương trìn h min h họa cho các thuật toán trong phần phương pháp tính.
17
18 Chương 2. M atLab cơ bản
Để tìm hiểu thêm về M at L ab cũng như ứng dụng nó vào các lĩnh vực
khác nhau, bạn đọc có thể tìm hiểu thêm tại các tài liêu tham khảo [8, 91.
§1. K h ở i đ ộ n g M a t L a b
Mat Lab (viết tắ t của cụm từ tiến g Anh "MATrix LABoratory") được
th iế t kế bỏi công ty M ath Works, là m ột ngôn n gữ lập tr ìn h bâc cao,
chuyên sử dụng cho các tính toán kỹ thuật, đặc biệt là các bài toán có
dạng ma trận hoặc vector. Mat L ab tích hơp các phép tính toán, đồ họa
và lập trình trong một môi trường thân thiện, cho phép thể hiện các bài
toán cũng như nghiệm của chúng dưới dạng các ký hiệu toán hoc quen
thuộc.
Sau khi cài đặt, cách đơn giản n h ấ t đê khởi đông M at L ab là kích đ úp vào
biể u tư ơng của nó trê n m àn h ìn h Deskto p. Giao diệ n cơ b ản cùa Mat LAH
phiê n bản 7.10.0 (R 2010a) (xem hình 2.1) bao gồm các phần sau:
• C ur ren t Folder: th ư m ục hiện thời. Khi muốn thực thi môt tâp tin
".m", người dùng ph ải chắc chắn rằn g tập tin đó được chứa tron g thư
muc này.
• Command Window: Cửa sổ dòng lệnh thao tác trưc tiếp. Ỏ chế
độ này, sau khi gõ câu lệnh và thực thi (nhấn Enter), kết quả sẽ
được hiển thị ngay trong cửa sổ lệnh. Nếu không muốn in kết quà
ta thêm dấu vào cuối cảu lệnh đó.
• Command History: Chứa tất cả các câu lênh đã đươc thực thi
trong Command Window. Người dùng có thể kích đúp vào các câu
lệnh bất kỳ để thực thi lại hoặc tạo các "m-files".
2. Biểu thức M at L ab : hiến, số, toán tử, hàm 19
-■ « «M -o» «
#ti *
u
!IH'!
“a * ■
■.- 1: !*•.“ -
HO 1251
b*d-2
ề.*b
0 -I 5 35 d*b
âns ■
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
>> N = namelengthmax
N =
63
2.2 Số
sử dung ký hiệu số thâp phân theo qui ưóc vói số chữ số tùy
M a t L ab
chọn và các dấu +, - cho các số. Ký hiệu khoa học sử dung chữ cái e cho
lũy thừa của 10. số phức sử dung các chữ i hoặc j cho đơn vi ào. Môt số
ví dụ:
3 -99 0.0001
9.6397238 1.60210e-20 6.02252e23
li -3.14159J 3e5i
Tất cả các số được lưu trữ bên trong bằng cách sử dụng long format
theo chuẩn dấu chấm động IEEE (Institute of Electrical and Electronics
Engineers). Các số dưỏi dạng dấu chấm đông có đô chính xác hữu han
vói 16 chữ số thập phân có nghĩa và nằm trong khoảng (ÌO-308,10+308).
2.3 Toán tử
Các biểu thức Ma t L ab sử dụng các toán tử quen thuộc được liệt kê
trong bảng dưới đây theo thứ tự ưu tiên (từ dưói lên trên).
2. Biểu thức Ma t L ab ,- biến, số, toán tủ, hàm 21
2.4 Hàm
Mat Lab cung cấp một số lượng rất phong phú các hàm toán hoc sơ
cấp (elementary mathematical functions), ví dụ abs, sqrt, exp, sin,...
Để hiển thị danh sách các hàm toán hoc sơ cấp, nhập vào lệnh
MatLab cũng đồng thòi cung cấp rất nhiều các hàm toán học nâng cao
(advanced mathematical functions), ví dụ các hàm Bessel và gamma.
H ầu h ết các hàm này chấp n hậ n đối số phức Để liệt kẻ dan h sách các
hàm toán học nâng cao và hàm xử lý m a trận ta dùng các lệnh
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
Nhiều hàm đặc biệt trong Mat L ab cho ta giá trị của các hằng số hữu
ích, được liệt kê trong bảng dưói đây:
pi 3.14159265...
i/ j Đơn vị ảo, \ / - ĩ
eps Sai số tương đối dang dấu chấm động, £
realmin Số thực nhỏ nhất, 2.2251e —308
realmax Số thực lớn nhất, 1.7977e + 308
Inf oc
NaN N ot-a-num ber
Trong đó,
• inf được tạo bỏi phép chia một số khác 0 cho 0, hoặc việc tính giá
tri của một biểu thức toán hoc đúng đắn mà bị tràn bộ nhỏ, tức là
vượt quá realmax.
• NaN được tạo ra khi tín h giá trị củ a m ột biểu thức dạn g vô địn h
hoặc 00 —00.
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
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ụ:
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ố.
>> 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
>> a r r ( [ 2 5 ]) = []
arr =
10 8 7 5 4 3
Biểu thức logic cho phép ta truy xuất một cách linh hoạt đến các thành
phần của một vecto r hay m a trận . Ví dụ:
>> X = [-1 0 2 3 5 6 7 4 9 ];
>> x>0
ans =
0 0 1 1 1 1 1 1 1
>> X (x> 0 )
ans
2 3 5 6 7 4 9
>> X (x>2 & x<=5)
ans =
3 5 4
>> x>2
ans =
0 0 0 1 1 1 1 1 1
Biểu thức logic thường được sử dụng cùng vói các hàm an y, a l l và
f i n d , được mô tả chi tiết dưới đây.
• any: Kiểm tra xem có tồn tại một phầ n từ cùa vector thỏa m an điều
kiên nào đó không. Nếu có thì trả về 1, ngược lại là 0. Ví dụ:
• 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:
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:
Sa u đây, chúng ta xét một số phép toán cơ bản về đa thức trong MatLab .
polỵval(p,x) ;
trong đó,
• p là ve ctor biểu d iễn hệ số đa thức;
• X là một số, biến hoăc biểu thức.
Ví dụ:
>> p = [5 6 -7 3] ;
>> x=2;
>> y=polyval(p,x)
ỵ =
53
28 Chương 2. Mat L ab cơ bản
r = r o o t3 ( p ) ;
trong đó,
p=polỵ(r);
trong đó,
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
5. N h ä n d a th ü c
Cü phäp:
c=conv(a,b);
trong dö,
6. Chia da thüc
Cü phäp:
[ q , r ] = d e c o n v ( u, v) ;
trong dö,
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ö,
Vi du:
» p = [3 -2 4];
>> k=polyder(p)
k =
6 -2
30 Chương 2. Mat L ab cơ bản
8. N guyên h à m của đa th ức
M a t L a b có thể tính nguyên hàm của đa thức bởi lênh
g=polỵint(h,k);
tron g đó,
3.3 Ma trận
3.3.1. N hập m a trận
Khi nhập m a trâ n trong môi trường dòng lệnh, ta phải tu ân theo các
qui định sau:
• Ngăn cách các phầ n tử trên môt hàn g của m a trậ n bời dấu hay
khoảng trắng;
Ví dụ:
» A = [ 1 63 2 1 3 ; 51 01 18 ; 9 6 7 1 2 ; 4 15 14 1]
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Khi muốn nhâp một ma trận có kích thước lỏn thì cách nhâp trưc tiếp tư
cửa sổ lệnh là không phù hợp, ta thưòng sử dụng hàm l o a d hoặc tao một
"m-íìle". Hàm l o a d đọc một file văn bản chứa các dữ liệu số. File văn bản
phải được tổ chức như là môt bảng chữ nhật của các số, cách nhau bời
3. Các dang dữ liệu cơ bản trong Mat L ab 31
các khoả ng trắn g, mỗi hà ng trên mỗt dòng và số ph ần tử trên mỗi hàng
là như nh au . Ví dụ, ta tạo file m atrix.dat có nôi du ng sau:
sẽ doc file và tạo ra một biến matrix chứa các phần tử như trên.
Ta có thể tạo ra các ma trận bằng cách sử dụng các file văn bản chứa
mã Mat Lab C’m-files"). Sử dụng trình soạn thảo Matlab Editor hoặc
môt trình soan thảo bất kỳ tao ra mót file chứa các lênh giống như dùng
trong môi trường dòng lệnh MatLab , sau đó lưu file này dưới dạng ”.m”.
Ví dụ, tạo ra một file chứa 5 dòng sau:
A = [ ...
16.0 3.0 2.0 13.0
>> matrix
>> Z = z e r o s ( 2 , 4 )
z =
0 0 0 0
0 0 0 0
>> F=5* o n es ( 3)
F =
5 5 5
5 5 5
5 5 5
>> R=randn(4)
R =
0.5377 0.3188 3.5784 0.7254
1.8339 -1.3077 2.7694 -0.0631
-2.2588 -0.4336 -1.3499 0.7147
0.8622 0.3426 3.0349 -0.2050
3.3.2. C hỉ số
Sau đây là quy tắc truy cập đến các phần tử của ma trân thông qua
chỉ số.
>> k = s u b 2 i n d ( s i z e (A),i , j ) ;
Ngược lai, để chuyển từ chỉ số m ảng môt chiề u sang chỉ số m a trậ n ,
ta dùng hàm ind 2 su b như sau:
>> [ i , j ] = i n d 2 s u b (s i z e (A), k ) ;
• Trong M a t L a b , chi số cuối cùng của h àng ha y cột của m a trậ n hoặc
vector có thể thay thế bỏi end. Ví dụ:
>> x = [ l 2 3; 4 5 6] ;
>> y =x ( 1 : e n d , 1 : e n d - 1 )
ỵ =
1 2
4 5
Dể xác đinh kích thưỏc của môt ma trân ta có thể dùng lênh le n g th (trả
về kích thước lớn nh ất) hay lệnh s i z e (số hàng và cột). Ví dụ:
>> l e n g t h (c )
ans =
4
>> [m, n] = s i z e ( c )
m =
2
n =
4
Các lệnh tí n h kích thước của m a tr ậ n được liệt kê dưới bảng sau:
34 Chuang 2. Mat L ab ca ban
whos Hien thi cac bien trong khong gian lam viec
cung kich cd tiidng ufng
s = size(A) Tra ve la vector hang s, s(l) - so hang va s(2) - so cot
[r, c] = size(A) Tra ve hai so r, c dng vdi so hang va so cot
r = size(A,1 ) T ra ve so h a n g cua A
c = size(A,2) Tra ve so cot cua A
n = length(A) Tra ve max (size (A) ) khi A khac []
Cac bieu thuc chi so co the tha m chieu den m ot ph an cua m a tran . Vi du,
viet A ( 1 : k, j ) la tham chieu den k phan tii dau tien cua cot j cua ma
tra n . Ngoai ra toa n tOt th am chieu tdi t a t ca c a c p h a n t i i trong m ot
hang hay mot cot. Vi du:
7
14
va:
ans =
9 6 7 12
>> B=A(:, [1 3 2 4 ] )
B =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
3. Các dạng dữ liệu cơ bản trong Mat Lab 35
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:
Ví dụ:
1 1 1 4 4 4
1 1 1 4 4 4
1 1 ] 4 4 4
5 5 5 7 7 7
5 5 5 7 7 7
5 5 5 7 7 7
Ta có thể xóa hàng và cột của ma trận bằng cách gán cho chúng giá trị
[ ]. Ví dụ:
» A=[ l 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> X=A;
36 Chương 2. Mat L ab cơ bàn
» X(:,2) = u
X =
1 3
4 6
7 9
Cộng X = A + B
T rừ X = A - B
N h ân m a trậ n X = A * B
N hân các p h ần tử tư ơng ứng vói n h au X = A.*B
Chia X = A / B , khi đó X*A = B
Chia trái X = A\B, khi đó A*X =
Chia các p hầ n tử tương ứng cho nh au X = A. / B
Lũy thừa X = AA2
Lũy thừa từng từ X = A.A2
Chuyển vi X = A'
(liên hơp đối vói ma trân phức)
Chuyển vi (không liên hợp) X = A. '
Nghịch đảo X = inv(A)
Dinh thức d ■ det (A)
Hệ đại số tuyến tính Ax = b N ghiệ m X = A\b
Phân tích Cholesky R = c h o i (A)
Phân tích LƯ [L,Ư]= lu(A)
Ph ân tích QR [Q,R] = qr(A)
Giá tri riêng, vector riêng e i g ( A), [d,r ] = e i g (A)
Quay ma trận B = r o t 9 0 (A)
Đảo m a trận từ trái sang phải c = f l i p l r (A)
Đảo ma trậ n từ trên xuống dưới D = flipud(A)
Định dạng lại ma trận A r e s h a p e (A,m,n)
với số hàng mỏi m và số cột mỏi n
4. Vẽ dồ thị trong Mat L ab 37
4.1 Đồ th ị 2D
Lệnh cơ bản để vẽ đồ thị một hàm số trong không gian hai chiều:
tron g đó, X là vector chứa miền xác định của hàm có biểu thức là f ( x ) .
X = 0:pi/100: 2*pi;
ỵ = sin ( X ) ;
plot(x, y);
Ta có thể chú thích thêm cho đồ thị bằng cách dùng các lệnh trong bảng
dưới đây.
38 Chuong 2. Ma t LAB co ban
0.8
0.6
0.4
0.2
0
- 0.2
-0.4
- 0.6
- 0.8
-1
0 1 2 3 4 5 6 7
>> plot(x,y,'color_style_marker' );
4. Vẽ dồ thị trong Mat L ab 39
Trong đó:
• M àu sắc (color): 'c '-c y a n , 'm '-tím (m agenta), 'y '-v à n g (yellow),
' r ' -đỏ (red), ' g' -xanh lá cây (green), ' b' -xanh nước biển (blue),
'w' -trắn g (white) và ' k' -đen (black).
• Nét vẽ (style): ' : nét liền, ' — ': nét đứt, ' : ' : chấm chấm, ' - . ' :
gạch chấm.
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
>> s u b p l o t (m, n, p ) ;
>> t=0:0.1:2*pi;
>> yl= sin(t) ; y 2 = c o s ( t ); ỵ3=tan(t);
>> y4= yl+ ỵ2; y5=y2+y3; ỵ6=y l+y3;
>> su bp lot (2,3,1 )
>> p lo t ( t , ỵ l )
>> t i t l e ('yl' )
>> su b p lot (2,3,2)
>> p l o t ( t , ỵ2)
>> t i t l e (' ỵ2 ' )
>> subplot(2,3,3)
>> p lo t (t,y3)
>> t i t l e (' y 3' )
>> s u b p l o t (2, 3, 4)
>> plot(t,y4)
>> title ('ỵ4')
>> subplot(2,3,5)
4. Vẽ đồ thị trong M at L a B
y1 y2 y3
Hình 2.4:
4.2 Đồ thị 3D
Lênh cờ bản
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
>> 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)
• c o n t o u r / c o n t o u r f / c o n t o u r3
0 2-,
Hình 2.6:
surf / surfe
waterfall
bar3 / bar3h
pie3 / fill3
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.
% Load
D=lo ad( ' x ỵ .d a t' ) ; %D is a m a t r i x w i t h t wo c olu m n s
X=D(:,1); % X is the first column,
y= D( :,2) ; % y is s ec o n d one
p lo t( x ,y ) % G e n e r a te t h e p l o t and l a b e l it
5. Lập trình vối Mat L ab 45
>> clear
>> who
(Không có biến nào trong Workspace trước khi chạy thủ tục.)
>> easỵplot
>> who
Your variables are:
D X y
Trong M a t L ab thì các hàm có rất nhiều tiện ích so vói các thủ tục, do đó
các
các chuyên gia đều k hu yến cáo
cáo rằng luôn luôn
luôn sử
sử dụn g hàm thay cho
cho thủ
tục.
5.2
5.2 H àm "m
"m-fil
-files"
es" (F u n ctio n )
Trong M a t L ab thì bat buọc tẻn hàm phải irung vói tén cùa file có
đuôi ”.m”. Hcàm là môt chương trình sử dung các tham số đầu vào/ra để
kết hơp ch ún g vối
vối các hà m khác và các
các lênh trong C om m and Wind
Window.
ow. Các
Các
b iếnn (ỉươc s ử dung trong hàm là các biến đĩa phưnng
biế phưnng (local variables), chì
tồn tai khi hàm đang thưc thi. Các biến địa phương này đươc phân biêt
với các biến trùng tên trong không gian làm việc hoặc của các hàm khác.
Các dử liệu đầu vào của hàm cho phép cùng một thủ tục tính toán (cùng
thuật toán) có thê được áp dụng với các dử liệu khác nhau. Do đó, các
hàm "m-files" có thể dùng lại nhiều lần. Trong M a t L ab thì các hàm có
thổ gọi
gọi các
các hà m kh ác đồng thời
thời các
các thủ tue riêng có
có th ể gói
gói vào tron g m ột
hàm. Các tiếp cận này cho phép phát triển lời giải cấu trúc của các bài
toán phức tap.
về cú ph áp , dò ng d ầu tiên của h àm ”m-file”
m-file” bao
bao gi
giờ cũn g có
có dạng:
function [outArgs]=funName(inArgs)
46 Chương 2. Mat Lab cơ bàn
bà n
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
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;
function [s,p]=addmult(x,y)
% addmult Compute sum
sum and product of
of two matrices
s=x+y;
p - x * y ; ________________________
________________________________________________
_____________________________________
_____________
Bây giò, ta xét cách thưc thi hàm twosum:
>> twosum(2,2)
ans =
4
>> x=[
x=[ll 2]
2];
; y=[
=[33 4] ;
>> twosum(x,ỵ)
ans =
4 6
5. Lập trình vói Ma t Lab 47
>> A = [1 2 ; 3 4] ; B = [5
[ 5 6;
6; 7 8 ] ;
>> two su m (A, B) ;
ans =
6 8
10 12
>> clear
>> X = 4; y = - 2;
>> two
tw o sum
su m (1,
(1,2)
ans =
3
>> x+y
ans =
2
>> di sp([x ỵ])
4 -2
>> who
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:
• Khi goi
goi hà m để thực
thực th i thì số
số lượng các
các biến trả về nê n trù n g vớ
với
số lượng
lượng các biến ou tpu t trong
trong hàm .•
• Mỗi hàm có các biến nội tại bao gồm nargin (number of input ar-
gum ents) và nargout (number of ou tput argum ents);
48 Chương 2. Mat Lab cơ bân
• Sử dụ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:
5.3
5.3 N hập , xu ất dữ liệu
Tiếp theo, chúng ta sẽ xét cách
cách nhâp , xu ất dữ liêu
liêu tron g Ma t L a b . Để
nhâ p dữ liêu
liêu từ bàn phím ta có
c ó thể dù ng hàm input, ví du:
>> x = i n p u t ('Enter your age:
age:')
') % nhập một số
>> s = i n p u t ('Enter your name:',
name:','s')
's') % nhập một
một xâu
Tuy nhiên cách nhập các dữ liệu như là tham số đầu vào của các hàm
đươc
đư ơc ưa d ùn g hơn.
Các hàm xuất dữ liệu thông dung trong M a t L ab bao b ao gồ
gồmm h à m disp
v à fprintf. Trong khi hàm disp thường được sử dụng dể xuất dữ liệu
tron g cửa sổ lệnh và chi
chi dù ng cho
cho các
các kết quả đơn giản thì hàm fp fpri
rint
nt f
sử dụ ng cho các
các dữ liệu
liệu đinh dạn g trước.
trước. Hơn nữa, khi muốn ghi dữ liệuliệu
vào file thì bắt buộc phải dùng hàm fprintf.
5. Lập trình ưói Mat L ab 49
5.3.1. Hàm d is p
>> disp(outMatrix)
>> 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
>> 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à
0 1 0
0 0 1
>> S=num2str (A)
s =
1 0 0
0 1 0
0 0 1
5. Lập trình với M at L ab 51
>> 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:
hoặc
chỉ làm việc khi X là m ột m a trậ n hàn g còn với ma t râ n cột thì không. Ví
du:
>> y = l : 4;
>> z=ỵ' ;
>> d isp(['z=',num2str(z)])
??? Error using ==> horzcat
CAT arguments dimensions are not consistent.
Thay vào đó, ta có thể sử dụng hai lệnh disp để hiển thị cột của các
vector hay m a trậ n , ví dụ:
1
52 Chương 2. Mat LAB cơ bán
3
4
hoặc đơn giản là nh ập vào tên của biến m à kh ông có dấu cuối dòng
>> z
z =
1
2
3
4
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:
5.3.2. H àm f p r i n t f
Quay trỏ lại hàm f p r i n t f , cú pháp của hàm này như sau:
5. Lập trình với M at L ab 53
fprintf(outFormat, outVariables) ;
fprintf(fileHandle, outFormat, outvariables);
>> x=3;
>> íprintf(' Square root of %g is %8.6f\n',X,sqrt (x))
Square root of 3 is 1.732051
Mã D ang
%s Dạng xâu
%d Dạng số nguyên
%f Dạng dấu chấm động
%e Dạn g dấu chấm động trong ký hiệu kh oa học
%g Dạng gon n h ất của %f hoăc %e
\n Chèn một dòng mối sau xấu kết quả
\t Chèn một tab sau xâu kết quả
% wd
% w.pf
% w.pe
>> 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
Hàm f p r i n t f duyệt các ou tV a ria b le s theo các cột. Điều này cũng có
thể dẫn đến các kết quả k hông như m ong muốn:
» A= [l 2 3; 4 5 6; 7 8 9]
1 2 3
4 5 6
7 8 9
5. Lập trinh với Mat L ab 55
fprintf (' %8 .
.2f % 8 ,
.2f %
1.00 4 .00 7 .00
2.00 5..00 8..00
3.00 6..00 9..00
ỉ)ể ghi dữ liệu ra file cần phải tạo ra một fileHandle với lệnh fopen.
Khi đó, tấ t cả tác d ụn g của các đinh dạng cũng nh ư vector hóa (xem mục
5.5) đều có thể được áp dụng.
X=1:10;
5 .4 .1 . S o s á n h ( C o m p a r i s o n )
Khi sử dụng các cấu trúc điều kiện, ta thường gặp các phép so sánh.
Sụ so sá nh được th ể hiện qua các tcán tử qu an hệ (R elational Operators).
Các toán tử này được dùng để kiểm tra hai giá trị bằng nhau, nhỏ hơn,
lớn hơn, cu thể:
56 Chương 2. M at Lab cơ bản
Toán tử Ý ng hĩa
< <
<= <
> >
>= >
~= Ỷ
Khi áp dụng các toán tử quan hệ thì kết quả sẽ là một giá trị logic, tức
là True hoặc False. Trong M a t L a b , các giá trị khác 0, bao gồm cả môt
xâu khác rỗng là tương đương với True. Chỉ có giá trị (}là tương đương
vổi False.
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ụ:
>> z=x>y
z =
0 0 0 1 1
Toán tử Ý n gh ĩa
&& and
11 or
~ not
• Các toán tử q uan hệ liên quan đến các phép so sánh của hai giá tri.
• K ét qu ả u ỉa một phép toá n qua n hệ là mội, giá trị logic (Tiu e (1)
hoăc False (0)).
• Các toá n t ử logic kế t hơp (hoặc phủ định ) các giá tr i logic tạo ra các
giá trị logic mói.
• Luô n có nh iều hơn một cách thể hiện cùng một phép so sánh.
Từ đó có môt lòi khuyên đối vói ngưòi dùng, đó là để bắt đầu, nên tập
trung vào các so sánh đơn giản.
5.4.2. C ấ u t r ú c đ i ề u k i ệ n h o ặ c r ẽ n h á n h
Dựa vào kết quả của một phép so sánh, hoặc của phép kiểm tra logic,
các khối m ã chương trìn h đã chọn sẽ được thự c thi hoặc bỏ qua. Các cấu
trúc điều kiện bao gồm: if, if. ..else, if. ..elseif và cấu trúc
switch. Có 3 dạng của cấu trúc if là:
58 Chương 2. Mat L ab cơ ban
1. i f
2. i f . . . e l s e
3. i f . . . e l s e i f
Cú pháp của cấu trúc i f như sau:
if expression
b l o c k o f s ta t e m e n ts
en d
N guyên tắc h o ạt động của cấu trúc trê n có th ể hiểu m ột cách đơn giản,
đó là k hố i b l o c k o f s t a t e m e n t s chỉ đươc th ưc th i n ế u e x p r e s s i o n
nhậ n giá trị True.
V í d ụ 2 .1 4. i f a< 0
d i s p ( ' a i s n e g a t iv e ' );
end
Nếu m uốn viế t các câu lệ nh trê n trê n cùng một dòng th ì sau
i f e x p r e s s i o n c ần có d ấu ví dụ:
i f a<0, d i s p l ' a i s n e g a t i v e ' ) ; en d
C ấu trú c i f . . . e l s e :
if x<0
e r r o r ( ' x i s n e g a ti v e ; s q r t (x) i s i m a g i n a r y ' ) ;
else
r=sqrt (x);
en d
và cấu trú c i f . . . e l s e i f :
if x>0
disp i'x is positive');
elseif x<0
disp('x is negative');
else
dispi'x is exactly zero');
end
5. Lập trình vói Mat L a B 59
Câu lệnh switch rất hữu dụng khi tâp giá trị của các biến kiểm tra là
rời rac (có thể là số nguyên hay xâu ký tự). Cú pháp của câu lệnh này
như sau:
switch expression
case valuel
b lo c k o f s ta t e m e n t s
case value2
b lo c k o f s ta t e m e n ts
otherwise
b lo c k o f s t a t e m e n ts
end
Vi d u 2.15. c o l o r = i n p u t ( ' E n t er y ou r f a v o r i t e c o l o r :
% c o lo r i s a s t r i n g
switch color
case 'red'
disp('Your color is red');
case 'blue'
disp('Your color is blue');
case 'green'
disp('Your color is green');
otherwise
d i s p ( ' Y o u r c o l o r i s n ot r e d , b l u e o r g r e e n ' ) ;
end
Cú pháp:
for index=expression
block of statem ents
end
60 Chươn g 2. M a t L a b cơ bàn
Ví dụ 2.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
for k=n:-1:1
block of statements
end
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.
Cú pháp:
while expression
block of statements
end
Mô tả:
5. Lập trình với Mat L ab 61
• Khối lệnh block of statements được thực thi nếu điều kiện
expression vẫn là True.
• Để trá n h tình tra n g lăp vô han, nên đặt giới h ạn trê n cho số lần
lặp.
• Các câu lệnh break và return là các cách khác n h au để tho át khỏi
một cấu trú c lặp. Cả hai lệnh này đều có th ể d ùng cho cấu trú c for
và while.
• break được sử dụng để thoát khỏi phạm vi của vòng lặp hiện thời
for hoặc while, chương trình sẽ tiếp tục sau đó.
• return được dùng để thoát khỏi một hàm hiện thòi. Điều này sẽ
ảnh hưởng đến việc thoát khỏi một vòng lặp. Bất kỳ một câu lệnh
nào tiếp theo vòng lặp trong hàm đều bị bỏ qua.
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:
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.
x=. . .
for k=l:length(x)
y ( k ) = s i n (X ( k ) ) ;
en d
x=. . .
ỵ=sin(X);
Khi sử dụ ng phép toá n v ector hóa thì việc tiền cấp ph át bộ nhớ là rấ t cần
thiết. N hắc lại là tron g M a t L ab các biến củng n h ư số chiều của chún g là
không cần kh ai báo trước, M a t L a B sẽ tự động điều chỉnh th ôn g qua giá
trị của các biến này. Ví dụ, vòng lặp sau sẽ tăng chiều của s sau mỗi lần
lặp:
y=[4 -1 9 0];
for j=l:length(y)
i f y ( j ) >0
s ( j ) = s q r t (y ( j ) ) ;
else
s ( j ) =0;
en d
en d
Để tiền cấp phát cho s trước khi gán các giá trị cho các thành phần, ta
làm như sau:
y=[4 -1 9 0];
s = z e r o s (s i z e (y) ) ;
). Láp trình với Mat L ab 63
for j= l :length(y)
if y (j)>0
s (j)=sqrt (y(j));
end
end
Việc vector hóa mã hoàn toàn đòi hỏi sử dụng việc đánh chỉ số mảng
(array indexing) và đánh chi số logic (logical indexing). Xét ví dụ đánh
chỉ số mảng:
ỵ =
0 2 4
k=0;
for i = [1 2 5]
k=k+l;
y (k )= x ( i ) ;
end
j =
1 2 5
» z=x(j)
z =
0 2 4
64 Chương 2. Mat L ab cơ bản
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
y=. . .
s = z e r o s (s i z e ( ỵ ) ) ;
i=find(y>0);
s ( i ) = s q r t (ỵ ( i ) );
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, n ] = s i z e (A) ; B ( : , 1 ) = A( : , 1 ) ;
for i = l :m
B (i , 1 ) = A(i / 1 ) ;
end
Mã vô hưỏ ng Mã ve ctor h óa
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:
Ta có thể thay đổi các đoan mã trên bằng cách sử dụng chỉ số logic
như sau:
hoăc
2. H à m từ n g k h ú c (P iecew is e fu n ction s)
sin(.r)/.T, .r/0
Hàm sinc được định nghĩa bời sinc(x) =
1, X = Ü.
So sánh đoạn m ã sử dụng lênh find:
function ỵ=sinc(x)
ỵ=ones(size(x)); % Set ỵ to%all ones, sinc(0)=l;
i=find(x~=0); % Find nonzero X values
• 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:
= > Khi viết một hàm m-f ile, cố gắng thêm các chú thích để mô tả
muc đích của hàm, yêu cầu về các biến input và định dang của các
biến o u tp u t.
5.8 Gõ lỗi
MatLab hỗ trơ một trình gỡ lỗi tương tác, bao gồm các câu lệnh sau:
• Các lệnh type và dbtype hiển thị toàn bộ nôi dung của một "m-
fìle";
• Lệnh error hiển thị một lời nhắn trên màn hình và dừng hẳn
chương trình;
• Hàm warning hiển thị một lòi nhăn lên màn hình tuy nhiên không
dừng chương trình;
function r = quadroot(a, b, c)
% quadroot Roots of quadratic equation and demo of keyboard
% command
% Synopsis: r = quadroot(a, b, c)
%
% Input: a,b,c = coefficients of a*x^2 + b*x + c = 0
%
% Output: r^column vector containing real or complex roots
d = b A2 - 4 *a *c;
if d<0
fprintf ('Warning in function QtiADROOT:\n' ) ;
fprintf('\tNegative discriminant\n\t...
Type "return" to continue\n') ;
68 Chương 2. M at Lab cơ bản
keyboard;
end
q = -0.5* ( b + sign (b) *sqrt (b/'2 - 4*a*c) );
r = [q/a; c/q]; % store roots in a column vector
phiên bản 5.0 hoặc mới hơn cung cấp môt công cu gọi là
M a t L ab
"profiler" hỗ trợ việc xác định các đoạn tắc nghẽn (bottlenecks) trong
chương trình. Xét chương trình
function result=examplel(Count)
for k=l:Count
result(k)=sin(k/50);
if result (k) < -0.9
result(k)=gammaln(k);
end
end
end
Để phân tích chương trình, trước hết dùng các lệnh sau để khỏi đông
"profiler" và xóa tất cả các dữ liệu cũ:
>> profile on
>> profile clear
Profiler tạo một thôn g báo dạng HTML về chương trìn h và khỏi tạo môt
cửa sổ trình duyệt. Tùy theo từng hệ thống máy tính mà các kết quả có
thể h iển thị ỏ các dạng k hác nh au.
Trong các chương tiếp theo, ta sẽ nêu các th u ậ t toán thườ ng được sử dung
trong kỹ th u ậ t và các chương trìn h m inh họa cụ thể.
6. Bài tập 69
+•*a > H
ym IM <c 4« r hT' t 46If(
0 * «*>4
Pf0fli8Summary
C * -J f -X Ỉ >'4 > J? ««-V c;*.
IuuvỊkiinuil
ooo: * 0002 t
0001» 00P1«
•ÍOS*
%
0000»
fcata MkMfcdmihMtedigi 0001 0 X 1 1
«4>A»'i»'fcỌ‘*5r3 !ii.!Jê fcie Mit '<!1 OOUI t 00011
0 011 «00»!
00ẼI 0 0211
0000 I 0002»
.■4H..ii>.iiầ{^j:4<sfLĩiSilu; 0005 » 0061 »
0 004 » 0 004 »
ow* 0306»
0« 0000*
00M« oaw*
008- ỉ 0G2I t
ocr?»
Hình 2.7:
2. 3A2/4
6. 2+ceil (-6/9)-3
3. 3A2 A2
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)
Bài tập 2.3. Dự đoán kết quả những phép toán sau, giải thích và kiểm
tra lại bằng M a tL a b .
70 Chương 2. M a t Lab cơ bán
^ I )
1. 1 & -1 4 o AI o N A II o
Bài tập 2.4. Nhâp vào vector X = [ 3 1 5 7 9 2 6], dư đoán kết quả
các dòng lệnh sau và thừ lại bằng M at L a b .
1. X (3) 5. X ( 6 : - 2 : 1 )
2. X ( ì : 7)
6. X ( [1 6 2 1 1] )
3. X (1: end)
2. ỵ<x 7. x &ỵ
0 I 1 <
0 X 1 * 8. x& ( - y )
1. a=b 5. a 1 (a)
3. a<b<a
7. a=b==a (xác định giá trị cuối
4. a<b<b của a)
3. y ( x<=4 ) 6. X (ỵ < 0 )
1. [x;y' ] 5. A (:)
3. A(:, [1 4] ) 7. A (1 :3, :)
4. A( [2 3] , [3 1] ) 8. [A; A (1; 2, :) ]
Bài tập 2.9. Cho X = [ 2 - 5 1 6]. Viết các lệnh thực hiện:
Bài tập 2.10. Tao vector x=randperm ( 35) (tao ngẫu nhiên 1 hoán vi
từ 1 đến 35). Viết các lênh để tính giá trị hàm sau sử dung chi số logic:
'
9 nếu X < 6
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.
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.
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.
6. Tính X . *y-w.
1. X + y 4. A - [x ' y ' ]
2. X + A
3. x' + y 5. A - 3
2. sum(A) 4. sum(A, 2)
Bài tập 2.15. Tạo ma trận A cỡ 4 X 4 có giá trị nguyên ngẫu nhiên nằm
trong khoảng [—10,10], sau đó:
1. Công thêm 10 vào các phần tử ở (ỉòng 1 và dòng 2, gá n kết quả cho
B.
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.19. N hập vào các lệ nh sau đê định ng h ĩa và vẽ đồ thi hàm
q(x) = exp(x):
sỵms X
g = exp(x)
ezplot(g)
Sau đó chỉnh lại miền xác đinh bằng cách nhập: e z p l o t ( g , [ - 2 , 2 ] )
Bài tập 2.20. Vẽ đồ thị các hàm y — sin(.r),y — sin (,T + V2) •?y
sin (r + */3) trên cùng một hệ true toa đô vối vector
X = 1 i n space(0,2*pi).
Bài tập 2.23 . 1. Tao mô t th ủ tục M a tL aB với tên ’te s tl .m ’ thưc hiên
các công việc sau :
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 đó:
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 .
6 ~ h i n2'
Muốn sai số là le - 12 thì cần ít nhất bao nhiêu số hạng?
76 Chương 2. M at L ab cơ bản
Bài tập 2.26. Có một th u ậ t toán khác để tính gần đú ng số 7Tnh ư sau:
1. Đ ặ t a = 1 ; b = l / s q r t ( 2 ) ; t = 1 / 4 ; và X = 1;
y = a;
a = (a + b) /2 ;
b = sqrt(b*y);
t = t - X* (y - a ) A2;
X = 2*x;
P i _ e s t = ( (a + b ) A2 ) / ( 4 * t ) ;
Hãy viết chương trìn h M a t L ab thể hiện thu ật toán trên, c ầ n bao nhiêu
bước lặ p để sai số là le —8, le —12? So sán h vói th u ậ t to á n tron g bài tập
2.25.
Bài tập 2.27. Viết các chương trìn h tính n!, (2 n —1)!!. (2n)!!.
Bài tập 2.28. Dãy Fibonacci là dãy số được xác định như sau:
Fi = Fỉ = 1; F„ = F „ _ 1 + F„_ 2 , n > 3.
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:
Bài tập 2.30. Đa thức Chebyshev Tn(x) đươc định nghĩa theo công thức
truy hồi sau:
Tn+i(x) = 2xTn{x) - Tn_i(x),
vói 7o(.r) — 1, Tị(x) — X. Lập chương trình tính đa thức Chebyshev bậc
n, kết quả lưu dưới dạng vector hệ số.
B ài tập 2.31.Viết chương trình tính tiền điện cho một gia đình, biết
rằn g nếu số Kwh sử dụng («):
• n < 100 thì giá 1 Kwh là 500đ;
Đồng thời:
• Nếu n > 500 thì sau dòng in tổng số tiền ghi kèm thêm câu: "Hạn
chế sử dụng điện!"
Bài tập 2.32. Viết chương trình giải và biện luận phương trình bậc hai
ax2 + bx + c = 0. Áp dụng để giải các phương trình X2 —3x + 2 = 0 và
X2 + 2x - 1 — 0. Kiểm tra lại kết quả bằng cách tính bằng tay hoặc sử
d u ng h àm r o o t s củ a M a t L a b .
Bài tập 2.33. Viết chương trình vói input là một số nguyên dương n và
n n’1 * 2012 1
ou tpu t là 2 SÔ Si, S 2 , trong đó Si — T k. s 2 = 53 Ap du ng tín h Yl -T,
k=i Jk=1 k=\ Kđ
sử dụng form at lo n g để in kết quả.
78 Chương 2. M at Lab cơ bản
Bài tập 2.34. Viết chương trìn h tính gần đú ng căn bậc hai sfã với sai số
£ cho trước the o công thứ c lãp N ewton.
• Chọn Xx =
•En+l 3Cjị
• Điều kiện dừng: < e.
Bài tập 2.35. Viết chương trình tính gần đúng căn bậc ba <ỵã với sai số
£ cho trước the o công thứ c lặp Newton.
• Chọn Xi =
ỏ
T
rong kỹ thuật, ta thường gặp bài toán: Tìm nghiệm thực của
phương trìn h /(x ) —0 (đại số hoặc siêu việt). Nói chung, nghiệm
của nó khó có thể tìm đươc trong dang nghiệm đúng. Ngay cả
tron g trườ ng hợp ng hiệm đú ng được tìm trong dcạng số th âp ph ân vô hạ n
(vô tỷ h ay h ữu tỷ tu ầ n hoàn) thì trong máy tính củn g gặp sư quy tròn số.
Khi đó ta cũng chỉ có được nghiệm gần đúng mà thôi.
Dể tìm nghiêm gần đúng (thưc) của phương trình f( x ) = 0, ta thưdng
phải tiến h à n h theo các bước sau:
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.
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
Để 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:
Đ ịnh lý 3.2. Với giả thiết của định lý 3.1 thì (o, h) là kh oả ng ph àn ly
nghiêm a của phư ơn g trình (3.1) nếu < 0 và tồn tại f'(x) đồng
thời f'(x) giữ nguyên m ột dấu v.r 6 [a, b}.
Từ định lý ta suy ra, nếu (d, b) là khoảng phân ly nghiệm Q của phương
trình (3.1) thì mọi khoảng (c, d) c (a,ò), sao cho f{ c ).f(d ) < 0 cũng là
khoảng phân ly nghiệm của phương trình trên (thu hep khoảng chứa
nghiệm). Khi đã có khoảng phân ly nghiệm thì tuỳ theo từng phương
pháp có th ể chon điể m Xo € [n, b} làm xấp xi đầu.
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
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
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.
X = q(x), (3.2)
Xn = g(xn-i) . / 1 = 1, 2, .. . (3.3)
Công thức (3.3) được gọi là quá trình lặp, n được gọi là thứ của phép làp.
Đ ịnh lý 3.3.
•
N ếu quá trình lạp (3.3) hội tụ, nghĩa là II—lim
>oo
x„ X thì
X- fì là ng hiệm cỉúng của phươ ng trình (3.1).
Chứng m inh. Do q(x) là h àm liên tuc n ên ta có
X = nlim
—K X
x n = nlim
—ĩoo
g (.Tn_i) = g \n-¥
( limoo
x„-i)/ = g ( x ) .
Vấ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
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
hoặc
kn - < r-^— kn - rìì-il • (3.6)
1- q
(Phần chứng minh chi tiết các bất đẳng thức trên có thể xem trong tài
liệu tham khảo.)
C h ú ý 3.1. Công thức (3.5) th uâ n lợi trong việc tìm nghiêm gần đún g x n
đạt sai số £ > 0 cho trước. Cụ thể, từ đánh giá
qn
Fn - u < , — Fi - £o < e
1- q
n = [log g(l - 7) + 1.
|ti —To|
Trong khi đó, công thức (3.6) thuận lợi khi tính trên máy. Muốn nghiêm
gần đúng x„ đat sai số e, ta chỉ cần kiểm tr a điều kiện dừng-
-(1 - q)
|T"n x n—1 1<c ổ —
2. Ph ương phá p lap đơn 85
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).
if nargin<5
maxit=le+3;
end
if nargin<4
epsilon=le-5;
end
delta=epsilon*(1-q)/q;
k=l; x=feval(g,xO);
while (abs(x-xO)>=delta) && (kcmaxit)
86 Chương 3. Giải gần đúng phương trình
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*.
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.
Ta sẽ lần lươt thưc hiên theo hai cách đã nêu trong chú ý 3.2:
function temp=g(x)
t e m p = l + x - x . A2 / 4 ;
end
>> [x,k]=lapdon('g',q,xO,le-5,100)
3. Phương pháp Newton (phương pháp tiếp tuyến) 87
Ban đoc hãy tư thực hiện theo cả hai cách trên và kiểm t ra kết quả.
Cho y — ơ (tìm hoà nh đô giao điểm của tiếp tuyế n trê n với tru c hoà nh) ta
được
„ = ,... _ / M
1 J;° Ỉ U Y
Nếu Xj e {a.h) ta có điểm M\{x , f[x.\)). Lặp lại quá trình trên với điểm
1
M] ta đươc
..
2 1 /'(*! )1" '
88 Chương 3. Giải gần đúng phương trình
H ì n h 3 .3
Tổng quát ta có
/ (•£»»—1) _ l o /Q r7\
•Tn — r n—1” 777 7’ ^ — 1)2,... (3.7)
Công thức (3.7) được gọi là quá trình lặp Newton (hay tiếp tuyến).
3.3 Sai số
Xem x„ « a thì |xn —a\ là sai số tuyêt đối của nghiệm gần đúng x„
của phương tr ìn h (3.1)
3.1)..
Với các điều kiện của định lý 3.5 thì ta có đánh giá
|*n (3.9)
với M2
M 2 > \ f "(x)
"( x)\\ V.T G \a,b}.
90 Chương
Chương 3. G iải gần đú ng p hươ ng trình
trình
Chứng minh chi tiết cốc đánh giá (3.9) và (3.10) có thê xem trong tài
liệu tham khảo.
Từ (3.10), ta thấy, để | r„ —(\\ < e thì cần
li <
/
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.
• 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
• Bước
Bướ c 3 : Từ xấp xi đầu Xo, tính
Sau k lần lăp ta thu dươc x k « n là nghiệm gần dũng của phương
trình. Sai số \xk - rv| dươc đánh giá theo công thức (3.10).
3.4
3.4 Chư ơng trình Ma t L ab
Chương
Chươn g trình M a t L ab minh hoa việc dùng thuât toán Newton (tiếp
tuyến) tìm
tìm nghiệm xấp xi xi của phương
phương trình /(;r)
/(;r) = 0 trong kho ảng p hân
ly nghiêm (a> fc), —
function
func tion [x, n]
n]=newton(fu
=newton(fun,dfu
n,dfun,ml,M
n,ml,M2,xO,
2,xO,err,ma
err,maxl)
xl)
% Hàm newt
n ewton
on tìm
t ìm nghiệm
nghi ệm gần đúng
đúng trên đoạn [a,b]
4 Phương phá p dây cung 91
% vói sai s ố t u y ệ t đ ố i e r r b ằ n g p h ư ơ n g p h á p N e w t o n .
% Input:
% _ f u n l à hàm v ế t r á i
% _ d f u n l à đ ạ o hàmhà m c ủ a hàm
hà m f u n
% _ xO l à Xấp XỈ b a n đ ầ u
% _ ml l à c ậ n d ư ớ i c ủ a đ ạ o h à m c ấ p mộ mộtt
% _ M2 l à c ậ n t r ê n c ủ a đ ạ o h à m c ấ p h a i
% _ e r r l à s a i số t u y ệ t đ ố i
% _ ma x l l à số p h é p l ặ p t ố i đ a
% Output:
% _ X là nghiệm xấp xỉ
% _ k là số phép lặp lặp cần
cần thiết
if nargin<7
maxl=le+3;
en d
if nargin<6
err=le-5;
end
del ta=sq rt(2* ml* err/M 2) ;
n = l ; x = x O - f e v a l ( f u n , x ũ ) / í e v a l ( d f u n , xO) ;
w h il e ab s (x -x O) >f=delta && n<m n< m axl
xO=x ;
x=xO-feval (fun,xO)/fẹval(dfun, xũ) ;
n=n + 1;
end
end
Bạn đoc hãy tự á p d un g để tính đến kết quả đối đối vói
vói bài toá n: T ìm nghiêm
gần dú ng của
củ a phương trình f ( x ) = X 1- 3.T2 1 75x—10000 = 0 trontron g kh oản g
(-11: —10). Chon điểm xuất phát Xo - -11, t ì m nghiệm nghi ệm x„ sao cho sai số
tuy
tu y ệt đối
đối kh ôn g vươt q uá 10 5.
92 Chương 3. Giải gần đúng phương trình
H ình 3.5
3.5
Dây cung qua A , B cắt truc hoành tại điểm có hoành độ là X \ . Xem Xi lcà
nghiệm
nghiệm gần đ úng của phương trình. Phương trìn h đường thẳn g qua A và
B:
B:
f{b
f {b)) - f ( a ) , \ I rf \
y = — f — ---- (X - a) 4- f ( a) .
b —a
Cho y = 0 ta suy ra
Xi
Xi = a - 2 7 7 -t / ( q)- (3.11)
- /(n)
Chọn Xo = a (hoăc Xo = b) thì d = b (hoặc d — a). Thay vào (3.11) ta có
X\
X\ - Xo
Xo-
f [ d)t -~ /J ì((x~T-/
f[ ~T-/
o) ( t o) (3 12)
Từ (3.12) ta có điểm
điểm A/i (xi,(xi, / (xi)) thuộ c cu ng AB.
AB . Lăp lại
l ại quá trình trên
đối vói đoạn [xi, d\ ;. .. ta đ ượ c quá trình lặp
lặp theo phương pháp dây cungc ung
4. Phương pháp dây cung 93
như sau:
n - 1.2,... (3.13)
Dịnh lý này có thể chứng minh bằng giải tích (đôc giả tự chứng minh
hoặc xem tài liệu tham khảo), ỏ đây ta chi mô tả hình vẽ cho một trường
hợp f ' > 0. f"{x) > 0 (xem hình vẽ 3.6).
y
3
m
X
o
/(«)
Hình 3.6
94 Chương 3. Giải gần đúng phương trình
4.3 Sai số
Q uá tr ìn h lặp (3.13) không thể kéo dài ra vô hạ n, dừ ng ở bước thứ lap
thứ n ta đươc x„ Rí o. Sai số đươc đánh giá theo công thức (có thể xem
chứng minh tron g tài liệu tham khảo):
% vói sai số tuyệt đối err bằng phưong pháp dây cung.
4. Phương pháp dây cung 95
% Input:
% fun is the object funtion
% xO, xl are two starting points
% (initial approximation to a zero)
% ml, Ml are lower bound and upper bound
% of the derivative f'(x)
% _ err is the tolerance
% maxi is the maximum of number of iterations
% Output:
% X is the zero
% n is the number of iterations
if nargin<7
maxl=le+3;
end
if nargin < 6
err=le-5;
end
n= 0 ;
delta=ml*err/(Ml-ml);
while abs(xl-xO)>=delta && n<maxl
x2=x0;
xO=x 1 ;
xl=xl+(xl-x2)/ (fevâl (fun,x2)/feval(fun,xl)-1) ;
n=n+l;
end
x=xl ;
end
C h ú ý 3.4. Q ua hai phương pháp Newton và dây cung đã xét trong các
tiết §3 và §4, ta thấy, trong cùng điều kiện của hàm /(.r) là hàm số liên
tuc và có đao hàm liên tuc đến cấp hai trên khoản g phâ n ly nghiêm (ì của
phương trìn h (3.1) th ì:
96 Chương 3. Giải gần đ ú n g phương trình
• N ếu / \ f " cùng dấu thì tính theo phương pháp Newton sẽ thu đươc
dãy đơn điêu giảm tỏi nghiệm dũng n còn theo phương pháp dày
cung sẽ đươc dãy đơn điêu tăng tới (ì.
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.
p{x) = 0 . (3.16)
Đ ịnh lý 3.7. Đặt A — max{|rti| ....... |an|} —max |o,| thì cac nghiêm (thưc
1 —1,
n
hoặc phức ) của phươ ng trình (3.16) thỏa mãn
- (• • • + {((Ìox + ữ i) X + G2 ) X + • • ■+ Ũn—Ị ) X + ữn ■
bo — Ooi
b\ = 60C+ O1 ;
b ‘ỉ — b ịC + «2 | (3.19)
bn b tì —\C + ữn .
Từ (3.18) ta suy ra p(c) = bn là giá trị của đa thức tại X = c. Quá trình
tính p(c) theo (3.19) goi là sơ đồ Horner, được mô tả trên bảng tính như
sau:
Chương trình M a t L ab m inh hoa việc tính giá tri của m ột đa thứ c tai
mót điểm bằng cách áp dun g th u ật toán Horner.
98 Chương 3. Giải gần đúng phương trinh
function v=hornerl(a,c)
% Input: a là vector hệ số của đa thức;
% c là giá trị của biến
% Ouput: V là giá trị của đa thúc tại điểm x=c.
m=length (a);
v=a (1 ) ;
for i=2 :m
v=v*c+a (i);
end
end
Thử ng hiệm chương trình trên, tính giá trị của đa thức
p(x) = —X7 + 4x 5 — 2x-4 + 5x2+ 7 có vector biểu diễn hệ số tương ứng
a = [ - l 0 4 - 2 0 5 0 7 ], ta thu được giá tri p( 2) = —5. Chú ý rằ ng
ta hoàn toàn có thể thực hiện công việc trên bằng cách sử dung lệnh
M a t L ab như sau:
» a = [ - l 0 4 - 2 0 5 0 7] ;
>> v=polỵval(a, 2 )
V =
-5
§6. GIẢI g ầ n d ứ n g h ệ p h ư ơ n g t r ì n h
PHI TUYẾN
(3.20)
trong đó /, q là các hàm (phi tuyến) phụ thuộc vào hai biến X, y. Thuật
toán và kết quả có thể dễ dàng mỏ rộng cho hệ n phương trình n ẩn.
6. Giải gần dúng hệ phương trình phi tuyến 99
6.1
6.1 Ph ướ ng ph áp Nevv
Nevvtton
Bằng cách nào đó (chẳng hạn phương pháp đồ thị), ta chọn được điểm
xấp xi ban đầu A/ 0 (.To,
(.To, ỉ/o) . X uất ph át từ
từ điểm
điểm đó ta tìm
tìm M ị (.Ti, y i ) gần với
nghiêm hơn. Đặt
— Xo + ho
ho,, 1J\ — Vo + ^0
và giả thiết f(
f ( x , y ) , g ( x , y ) là nh ững hàm số khả vi đến cấp cần thiế t nào nào
đó. Áp dung khai triển Taylor các hàm f( f ( x , y) v à g(x. y) tai điểm I\í0 ta có
Vói ho. ko đủ bé, bỏ qua các số hạng từ hị, kồ trỏ đi trong (3.21) ta được
xấp xì; thay dấu "w" bỏi dấu "=" ta thu được hệ phương trình để xác định
ho, ko'.
f'x(Mo)h
f'x( Mo)hoo + f'y(Mo)ko = - f ( M 0ỵ
(3.22)
g'g'x {Mo)ho + gy{Mo)ko — —g(Mo
g( Mo).
).
Tron g hệ (3.22)
(3.22),, nếu định thức Jacobi
Jacobi
K(
K ( Mo ) f'y (M 0)
Jo = J(
J ( M 0) = 7^0
gx (Mo)
(Mo) ¿ ( M o)
thì hệ trên tồn tại duy n h ất nghiệm tính
tính bời công
công thức
1 Ị (Mo) f'y ( Mo) .
/iu =
J(
J ( Mo) 9 (Mo)
(Mo) g'y(Mo) 1
(3.23)
1 f'x (Mo) ĩ ( Mo) .
ko =
J(
J ( Mo) g'x(Mo)
g'x(Mo) g ( Mo)
Mo )
đồng thòi ta được điểm gần đúng thứ nhất tốt hơn gần đúng Mo(xo,Vo)
ba
ban đầu
Xi = To + ho, y\ = yo + ko-
Nế
N ế u đ iểm
iể m Mi(.Ti, yi) chưa đa t mong muốn,
muốn, ta thực hiện lặp lai quá trình
trên đối với điểm M\. Tổng qu á t ta cócó công
công thứ c lặp
■^n+l •— xn
x n T hn',
(3.24)
pn+
pn+l = Vn T k n,
100 Chương 3. Giải gần đúng phương trình
. = ____ Ị _ f(
f ( Mn ) fy( A / n ) .
J(M n) ỡ ( A /„ ) g ' y { M n)
n) '
(3.25)
f ( M n)
ì' n n = 0. 1 . . . .
J(A/n) g( Mn)
Mn) ’
Ngư
N gười
ời t a đ ã c h ứ n g m i n h được .To. y0)
đượ c r ằ n g , n ế u x ấ p xi đ ầ u A/o(.To y0) gần đúng
vói nghiệm của hệ (3.20) thì quá trình lăp theo công thức (3.24), (3.25) sẽ
hội tụ tới nghiêm đúng (.T*. ym y m) của hê (3.20) khi n —» oc (có t h ể xem t r o n g
tài liệu
li ệu tham khảo)
khả o)..
Ị* = F{x,y)
(3.26)
Ịy — y).
*1 = F { x 0,yo)
<
Vi =G{x0,yo).
Tổng
Tổng qu át
'
In = F{
F { x n-\
n- \ , y n-i
n- i ) , „
' , 2 ___
Tì. = 1 ,2 ___ (3.27)
í/n = G ( z n—Ị , yn —i ),
Điều kiện để quá trình lặp (3.27) hội tu, nghĩa là dãy M„ (x,,.//„) hôi tu
tới điểm M*
M* ( x * , y*
y*) là nghiệm đúng cù° (3.26) khi n —> oc dươ
(3.26) d ươcc cho
ch o bởi
định lý sau
3 . 8. Giả a ử M*
Đ ịnh lý 3. X * . ỳ * ) ĩà nghiệm dũn g của
của hệ (3.26) nằm trong
hình chữ nhật
= {a < X < b, c < y < d}.
6. Giải gần đúng hệ phương trình phi tuyến 1011
10
Giả thiết Mo(xo, yo) € & bất k ỳ ỉà ỉ à xấp xi ban đầu, ngoài ra cấc hàm số
F(
F ( x , y ) , G ( x , y ) liê
li ê n tục,
tục , có các đạo h à m riê
ri ê n g liê
li ê n t ụ c và thỏ
th ỏ a m ã n cấc
điều kiên
dF dG
+
dx dx
(3.28)
ÕF dG
+ 0 < <7 < 1.
dy dy
Kh
K h i dó, q u á tr ì n h lặp
lặ p (3.27) hội tụ tới nghiệm đúng M* (x*. y*)
y*) của
củ a h ệ
(3.26) khi n —> oc.
|x„ - x*\
x*\ + Iyn
y n - y*\
y*\ < qn {|f
{|fcc - n\ + \d - r|}
r|} . (3.29)
(3.29)
Chứng minh định lý 3.8 và đánh giá chi tiết có thể xem trong tài liệu
tham khảo.
Xét ví du tìm nghiêm gần đúng cùa hê bằng phương pháp Newton:
X + 3 lg X - ỹ1 =0
<
2x2
2x2 - xy - 5x + 1 = 0.
Xấp xỉ đầ u có th ể đươc
đươc chon sơ
sơ bô
bô theo
theo phương phá p h ình học nh ư sau:
Khảo sá t và vẽ đồ
đồ th ị các hàm
y2
y2 — X + 3 lg X , (x > 0); ■
2x 2 —5x + 1
y = ------ X------- ■
trên cùng một hệ trục tọa độ (hình 3.7), ta thu được hai giao điểm N và
M vối các
các lân c ận tươ ng ứn g
function JF=JF(X)
X =x (1); y=x(2);
J F = [1 + 3 / (x*lo
(x*log(1
g(10)
0) ), -2*y;
-2*y; 4*x-y-5, -X] ;
end
.........................................§7. BÀI T Ậ P
Các bài tập sau đây đều sử dụng phương pháp tính theo công thức và
lập
lập trìn h tính theo
the o chươ
ch ương
ng trình M a t L ab để kiểm tra lai.
7. Bài tập 103
B à i t ậ p 3.1. Tìm kho ảng p hân ly nghiệm cùa các phương trìn h sau:
1. f ( x ) = X3 —6x + 2 = 0;
2. f ( x) = 2* - 5x - 3 = 0;
3. f (x) = lg(10 + x) —X —6 = Ü;
4. / (x) = lg 3; + X2 —6 = 0.
Bài t ậ p 3.2. Bằng phương pháp lăp đơn, phương pháp Newton, và
phương ph áp dây cung tìm nghiệm gần đúng của các phương trìn h sau
sao cho đat sai số tuyệt đối < 0 .0 1 .
4. (x - l )2 = ị r x ; 8 . X4 —'3x + 1 = \).
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.
X2 + y2 = 1
«
X3 — y —0
bằng các phương pháp lă p và phương pháp Newton (khi tính to án lấy 7
chữ số sau dấu phẩy).
CHƯƠNG
P hương pháp số t r o n g
ĐẠI số TUYẾN TÍNH
1.1 Đ ật vấn đề
T
rong thực tế, nhiều mô hình toán học dẫn đến việc tìm nghiệm
của hệ đại số tuyến tính:
Q m l^ l + Qm2%2 + • 4~ O-mn^n = ® m ,n + 1
trong đó a,j e R Vi, j là các số thực đã cho (hoặc tìm đươc tron g mô h ình
toán học hoặc có thể quan sát được).
N ghiêm của hệ (4.1) là một bô số th ực (hoặc phức) có th ứ tự sao cho khi
thay vào (4.1) được đồng nhất thức.
Hệ (4.1) có thể v iết dưói d ạng m a trận:
Ax —b, (4.2)
105
106 Chương 4. Phương pháp vSố trong đại số tuyến tính
trong đó,
Ơ11 «12 •• « in
A =
«2 1 «22 •• «2 n
e Rmxn là ma tràn hê số;
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)
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):
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.
OnXi + n 1 2X 2 + 0 1 3X 3 + 0 1 4X 4 = O i5
0 41 X1 + 0 4 2 X 2 + 0 43 X3 + 0 4 4X 4 — 045
2.1.1 Q u á t r ì n h t h u ậ 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:
còn
(1) O ii« n A n A
«à = 0 ,1 ---- ----- = 0 , I- 2 ,3,4;
ơn
nghĩa là, ẩn £i của hệ (4.6) được loại trừ ra khỏi các phương trình
th ứ h ai, ba và tư. K ết thúc bưóc một ta th u đươc hệ
• Bước 2: Loai trừ ẩn r 2 ra khỏi hệ (4.8) đối với phương trình thứ ba
và tư.
Với giả thiết «22* Ỷ 0, các hệ số của hai phương trình sau đươc biến
đổi theo công thức:
i(22)
ỈÍ 0. i = 3.4;
(4.9)
(2 ) ni2 -n2j
(1)
„ ( 1)
0 4
„ (1)
_ Q3 c
,i = « ò ------- 7n ’ i = 3,4; j = 3 , 4. 5.
««22
(1)
• Bước 3: Loại trừ ẩn ,r3 ra khỏi phương trình thứ tư của hệ (4.10).
G iả th iế t flg> / 0, các hệ số của phương trình thứ tư đươc biến đổi
như sau:
(4.11)
(4.12)
Từ hệ (4.12), giải từ dưỏi lên ta được nghiệm của hệ (4.6) và đươc tính
theo công thức:
4
Xi
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
H
(«)
O
«21 «22 «23 «24 «2 5
ĩ I Q
Các hàng a, b, c, d tạo nên hệ dạng (4.12). Quá trình thuận kết thúc.
Quá trình nghịch : Nghiêm X = (x\)x 2,X3 , x 4)t của hệ (4.6) được tinh như
sau:
• Từ (d) suy ra X4 = % r;
«14
«3 3
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.
3 .2 x i - 1 4 x 2 - 8.9X 3 + 3 .3 x 4 = 1 0
X! - 0 .9 6 7 1 0 ; x 2 = 0 .12480; x3 = 0 .4 2 6 3 0 ; x4 - 0 .5 6 7 9 0 .
Từ thu ật toán G auss ta thấy, quá trình th uậ n luôn phải giả thiết
a í r 1} 7^ 0 , i — 1. 2, .. .
112 Chương 4. Phương pháp số trong đại số tuyến tính
Nếu gặp n « 0 thì theo công thức (4.13) sẽ gặp phép chia cho số "s= 0"
đó. K hi đó sai số sẽ lón, đó ch ính là điều b ấ t lợi của phư ơn g p há p G auss.
Để khắc phục điều đó, ta xét phương pháp dưới đây, gọi là phương pháp
tru tối đai (Gauss-Jordan).
»
2.3 Ph ươ ng phá p G auss-Jord an (trụ tôi đại)
Nội dung của phương pháp là loại trừ ẩn.
Xét hệ phương trình (4.3) (trường hơp 777 = TÌ). Do phương pháp là loai
trừ ẩn nên thực chất là biến đổi hệ số của hệ phương trình để đươc hẻ
tương đương sao cho trong một phương trình của hệ mới chỉ còn lại một
ẩn số Xk. Sự biến đổi của hệ số được mô tả trên bảng số của ma trân mở
rông
Oll • ■ dỊj ftlq Qln 1
[yl|fc] = ^ 0) =
dpi . a PJ (Ipq opn ơp,n+1
laP9Ỉ = |a y |.
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:
(1 ) „(1)
11 0 an (1)
in “ 1,11+1
■ « í? .
(?)
»1 ■ a«;> . 0 a (1) aw
uj,n+l
(Ị)
pi . o ( 1)
w m
o ' 1) ịẫ/pn
a<0
a p,n+ 1
fl(l)
nì <p)
unj 0 ^nn
„(>)
a n ,n + l
• Bước 2:
Trong Ã(l\ chọn phần tử giải là aị}J với điều kiện r Ỷ V- s Ỷ Q- Giữ
nguyên hàng thứ r là h àng giải và đăt <4j) = <4*), s = 1, n. + T. Các
phần tử trê n côt giải s đều bằng 0 trừ phần tử giải, các ph ần tử khác
114 Chương 4. Phương pháp số trong đại số tuyến tính
được tín h theo quy tắc hìn h chữ nh ật (4.15). Dễ dàn g thấ y rằng, các
phần tử bằng "0" ở trong cột giải q ở bước trước vẫn bằng ”0”. Khi
đó, ta thu được A^2\
• Qu á trìn h trê n đươc lặp lại, sau n bưổc ta th u được hê phươn g trình
m à mỗi phương trìn h chì còn một ẩn số. Từ đó ta suy ra nghiêm cua
hệ (4.3).
về khối lương tính toán, đối với hệ n phương trìn h n ẩn, người ta dưa vào
các công thức tính để đếm các phép nhân, chia, số lượng các phép tính
cụ thể n hư sau:
Ta xét một vài trương hợp đê so sánh với phương pháp Cramer
n N c
3 17 11
4 36 26
5 65 50
10 430 375
B ảng 4.2
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ó).
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
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)
711 7l2 ■ q 1.
0 722 ■ ■• 72 ,
0 0 . ■■ 7 n
Từ Ax = b ta suy ra:
Q'Qx = b. (4.17)
Đăt:
Qx = y , (4.18)
Ợ y = b. (4.19)
2 .3 .1 . P h â n t í c h A = Q l Q
Ta có:
?V
- ỉ^«li - V2-7 7fci
9li. — J ) i = % n; (4.20)
«ij ~ £ f c = l QkiQkj .
Qij ~ ' (* < j) ; 9.j = 0 (i > j) .
Qii
Côn g thức (4.20) luôn đươc thư c hiện vì
2 .3 .2 . G i ả i h ê d ạ n g (4 .19)
Từ Ọ'?/ = 6 ta có
9 11 0 0 91 '6 1 '
921 92 2 ■. 0 92 (>2
=
hay
9n9i = ¿1
y =1
<1\1' (4.21)
bj - E U 1! 9ifcì/fc
Vi = ( Ỉ > 1 ).
7«
Từ Qx —y ta có
Ợ ll Ọl2 ••• (]ln Xl Vi
x2
0 <722 • ■■ Ợ2n
= m
• Bước 2; Giải hệ Qly - b với vector ỊJ - ( / / 1 , /72, . . . . ỤnỴ đươc tính theo
công thức (4.21).
Thưc h iện theo các bước của thu ậ t toán ta thu được:
0 722 723
= 0 1 -1
0 0 733 0 0 1
’l 2 1 " r
Q1- 0 1 - 1 , b= 1
0 0 1 1
ta th u được y = ( 1 , —1 , —l)t.
function Q =c ho de c(A)
% Find the lower triangular matrix Q in Cholesky
% decomposition A=QAtQ
% Input: A is (often) positive definite and symmetric
% Output: Q
n=size(A,1);
Q=zeros(n,n);
for i=l:n
for j=i:n
if (j==l)
S=A(i,i);
else
S=A(i,j)-Q (1: i-1,i)'* Q(1:i-1,j);
end
if j>i
Q(i, j)=s/Q(i, i) ;
120 Chương 4. Phương pháp số trong đại số tuyến tính
else
Q(i, i)=sqrt (s);
end
end
end
function y=uptriag(Q,b)
% This function solves the upper triangular system Q Aty=t
% Input: upper triangular matrix Q; vector b
% Output: solution y of above system
n=size(Q,1);
y=zeros(n, 1 );
y (1)= b (1)/Q (1,1);
for i= 2 :n
s=b(i)-Q ( 1 : i- 1 ,i) ' *y (1 :i-1 );
y(i)=s/Q (i,i);
end
end
function x=lowtriag(Q,y)
% This function solves the lower triangular system Qx=y
% Input: lower triangular matrix Q; vector y
% Output: solution x of above system
n=size (Q,1);
x=zeros (n,1 );
x (n) =y (n) /Q (n, n) ;
for i=n-l:-1 : 1
s=y(i)-Q(i,i+l:n)*x(i+l:n);
x (i)=s/Q(i,i);
end
end
2. Phương pháp giải đúng và chương trình Mat L ab 121
X'0 - m \ X \ = Hị
tron g đó:
7)2 + rn2 + Pn
XN — — ——— ;
xi — ơti+\Xi+i + 0i+i, i = N — 1, N — 2 , . . . , 1,0. (4 .2 7 )
Tóm lai, xuất phát từ 01,^1 tính rv1+i,/^1+i theo công thức (4.26). Sau đó,
tính X i (ì = N, N - 1 , __ 1.0) theo công thức (4.27). Quá trình tính theo
các công thức (4.26), (4.27) goi là công thức truy đuổi phải (vì các nghiêm
Xi đươc tính theo thứ tư từ phải qua trái).
122 Chương 4. Phương pháp số trong đại số tuyến tính
= ™2\ Vn = n2;
_ (lị ' ft' _ ^ihi+1 T fi = N — l . N - 2 , .... 1.0:(4.29)
íi Cị íi+l^i Ci Ẹi-ị-lbi
ni 4- m i/ii
3-0 “T
1 - m ^i
£ !
X'j+ 1 = €i+iXi + Tìi+1, * = 0, 1, . . . , yv —1. (4.30)
Quá trình tìm nghiệm xuất phát từ :r0, gọi là công thức truy đuổi trái
(tính dần từ trái sang phải).
end
end
— 2xo + Xj = —1
X'9 — 2xio = —1
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;
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
m a x |.7
I<i<m
j| (clxuẩn cưc đai)
^(°°) <i<m
rn
®||(1) = |z»| (chuẩn tu y ệt đối) (4.32)
j=i
rn 1 1/2
^ ()=
1 11 2 ỂN
.¿=1
(chuẩn Euclide)
Dãy ma trận A ^
Đ ị n h n g h ĩ a 4 .2 . . *= l.m; j = l . n j _
được gọi là hội tụ tới ma trận A — [ojj] x và ký hiệu là Ịim /l(t) — A, nếu
hoặc
Từ đây về sau ta sử dụng sự hội tụ của dãy ma trận /l(t) tới A theo nghĩa
hội tu theo c hu ẩn (hôi tu theo ch uẩn hay theo ph ần tử là tương đương).
Trưòn g hơp n = 1 ta có vecto r cột
1 — X — ( x j , x 2, • • • ) x m)
và cũng có khái niệm về sự hội tụ của dãy vector như dưới đây.
3. Phương pháp lặp đơn 125
Đ ịnh n g h ĩa 4.3. Dãy vector x(k) — (r ịk\x ỉ2k\ .. . , xịk)) được gọi là hội tụ
tói vector X — (xi, x 2 , . . . , xm)‘ khi Ả- —>oc và ký hiêu lim x (kì — X nếu
k—>oo
lim — X, Vi = 1. m
k-Võo
hoặc
||.T^
II
—.r||ll(p) —>• (} khi Ả: —>oc,’ p1 — 00, 1 , 2 .
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:
IMI(p) < 9 (p = . , ),
00 1 2 (4.35)
trong đó 0 < <ì < 1 , thì hệ (4.33) có nghiêm duy nh ấ t X* và dãy vectorx
dược tính theo công thứ c lặp (4.34) sẽ hôi tụ tới X* th eo chuẩn tư ơng ứng,
tức là
lịa:^ —X'*||ll(p) —» 0 khi k —>3C (»
II ^
= , ,’ ).'
00 1 2
126 Chương 4. Phương pháp số trong đại số tuyến tính
3.2.3. Đ án h giá sa i số
Khi tính toán thì quá t rìn h lặp (4.34) không th ể kéo dài ra vô han m à
phải dừng ỏ bước th ứ k. nào đó ta được x(fc) « X*. S ai số được đcánh giá
theo công thức
Để sai số giữa nghiệm đúng X* và nghiệm gần đúng x (fc) nhỏ hơn £ > 0
||x(fc) - x(*-1)|
| < (' ì ~ qK = s. (4.38)
II II (p ) q
N hư vậy, khi cài đ ặt trê n máy, ta so sán h độ lệ ch giữa hai p hần tử lặp
liên tiếp, nếu thỏa mãn (4.38) thì dừng máy. Còn theo (4.37) ta sẽ có số
phép lặp cần th iết phải th ực hiện đê đ ạt được sai số nhỏ hon c. số phép
lặp k cần thỏa mãn:
k < ---- 1 1 - Ì Ị i —
q ll^)-.r(°)||(p)’
hay
sao cho đạt sai số tuyệt đối không vượt quá 0.02 .
G iả i:
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.
3.2.4. C h ư ơ n g t r ì n h M a tL ab
X( i) = (B ( i ) -A ( i , [ l : i - l i +1 : n ] ) . . .
*X0 ( [1 : i - 1 i + l : n ] ) ) / A ( i , i ) ;
end
err=abs(norm(X-XO)); relerr=err/(norm(X)+eps);
X0=X; numites=numites+l;
if (err<tol)II(relerr<tol)
break
end
end
end
§4. S ự K H Ô N G Ổ N Đ ỊN H C ỦA H Ệ Đ ẠI s ố
TUYẾN TÍNH
Trong hệ đại số tuyến tính , nếu trong quá trì n h khảo sá t thưc tế cho
ta các giá trị đúng của các hệ số của hệ (các phần tử của ma trân vế trái
A và cột vế phải b) thì ta có th ể áp d ụng được các phương p háp giải dứng
đã xét tron g §2. Tuy nh iên do tro ng thự c tế các số liệu thu dược nói chung
chi là gần đ úng tron g dạn g số thậ p phân, quy tròn nên chún g ta chỉ được
hệ Ăx — b. T ùy thuộc sự quy tròn mà sinh ra sự khác biệt đáng kể đối với
nghiệm tìm được, có trường hơp dẫn đến sự m âu th u ẫn đối VÓI thưc tiễn.
Sau dây ta nêu một số ví dụ dể thấy rõ điều này.
23:1 + *2 =2
<
23,1 + 1.01*2 = 2 .0 1 .
! 2* i + * 2 =2
2 .01*1 + *2 = 2.05
2*1 + *2 = 2
<
8*1 + 3.03*2 = 7.03
Ị 2* 1 + *2 =2
[ 8*1 +3*2 = 7
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
A.B = B. A — E, (4.39)
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.
Chú ý 4.5. Q uá trì n h giải bao gồm việc giải đồng thời n hệ phương trình,
mỗi hệ có n ẩn (có cùng ma trận hệ số là A). Để được nghiệm là ma trậ n
A~l thì nên chọn ph ần tử giải qua mỗi bưốc là ph ần tử a|| trê n dường
chéo chính. Hơn th ế nữ a ta lại chọn = 1 (bằng cách chia dòng thứ
i đó cho a ị i ~ l ) ) . Chẳng hạn ngay bưóc một, phần tử «11 của ma trân A có
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.
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
C h ư ơ n g t r ìn h M a t LAB
function X=GJInv(A)
% GJInv computes the inverse matrix of a square matrix A
% by using Gauss-Jordan method.
% Input: A is a square matrix
% Output: X is the inverse of the matrix A
n=size(A,1);
E=eye (n);
X=zeros(size(A));
for j=l:n
X (: ,j)= g a u s s _ j o r d a n ([A E (:,j ) ]);
end
end
134 Chương 4. Phương pháp số trong đại số tuyến tính
0 0 . • • Vnn
«nl «n2 • « nn
Sử dung tính chất bằng nhau của hai ma trận, từ (4.44) ta suy ra công
thức tính Q- ' như sau:
1
an — — , 7 —77, 77 —1 ,..., 2.1:
(\,j = 0 V? > j;
1
^TỈ-1.71 Ọĩì— 7
*7/1—1,n—1
«n-2,fc = ------- ----- X] Qn-2 jOtjk, k = n ~ 1,77, (j < Ả:); (4.45)
f/n-2,n-2 j=„_i
1 "
« 2,fc = £ < /2 jt tjfc , A. = 3 , 4 , . . . , 77 (.7 < A;);
922 j = 3
1 n
«I.fc = - — k = 2,3,. ..,77 u < k ) .
9n j=2
Như vậy, Ọ “1 là ma trận tam giác trên. Các phần tử của cỉưồng chéo
chính lược tính theo công thức a lt = — . 7 = 1.77, còn các ph ần tử p hía
9n
trê n đ tò n g chéo chín h đươc tính theo (4.45) từ dưới lên, t a có Q~l và theo
(4.43) ta có A~ l .
1 2 1
,1 = 9 r, 1
1 1 3
Giải:
1 2 1
Q - 0 1 -1
0 0 1
1 -2 -3
1
o 0 1 1
136 Chương 4. Phương pháp số trong đại số tuyến tính
Khi đó:
14 -5 -3
A~ l = Q - ' i Q - ' Y = -5 9 1
-3 1 1
C h ư ơ n g tr ìn h M a t L ab
function B=chodecinv(A)
% Find the inverse of a matrix
% using the Cholesky decomposition
% Input: A is (often) positive definite and symmetric
% Output: B is the inverse matrix of A
n = size (A,1);
Q = chodec(A); % Find the lower matrix Q such that A=QAtQ
P = zeros (n,n); % P is the inverse matrix of Q
for i=l:n
P(i, i)=1/Q (i,i);
end
for i=n-l:-1:1
for j=i+l:n
P (i, j) =-Q (i,i + l:n)*P(i + l:n,j)/Q(i,i);
end
end
B=P*P';
6. Tri riêng, vector riêng của ma trận và chương trình M at L á B 137
§6. T r ị r i ê n g , v e c t o r r i ê n g c ủ a m a t r ậ n v à
CHƯƠNG TRÌNỈI MATLAB
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)
Da thức P{X) \A —XE\ gọi là đa thức đặc trưng. Giải phương trình đa
thức (4.48) ta được các giá trị riêng của ma trận A. úng với mỗi A, giải
(4.47) ta được vector riêng tương ứng Tuy nhiên, số lương phép tính để
tìm đa thức đặc trưng là rất lớn khi n tăng. Để giảm khối lương tính
toán, ta xét một số phương pháp sẽ đươc trình bày sau đây.
B = T~lAT.
138 Chương 4. Phương pháp số trong dạ i số tuyến tính
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 .
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.
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.
p 1 Pl P3 • •• Pn-Ì Pn
1 0 0 . 0 0
0 1 0 . 0 0
0 0 n .. n 0
0 0 0 .. 1 0
6. Tri riêng, vector riêng của ma trận và chương trinh Mat L ab 1:ỉ 9
Sử dung khai triển theo côt và quy nap ta thu được đa thức đặc trưng
của m a trân trên:
P\ - A p2 P-.Ì ■ • pn-ì pn
1 -A 0 0 0
0 1 -A . 0 0
dcỉ{P - \E ) = det
0 0 0 . -A 0
0 0 0 1 -A
= ( - l) " ( A B - p 1AB- I - f t An- 2 --------- P n - x X - P n ) . (4.49)
6.3.2. Q u á t r ì n h b i ế n đ ổ i m a t r ậ n A v ề d ạ n g p
• Bước 1.
Đặt — An = [dị]’] = [ a , j ] . Vi. j = 1,71. Giả thiết Ỷ 0- Chọn
1 0 . 0 0
0 1 . 0 0
0 Ó) n i»
n u2 ■ •• 11 11,11-1
0 0 0 1
là ma trân thu được từ ma trận đơn vị E bằng cách thay h àng thứ
V - 1 bời hàng thứ TI của ma trân A\Ị\ Do det Mi 0 . ^ 1 „ / 0 nên
1 0 0
0 0 0
M -1
ọjl
7 ’)
'nĩL 'nl" , 'll.tl—1
140 Chương 4. Phương pháp số trong đại số tuyến tính
a i l “ 12 « 1 ,7 1 - 2 “ 1 ,1 1 - 1 •
-4i2) (4.50)
„(2 ) (2)- 1 ,2 „(2) „(2 ) „(2 )
««í71- 1 ,1 «0 71 • « 71 —1 ,71—2 « 71 - 1 ,7 1 - 1 "' 71- 1,11
0 0 ... 0
1 0 0 0 0
0 1 0 0 0
Mo
„(2) „(2 ) (2 ) (2 >
f l „(2 )
« 71- 1 ,1 « 71- 1 ,2 • « 71- 1 ,7 1 - 2 « 71- 1 ,7 1 - 1 '^ n —1,71
0 0 0 1 0
0 0 0 0 1
1 0 0 0 0
0 1 0 0 0
M ĩ' = fl(2)
«71-1,1
„(2)
«71-1,2 1 „(2)
«71-1,11-1
„(2)
^71-1,71
... (2)
a (2)
^ n —1 ,7 1 -2
fl(2)
^ n - l ,n - 2 «71 1, n - 2
„(2)
^ n - 1 ,71 2
a (2)
«71 1,71-2
0 0 0 1 0
0 0 0 0 1
/1(3) _ (4.51)
J ln (3) (3 ) „(3)’ i3 )
„(3)
«71-2,1 «7 1-2 ,2 • •• «11-2,71-2 ^ n —2,71 —1 «7 1-2 ,7.
0 0 1 0 0
0 0 0 1 0
6. Tri riêng, vector riêng của ma trận và chương trình Mat L ab 141
• Quá trình trên được thưc hiện và sau n —1 bước ta thu được ma
trân dang P:
r = 4") = =
tức là p ~ An.
Số lương phép tính để biến đổi từ đến p cỡ N = n3 —n2 phép tính
nhân và chia.
Trong các bưóc tính trên, ta luôn già thiết 1 Ỷ 0. nếu —0 thì
quá trình trên không thưc hiện đươc. Chẳng hạn sau một bưóc, ta đươc
/lị2) ~ /lị,1) và có flj2ij n _ 2 = 0. Trường hơp này có hai khả năng xay ra.
1. Moi phần tử aị2ỵ ị k = 0 v/c < n —2 (moi phần tử của hàng n —1, đứng
trước u[2) Jn đều bằng "0"). Khi đó đa thức đặc trưng của
2 sẽ là:
det(A<,2) - XE) =
«n - A „(2) „(2) J2)
«12 «1,0-2 «1,71-1 «i,n
«M - A n(2) „(2) „(2)
«ỉ? «2,11-2 «2,71-1 «2,71
„(2) J2)
n{2)
«n-2,1 «11-2.2 ••• „(2)
«11—2,71—2 - A
A «n-2.11-1
fl(2) «71-2,71
„(2) J2)
0 0 0 « - ,n-l - ^
11
A
1 **n—l,n
0 0 0 1 -A
[-A - A) - «n—l,nj det ( ¿ S a - A /ĩ) , (4.54)
0 .. . 0 ... 1 0 0
c =
0 .. . 1 ... 0 0 0
0 .'. . 0 ... 0 1 0
0 .. . 0 ... 0 0 1
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.
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.
pi P2 Pn 1 Pn
U\ V\
1 0 0 0
1) 2 ì) 2
0 1 0 0 =A
Vn Vn
0 0 1 0
hay
Vn—l = A j/n .
2 1 0
Ví du 4.11. Tìm tri riêng và vector riêng cùa ma trâ n A 1 3 1
0 1 2
Giải:
1 5 -5 1 -5 5
1_
M* = 0 1 0 => Mĩ 0 1 0
0 0 1 0 0 1
Từ đó ta có:
7 - -14 8
/ 1(3) = M2A w M ĩ l = 1 0 0
0 1 0
Vây
=>• Ai = 4; A2 = 2; và A3 = 1.
ì 0 0‘ ì -5 5 V Y
Xx = 0 1 -2 0 1 0 4 — 9
0 0 1 0 0 1 1 1
ì 0 0" ì -5 5 ‘4 ’- Y
' 2
ệ c i
/H
o í
ì 0 0’ ì -5 5 Y ’ 1 "
x 3 - ( M r 1M2- 1)y 3 = 0 1 _2 0 1 0 1 = -1
0 0 1 0 0 1 1 1
C h ư ơ n g tr ìn h M a t L ab
6 .4 .1 . N ộ i d u n g p h ư ơ n g p h á p
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ó:
Đ ặt
AkY (0) = ỵ(*,) k = Yjt' (4.60)
hay:
h Y ^ - V + • • • + òn_ jy (1) + bnY {0) = - y (n). (4.61)
Đây là hệ đai số tuy ến tính , n phương trìn h , TIẩ n bị (i = 1, n) có dạng ma
trân:
(n-l) (n-2) (0)1 bị
V1 !Ẩ .. ứ" y\ y\(n)
(n-1) (0)
V2 V?-* .. yị]) ?/2 bi
= —
Àn)
y 'r 2’ ■ yí°[ bn y£ \
Giải hệ tr ê n ta th u được /i], ¿»2 , . . . , bn là hê số của đa thức đặc trưng của
ma trận A (dạng (4.57)).
146 Chương 4. Phương pháp số trong đại số tuyến tính
6.4.2. T hu ật toán
Chọn vector Y'(0) Ỷ V bất kỳ và tính dăy {y(n)} theo công thức (4.60):
y(! ) —/Ị y i0)- y(2) —,4y ( 0 — yị2y ( 0).
y(n) _ 4 y(n-l) _ _ yjny(0)
Quá trìn h tính được mô tả trên bảng tính như sau (bản g 4.3):
yo y(i) y ( 2) y(n)
4 y ( 0) 4y(0) A y 0 > —^ 4 y(n-i)
Bả ng 4.3
Từ đó ta có hệ (4.61), giải hệ này ta thu được bi i —T~n.
Chú ý 4.6. Khi giải hệ (4.61), nếu hệ có nghiêm duy nhất thì chủng
chính là hê số của đa thức đăc trưng của ma trân A. Trong trường hơp
hệ kh ôn g có ng hiệm duy n h ấ t (do đươc chọn b ất kỳ), ta chon lai y (0)
sao cho hê trên có nghiệm duy nh ất.
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)
12 3 4 1 1 30 208 2108
2 12 3 0 2 22 178 1704
3 2 12 0 3 18 192 1656
4 32 1 0 4 20 242 1992
Từ bảng tr ên ta được hệ phương trình
208 30 1 r V 2108
178 22 2 0 62 1704
192 18 3 0 ^3 1656
242 20 4 0 p4. 1992
Chương trình M a t L ab
§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.
Y = j ^ c kX k, Cị ỷ 0- (4.64)
fc=i
148 Chương 4. Phương pháp số trong đại số tuyến tính
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
Am+lY w \ ? +lC iX i
= A, (A^dXx) « Ax/lmy. (4.67)
Từ đó ta có:
(4.68)
Al* l k v j = 1’n-
Từ (4.67) ta lại có:
A (AmY) ta XiAmY.
Điều này chứng tỏ Ai là trị riêng của ma trận A, vector riêng tương ứng
là Xi = AmY hoặc X\ = Am+ÌY.
7. Tìm gần đúng trị riêng và vector riêng 149
A i — A2 = • •• = A r ;
Am+lY as A ,/ T y
Ai — —A2; (4.71)
|Ai I = IA2 1> IA31> • • • > |An| . (4.72)
150 Chương 4. Phương pháp số trong đại số tuyến tính
Al2fcr = A f ( c 1X 1+ c2X2) + è c j A fX j .
j= 3
Từ đó ta có
Từ (4.74) ta suy ra
(4.75)
Aĩ ~ (A2kY) ’ J~ '
Tro ng công thức (4.75) cũng có thể lấy:
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ỉ
suy ra
A2kY + ẰiA2k- 1V « Af 2Ơ,X1. (4.77)
M àt khác, ta lại có
hay
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:
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:
Ta thấy
^ « 11.8306, 3 = 1
{A*Y)j
« 11.8330. 3 = 2
(AsY)j
. è * 11-8370' 7 = 3 .
Vậy chọn trị riê ng trộ i Ai « 11.83; vecto r riên g chọn là y46y . Do các vector
riêng khác n ha u hằ ng số nên có thể chọn
(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
' 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
«11 «12
Ai — «11 > 0; A2 > 0;
«21 0.22
Dối với m a tr ậ n đối xứng , xác định dương ta có th ể tìm được tấ t cả các trị
riêng và vector riêng dựa vào tính chất trực giao của các vector riêng.
Thuật toán : X uất p h át từ phương trình
A X = XX (4.81)
hay
n
y 'aqXi — \Xj, i = l,n. (4.82)
j=i
Ta thấ y h ê (4.82) gồm phư ơng trình, n + 1ẩn là Xị i = I Trĩ và A. Nhưng
11
do các vector riêng ứng với trị riêng nào đó sai khác nhau một hằng số
Iihân, nên trong các ẩn Xi,X2 , . . . , xn, ta có thể chọn một ẩn nào đó bằng
" 1 ". Khi đó, hệ còn lại đủ n phương trình và n ẩn. Quá trình giải (4.82)
dược tiến hành qua các bước:
1 n—l
Xi - Ã
^ OịjXj T Oị.n i — 1 , n —1
2= 1
n -1
X = 0-ijXj+ (4.83)
j=1
Hê (4.83) tuyến tính đối với X, (ỉ = 1, n —T), phi tuyến theo A. Ta
giải hệ này b ằn g phươ ng pháp lăp.
Chon xấp xi đầu bất kỳ
154 Chương 4. Phương pháp số trong dại số tuyến tính
sau đó tính
A<°>=
j=l
ta đươc xấp xỉ đầu của A(0).
Qu á trìn h lăp thực hiện theo công thức:
xi
(m)
=
Try
1 n - l
\ -> (m -1)
i = l ,n -
+ <*i.n , i- 1
b=' ì
A(m) = + «n,n, rn = 1,2, (4.84)
j=i
Vn = - ỵ , X M , (4.85)
j=i
nghĩa là, nếu tìm được j/j, j = ì, Tì — 1 th ì có !/„.
Lặp lai quá trình trên, chon yn 1 = 1 ta thu đươc:
n- 2
yn = - 53 x i V j - Xn-1- (4.86)
j=i
Thay vào hệ (4.83) ta được hệ n — 1 p hư ơn g t rì n h n - 1 ẩn là
yM/2, ■• • , ỉ /n - 2 và A.
Chon xấ p xỉ đầu yị°\ •■■■y i- 2- 1> lặp lại bước 1 ta đươc
y[m\ y ị m\ ■■■! ĩ/n-2! 1 và ỉ/n tính theo (4.85).
Sau // bước ta tìm được tất cả các tri riêng và vector riêng tương
ứng.
7. Tìm gần đúng trị riêng và vector riêng 155
Ví dụ 4.14. Tìm tri riêng và vector riêng gần đúng của ma trân
4 2 2
A= 2 5 1
2 1 6
Giải:
Ma trận A đã cho là ma trận đối xứng, xác định dương (bạn đọc hãy tự
kiểm tra). Từ A X — XX ta có
2x i 4- X2 4“ 6x3 — A.X3
X
'i = J (4x'i 4- 2x2 4“ 2)
Ịa — 2xi + X'2 4- 6
và xị1^ = 0.89, = 0.89, xịp — 1 . Cứ thế tiếp tục ta thu được kết
quà lính nhu trong bảng sau:
r (m) Jrn) A(m)
m Xj JU<2
0 1 1 9
1 0.89 0.89 8.67
2 0.85 0.83 8.53
3 0.83 0.80 8.46
4 0.81 0.78 8.40
5 0.8505 0.770 8.38
6 0.806 0.771 8.383
7 0.807 0.771 8.385
8 0.8074 0.7715 8.3863
9 0.8076 0.7717 8.3869
10 0.8076 0.7719 8.3871
11 0.8077 0.7720 8.3874
156 Chương 4. Phương pháp số trong đại số tuyến tính
Ta thấy vối hai phép lặp liên tiếp 10 và 11 thì các thành phần
tươn g ứng kh á gầ n n h au nê n có th ể chọn Ai ~ 8.3871 thì V
(0.8077; 0.7720; 1)*.
Từ hệ (a) ta thay Xi bỏi yt, với 2/2 = 1 , 1J3 theo (c) ta thu đươc hê
yx = J (2.3864ĩjx + 0.4560)
Xx = 1.19232/1 -h 4.2280
Chọ n xấp xi đầu yí0) —1 => A'°' —5.42; ỉ/ị1' = 0.52. Kết quả tín h chi
tiết được cho tron g b ản g dưới đây:
rn (m) \(rn)
V\
0 1 5.42
1 0.52 4.85
2 0.35 4.64
3 0.28 4.56
4 0.25 4.53
5 0.23 4.50
6 0.223 4.494
7 0.220 4.490
8 0.218 4.488
9 0.2174 4.487
10 0.2171 4.486
11 0.2170 4.4867
Chương trình Ma t L a b
§8 BÀ I TẬP
Bài tập 4.1. Giải hê phương trình Ax — b bằng phương pháp Gauss-
Jordan, trong đó:
5 3 1 2 ‘6 7 2 0 1" 3
4 7 2 1 6 1 0 3 2 2<tề
, h= c
t
I
I , 6=
1 3 9 2 10 2 1 0 3 4
9 1 0 8 2 3 0 2 7 7
0.2
1.7 0.1 0.3
0.2
1.9 - 0.1 0.2
4. A =
0.1 - 0.1 1.3 -0.4
0.3 0.2 -0.4 4.1
158 Chương 4. Phương pháp số trong đại số tuyến tính
Quá trìn h tính theo chương trình M a t L ab lấy tới 7 số lẻ sau dấu phẩy
(nếu có).
Bài tập 4.2. Giải hệ phương trình bằng phương pháp Gauss-ơordan
(tính theo thu ật toán kẻ bảng và sử dụng m áy tính tay).
\x.\ + 3x 2 — 4x 3 —X ị = 9 X+ y + z = 0
Bài tâp 4.3. Giải hê phương trình sau bằng phương pháp Choleskv
(khai căn).
5 3 2 1 1 7 4 3 1 {
3 6 1 2 4 4 8 2 5 10
1. A= , 6= ; 2. A = , 5=
2 1 5 1 7 3 2 7 4 9
1 2 1 6 2 1 5 4 11 9
l.í
'4.9 5.0
1.0 0.1
Iỉài tập 4.4. Giải các hệ phương trình sau bằng phương pháp lặp đơn
theo cách áp dung chương trình Mat Lab sao cho đạt sai số £ < 10-4.
8.Ï1 + a.'2 + z3 = 1 2 x i + 3 x 2 — 4 x 3 4- Xị 3
1 . X 1— 5.T2 + .T3 = 16 ; Xi - 2.T2 - 5.T3 + Tị 2
3.
.T1 +.T 2 —4 .T3 =7 5 .T1 - .T +
3 2 x3 - 4.T4 1
- 0 . 2 5 x - 0 . 1 4 y + 1.212 = 2.780
Bài tập 4.5. Tìm m a trận nghịch đảo của các m a trậ n theo phương pháp
G auss-Jordan bằn g cách biến đổi trực tiếp theo thuật toán tính toán và
cách dùng chương trình M at Lab đĩ viết.
3 2 2 13 14 6 4 '
1. A - 1 3 1 y 8 - 1 13 9
3. .4 = KỊ
5 3 4 6 7 3 2
9 5 16 11
1 9 6'
2. A = 2 5 15 ĩ
6 15 46
Bài tập 4.7. Xây dựng chương trìn h M a t L ab tìm đa thức đặc trưng của
ma trân theo phương pháp Danhilepski. Áp dung tính với các ma trân
sau:
Bài tập 4.8. Tìm trị riên g và vector riêng của các m a trậ n bằn g phương
pháp Krư lô p A. N.
Bài tập 4.9. Tìm trị riêng trội và vector riêng tương ứng của các ma
trận sau:
Bài tập 4.10. Tìm trị riêng và vector riêng của m a trậ n A theo phương
pháp trư c giao.
5 3 2 4.9 0.1 Ì .r
1. A = 3 6 1 ĩ 2. A = 0.1 3.6 1.0
2 1 5 1 .1 1.0 4.9
§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ố
161
162 Chương 5. Phép nội suy ưà xấp xi hàm
Từ bàng số (5.1), hãy xây dựng đa thức Pn{x) bậc < n sao cho
Đa thức pn(.r) sinh ra từ bảng số (5.1), thỏa mãn điều kiện (5.2) gọi là đa
thức nôi suy (hay công thức nôi suy) và ta có pn(.r) R í f(x ) (xấp xi) trên
đoạn ịn,b}. Các điểm X, e [a, b} (i —0, n) goi là các mốc nôi suy (hình 5.1).
Ilình 5.1
Giá tri ỊỊ tại điểm X 6 (a. b); 1'/ .Vị. (i = 0, n), tức là
ỹ = Pn (T) w / (x)
gọi là giá trị nội suy, còn với X ị |(7. 6 Ị thì ta gọi
y = pn (f) Rí / ( f )
Dinh lÿ 5.1. Da thûc Pn{x) bàc < n sinh ta tù bàng sô (5.1), thôa màn
dieu kiên (5.2) là du y nhât.
Chûng minh. Già sù cô hai da thûc Pn(x ), Qn{x) vôi bâc < n sinh ra tù
bàng sô (5.1), th ô a m àn die u kiên (5.2).
Xét
H(x) = Pn( x ) - Q „ l x )
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
Lagrange diïa vàd câc tinh chat cùa da thùc nhü: tô’ng hai da thùc bâc n
là da thùc bâc < n ; da thùc bâc n nhân vdi hang so a 0 cüng là da thùc
164 Chương 5. Phép nội suv và xấp xì hàm
0 7 ị __
Lj (l ) = , i,j
l , j =0
= ,7/
0,7/. (5.7)
1 ,=;)
Chon
Tỉ
1 n('i')= Y t'MVy
I-il
(5.8)
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.
f(n+l) (C)
ĩỉn(-r) = f{x) - pn(x) = V — YTU7n+,(.r). (5.10)
(ĩ/ + 1 )!
n
trong đó Ị Ễ 10,1], 'un+i'(x') ^ n \x'-xì)- Từ (5.10) ta suy ra
ii=n
=0
|/ 7 , i( .T ) l< ( ^ y Y j jh , +i W | . (5.11)
3. Đa thức nội suy Newton có mốc cách đều 165
function v=lagrangeinterp(x, ỵ, u)
% lagrangeinterp computes
% the Lagrange interpolation polynomial
Ví d ụ 5.1. Tìm đ a thức nôi suy Lagrange cùa hà m số được cho theo bảng
số sau:
i 0 1 2 3 4
2 *ỉ7
T, 1 3 4
Vi 17 17.5 76 210.5 1970
§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
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
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
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
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
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 3. Giá tri của hàm số f ( r) tai mốc r + mh đươc biểu diễn
thông qua sai phân các cấp của nó theo công thức
f (. r + rnh) = £ c ? uA kf ( x) . (5.15)
fc=o
t r o n g d ó c ; , = t ! ( ; ; _ k)l.
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). ■
- -Co = /ư
- -Ti = h ( t - ì )
- :r-k h(t - k)
Xây dưng đa thức nôi suy trong dang
Ta thấy
3. Đa thức nội suy Newton có mốc cách đều 169
pn (t 0) = p„( 0) = a 0 = ;Vo
Pn (t i ) - Pn(l) - «0 + «1-1 - y ỉ -=> (Xi - Ỉ J \ - a0 - Vỉ - y0 - A y0;
Pn (t 2) = p„(2) = «0 + « 1.2 + nọ.2 = i/o + 2 (?/i - i/o) + 2(72 = ì)2
hay
yo —2 j/i -f ị/2 _ 1 . 2
a2 =~ Ọ ~ 00 A zr/o.
Truy hồi ta được
nk - ịỹA fc//0. Ẳ - - 1 .2 ........ /ỉ. (5.18)
trong tỉó j: — To 4 - l í t .
Công thức (5.19) sinh ra từ bảng số (5.1) thỏa mãn điều kiện (5.2), xuất
p h át từ mốc X0 tiến dằn lên nên goi là đa thức nôi suy Newton tiến có
mốc cách đều. Nhìn vào bảng sai phân, ta thấy công thức (5.19) sử dung
hàng đầu cùa bảng sai phân.
khi X — x „ ta có / —0;
170 Chương 5. Phép nội suy và xấp xi hàm
(5.21)
Công thức (5.21) được goi là đa thức nội suy New ton lùi xu ất ph át từ n út
X n lùi dần lại. Nhìn vào bảng sai phân, ta thấy công thức (5.21) sù dụng
hàng cuối cùng của bảng. Như vậy hai công thức tiến (5.19) và lùi (5.21)
sử dung cùng một bảng sai phân.
3.4 Sai số
Theo công thức (5.10) ta có sai số
/ (n+,,(í) (5.22)
’ w = („ ị ì) ! w " + l ( z > -
Neu sử dụng công thức nội suy Newton tiế n (5.19) với X :í.'o + ht thì
Vây
Ạn+I., n
(5.23)
Chú ý 5.1. Các công thức nôi suy Newton tiến (5.19), lùi (5.21) sử dụn^
theo hai canh củc. tam giác cân trong bàng sai pnâ n. Do đó, khi cần tính
giá tri ỹ tai điểm T gầ n T(), ta sử du ng công thức tiến, còn khi X gần r n ta
sử d un g công thức lùi.
Chú ý 5.2. Do đăc điểm trên nên khi cần tính ỹ tai X gần giữa bảng thì
việc sử dung các công thức tiến, lùi đều đươc, nhưng bất lợi do một loat
các giá trị sai phân các cấp bị bỏ qua. Vì vây, trong trường hợp này ta
nên sử dụng công thức nội suy Lagrange. Cũng có nhữ ng công thức kh ác
sử dụng kh á tốt n hư các công thức nội suy trun g tâ m m à ỏ đây ta không
xét, có th ể xem tro ng tà i liệu tha m khảo.
Chú ý 5.3. Nếu cần tìm giá trị gần đúng ụ tại điếm X ị [xo,x„Ị (ngoài
bảng), trong trường hơp này
dt
Do điểm X — ] 48 gầ n đ ầu bản g nên ta sử đung công thứ c nội SUV New ton
tiến (5.19), vói ĩ = — = 0 .8; h = 0.1. Kết quả thu đươc
h
<Ị>(1.43) « 0.95686.
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
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.
Từ bảng số đã cho trong dang y = f(x), có 77, hãy tìm 7 tương ứng,
nghĩa là tìm X — p { ỹ ) là hàm ngược của hàm ụ — /(x). Như vậy, ta xem
(/,, / 0, n là giá tri của dối số, nói chung các giá trị ụ, không cách đều
174 Chương 5. Phép nội suy và xấp xỉ hàm
nhau. Bằng đa thức nội suy Lagrange, ta xây dưng được da thức nội suy
X ~ Qn(y).
trong đó
Át) = / +
ta suy ra
t= y - y 0 1 ^(f) = 0 (0 , (5.25)
Ayo A(/o
X —Xo
trong đó t =
/) '
Do cần tìm X ứng với ụ đã cho, ta tìm t - - ■Từ phương trình (5.25)
h
thưc hiên quá trình lăp với xấp xi đầu to = '■ ■-— và công th ức làp
Ayo
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
(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)
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.
{<pk{x)} {k = 0 , m ) (5.31)
Pm(x) = ỵ,akVk(x) ( 5 . 32 )
fc=o
là đa thức suy rộng củ a hệ h àm (5.31), trong đó CLk (k = 0, m) là hê số, còn
hệ (5.31) đươc gọi ỉà hệ cơ bản.
Xem ộ («0, « 1 , . . . , am) là hàm số của m + 1 biến độc lập (Ik {k = 0, m). Theo
lý thu yế t của hàm số nhiều biến, cực trị của hà m (5.35) đạ t được khi
dứ ___
■— =0, k = 0, m (5.36)
ơnk
178 Chương 5. Phép nội suy và xấp xỉ hàm
hay
n
1£—I !Ji - £ ak M
k=0
* ,) ỊJ ý>o(;<;i) —0
m 11
£ ỉ/i - E nkpk{:rt) > 'Pki^ i ) —h
i=1 k=0 JJ
ịpo•'PtìI«0 I lr'1" 7-4)] fll (' t' Ị^m- <A)| Q,tt = ị.V; 7^o!
Ịv?0-y?ljfl<)+ [v?l,^l]fll I •••4 [pm- p \inm — [//•7^1ị
đươ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
thì dinh thức Gram khác không và do đó hệ (5.38) tồn tại duy
nhất nghiêm, đồng thời hàm số ộ{<io.ci 1 (I,nì đat cưc tiểu tai điểm
.......
xấp xỉ hàm /(.r) (tức là /(J.) ~ g (.(•)) tốt nhất theo nghĩa trung bình
phương.
j= 0
52
i=l
[Vi - v ty i)} 2 = [y - ỹ- y\ = Ịy,.<
/]- [Ụ5.y}
Từ đó, theo (5.41) ta có công thứ c đá nh giá sai số:
= ^ - Ị [ y , y j - 5 2 ^ í^> y] j ) 2 (5.43)
n
= 0, nế u r Ỷ -s
I -pr) ps I 5 -prtyi) ps (X, )
i=l / 0. nế u r = s.
Số
M = (lv>,.vM)v'
gọi là chuẩn cùa ipr trên phân hoạch A.
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\
(íRẵưi)
1/ 2
(5.45)
fc-0 II-pkI
Từ (5.45) ta thấy khi rn tăng thì ã rn giảm. Vì vậy, khi tính ỡ rn có th ể tính
dần từng bước từ III = 0,1,2,... Giả sử tới bước thứ k = III ta thu được
ỡk < e (theo mong muốn) thì dừng quá trình tính. Còn nếu ỡk > £ thì
ta tính tiếp bước thứ m — k + 1. Khi tính đến bưóc thứ rn — s sao cho
ỡs < £ (s > k), ta dừng quá trình tính.
<
E?=1 W o + E"=1 x ĩ m + E?=1 x ĩ ” 2 + •■■+ EỈU * r+1flm “ E?=1 W ' i
trong đó
m
pm(x) - Y ^ ã kr k. (5.48
k-0
là đa thức bậc 7/ĩ.
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à
Hệ (5.50) gồm 2Ẳ; + 1 phương trình , 2 k + 1ẩn là ao, a r, Pr, I' 1. Ả. Giải hệ
trên ta thu được ã 0.7Ir. flr và do đó ta có
k
/(.r) « Tk{x) —7>0 + X^ õ r cos r.r + ftr sin r.T (5.51)
r=i
Chú ý 5.4. Nếu tâ p hợp các mốc . , e (0. 277ịcách đều nhau, khoảng cách 1
‘V
h= —II
, tức là Xị = i / í , ỉ = 1,«. Trong trường hơp này ta có
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ệ).
Hãy tìm hàm xấp xi theo nghĩa trung bình phương có dạng da thưc bậc
hai.
184 Chương 5. Phép nội suy và xấp xi hàm
Giải:
Ta tìm hàm xấp xì có dang p(x) — n0 + (iiT + o2.
r2.Theo hệ phưổng trình
ch uẩn (5.47) ta có:
Xi Vi A A A ■í,!lĩ Av>
0.56 -0.80 0.31 0.18 0.09 -0.45 -0.25
0.84 -0.97 0.71 0.59 0.50 -0.81 -0.68
1.14 -0.98 1.30 1.48 1.69 -1.12 -1.27
2.44 1.07 5.95 14.53 35.45 2.61 6.37
3.16 3.66 9.99 31.55 99.71 11.57 36.55
Từ đó ta được hệ
/(:r) «s p ( x ) — X1 —2x.
12a0 = E !i, Vi
« l E ! ! , cos2 X i - E ,=1 >Mcos xt
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
Phương pháp bình phương tối thiểu thường được dùng để tìm hàm
thưc nghiệm.
Giả sử cần tìm quan hệ hàm số y = f(x) theo quy luật đã được rút ra từ
186 Chương 5. Phép nội suy và xấp xi hàm
quá trình thực tiễn của công việc. Rằng thí nghiệm, đo đac ta thu dươc
bàng số
y¿ ~ /(-Tt) , I - TTñ.
Từ bàng số đó qui về việc đi tìm các tham số của các dang hàm đơn giàn
(đã biết), goi là các hàm số thưc nghiêm. Các dang hcàm thưc nghiêm
thườn g găp:
1. ý — a + hr ;
2. y — fì + b.r 4-O.T2;
4. y — a + b cos .T + rsin r;
Đ ăt
Y — lg y; A —lg a: lì — (dgc; X — X.
6. Tìm hàm thực nghiêm theo phương pháp bình phương tối thiểu 187
Từ (5.54) ta suy ra
Y - .1 + 13X (5.55)
là dạn g tuy ến tín h đối vói /1 và lì và hài toán được đặt lai như sau:
T'im A và lĩ, xu ất ph át từ hảng số
Cách tìm A và lì bằng phương phcáp bình phương tối thiểu chính là dang
1 đã xét trong muc 5.6. Từ đó suy ra
a= lo'4; b = -— , ( l ge w 0.43429).
lge
lgy = lga 4 b \ g x .
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 .
Giải:
Ta đá biết quy luật suất dẫn điện k của thủy tinh không thể biểu diễn
trong dạng đa thức hay lượng giác. Các điểm .1/, lgk , ) , I — 1.7, trừ
điểm đ ầu tiên, nói chung nằ m trên một đường thẳn g. Cụ thể ta có bảng
số sau:
t 14.5 30.0 64.5 74.5 86.7 94.5 98.9
\gk — -2.3979 -1.7447 -1.5376 -1.2924 -1.1367 -1.0458
Vây quan hệ có dang k = aebt hay
lgẢ,- = \ g a + bt lg e.
Đặt Y = lg k, A = lg a , B = b lg t ta được
Y = A+ Bt.
a — 10no = °
10 00335= 1.00 774,
0.01965
b = 0.04525.
\gc 0.43429
7. Bà i tâp 189
§7. BÀI TẬ P
Bài tập 5.1. T hà nh lập đa thức nội suy Lagrange từ b ảng số sau:
X 2 4 6 8 10
y = / (* ) 0 3 5 4 1
Bài tập 5.2. Tìm đa thức nội suy bậc hai của hàm y —3Xtrên [—1, lị, từ
đó suy ra giá trị gần đúng của \/3.
Bài tâp 5.3. T ính gần đú ng giá tri / (323.5) bằng đa th ức nội suy L a-
grange từ bảng số sau:
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
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
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.
Hãy xây dưng đa thức nôi suy đê tính giá trị gần dũng của hàm tai điểm
X — 6.5 ĩ.
Bài tập 5.9. Hăy xây dưng đa thức nôi suy xấp xi hàm ỊI — (■■' trên doan
[3.5; 3.7 đươc cho từ bảng số sau:
Bài tâp 5.10. Giá tri của tích phân xác suất
dl
X 0.46 0.47
0.48 0.49
ụ 0.4846555 0.4937452 0.5027498 0.5116683
Hãy tìm X sao cho y - (nội suy ngược) bằn g đa thức nội suy Lag rango .
7. tìài tập 191
Hài tập 5.11. Cho bàng giá trị của tích phân xác suất (trong bài tâp
5.10)
r I 0,15 0.46 0,47 0.48 0.49 0.50
I/ I 0.475818 0.4846555 0.4937452 0.5027498 0,5116683 0.52049999
Hài tập 5.12. Sử dụ ng các giá tri của hàm ụ lg X cho bởi
X 20 25 30
// = Ig 1.3010 1.3979 1.4771
tìm ./• sao cho y — 1.35 theo công thức nội suy Lagrange và công thức lặp.
Hài tập 5.13. Cho bảng giá tri cùa hàm Betxen Ju(x ):
bằng phương pháp bình phương tối thiểu từ các bàng số sau
X í 8 9 10 11 12 13
!) 3.1 4.9 5.3 5.8 6.1 6.1 5.9
X -3 _2 -1 10 2 3
ụ -0 .7 1 4.9 f .3 5.8 6.1 6.1 5.9
192 Chương 5. Phép nội suy và xấp xỉ hàm
Bài tập 5.15. Tìm hàm thực nghiệm dang s — nrhT bằng phương phíáp
bìn h phương tố i th iểu từ bảng số
X 0 2 4 6 8 10 12
s 1280 635 324 162 76 43 19
Bài tập 5.16. Tìm hàm thưc nghiệm dang s nxb từ bàng số
•T 1 2 3 4 5
Đ ạo h à m , t í c h p h â n và
N tai điểm nào đó. Trường hơp biết y = f ( x ) nhưng /(.r) có dang
là biểu thức khá phức tap thì việc tính y' (x) = / ' (x) cũng gặp
nh iều khó kh ăn . Củ ng có trườn g hơp ta chi có bả ng số y t = f (x t) , r — 0, n
(chẳng han, cần tìm vân tốc, gia tốc của chuyển động .s = sịt) nào đó, từ
bảng số Si = s ((,), i = 0, rì). Khi đó việc tính chính xác y' (x) là vô nghĩa.
Dể khắ c p hục khó kh ăn trên, người ta thường sừ dụ ng đa thức nội suy.
Từ bảng số
Vị = / (•t j ) > j = 0 , 7i, ( 6 . 1)
trong dó
{x - x0).(x - X i ) . . .{x - Xj-i)( x - xj +l ) . . .( x - x„) _ 7T -
Li(x) = - - • ----- -— _ . \ f - ~ t -- T-- / 3 = 0. n.
[Xj - ■'■o).(.TJ - .Ti)... (Xj - Xj. I )(Xj - Xj+i ) . . . (Xj - xn)
(6.3)
193
Chương 6. Đạo hàm, tích phàn và
194 ph ương trình ui phản
Từ đó ta suy ra
f'{x) « p'n(x) = ]T L]{x)yr (6.4)
j=0
Sai số
R'n(x) = f ' ( x ) - p ; t(x). (6.5)
Từ (6.4) ta cũng có th ể tín h các đao hàm cấp cao f"(: x),...
trong đó
lì — X í + 1 — X j V?' = 0 ,n - 1 ; X = .ru f / ư .
Vậy
trong đó í — -———.
h
Đặc biệt, khi cần tính đạo hàm tại các mốc nội suy x0. Xi . x2:
1. Tính đạo hàm 195
Từ công thức khai triển Taylor, các công thức (6.9) - (6.11) đạt số cấp
0 (/i2).
... X - Xo
voi t — —-— — .
h
1. Khi X- = £0 => t. = 0 và ta có
2. Khi X = Tj => t = 1, ta có
4. Khi X = x 3 => t — 3, ta có
Chú ý 6.1. Nếu lấy số mốc nội suy là 5 , 6 , . . theo công thức (6.7) ta có
công thức tính đao hàm đat sai số cấp cao hơn, song công thức sẽ phức
tap hơn. Tùy theo công việc cần thiết mà chon công thức thích hơp.
Chú ý 6 .2 . Công thức (6.7) x u ất p h át từ công thứ c nôi suy Newton tiến,
vì vậy nó thuân lơi khi tính đạo hàm tại điểm X > .T o, gần T (ỏ đầu bảng 0
sai phân).
Chú ý 6.3. N ếu xu ất p h á t từ công thức nội suy New ton lùi (5.21), ta
cũng có công thức tính đao hàm tương ứng. Các công thức đó sẽ thích
hơp cho việc tính đao hàm tai X < xn và gần với xn (cuối bảng sai phân).
Chủ ý 6.4. Khi cần tính đao hàm tai điểm X gần X ị (giữa b ản g sai phàn),
ta xét hai khả năng. Với X > X i , ta sử dung công thức (6.7) và xem X , là
T o - Còn nếu X < X i , ta có thể sử dung công thức tính theo chú ý 6.3 và
xem Xị là xn.
Ví dụ 6.1. Tính gần đú ng / (55) của hàm f (x) — lgx cho từ bảng số
X 50 55 60 65
f(x) = \gx 1.6990 1.7401 1.7782 1.8129
Giải
0 dày có bốn moc nội suy là Xo = 50 -» Xị — 65; h. — 5. n 3 và ta cần
tính /' (t ị ) với X\ = 55. Theo công thức (6.14) ta có
Bằng cách tín h trực tiếp ta được / '( x) — (lg x)' = ———, suy ra
§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
Tuy nhiên trong nhiều trường hợp có F(x) là nguyên hàm của hàm f(x)
không phải là hàm số sơ cấp hoặc F(x) có biểu thức quá phức tạp. Khi
đó giá trị của tích ph ân / chỉ tìm dươc là số gần đ úng. T rong trườ ng hợp
hàm số cho trong dạng bảng số thì khái niệm nguyên hàm không còn ý
nghĩa gì nữa.
Bài toán tìm g iá trị củ a tích ph ân xác đinh trong toán học tính toán nghĩa
là giá trị I đó được tìm thông qua giá tri của hàm số f(x) dưới dấu tích
phân tai m ột số điểm th uộc đoạn [rt, b]. Phương pháp đơn giản nhất để
giải quyết bài toán trên là dựa vào ý nghĩa hình học của tích phân xác
đinh và từ bả ng số í/, —/ ( X ị ) , i = 0,rí, ta xây dưng đa thức nội suy <p{x).
Từ đó ta có
6 6
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ế.
Xo - Xi
-yo + - — — - 2 /1
X-l - -To
Từ đó suy ra
/ = Ị f( x ) d x « ĩ i Ẽ - ^ - y o + ^ - z p - V i ] d x
J J X o - X\ x x - Xo
a lo
y° ( . .—X\)
(xo . 4-
, 2 /1
(xi - X o)
2 (x 0 - X i) 2 (xi - X o)
1
2 (3;1 - ®o) (,7o 4- 2/1 )!
hay
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ì
Khi đó ta có
\R\ = \ l - r \ < ^ ( b - a f . (6.20)
Từ công thức (6.20) ta thấy, nếu h —b — n lớn thì sai số sẽ lỏn, nên
để đươc sai số bé theo mong muốn thì lì phải bé. Để khắc phuc điề u đó,
người ta dưa vào tính chất khả tổng của tích phân xác định, chia đoan
Ịa, b} t h à n h n p h ầ n đều n h au có khoảng cách là h — ----- — bỏi các điểm
chia
a = X 0 < X i < ■• ■ < x n = b, h = a.'j+i — Xi, i = 0, n — 1.
Vậy
6 x„
I = Ị f(x)d x = j f{x)dx
á Xo
Á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
hay
/ w /* — 2 l(y° + Vn) + 2 (ỉ /l + ỉ /2 + -------T ỉ / n - 1 )] , ( 6 . 22 )
Ch ương 6. Đao hàm, tích phàn và
200 ph ương trìn h vi phân
trong đó
M2 = max |/"(. ỉ;)| ; h =
Ạh M 2 (h - n )3
(b —a)h 2 < E,
12 12 n2
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
thì
b ,
ỉ —J f ( x) dx ~ /* = — [(.Vo + Vn) + 2 ( yi + ụ2 + • • • + ,Ợn- i)] • (6.25)
a
Ị dx
Ví dụ 6.2. Tính theo công thức (6.25) tích p hâ n ỉ = Ị [ — sao cho đat
{h - n )I2 M 2 M2{b - a )3
Để |/ - /*| < < 0.002 thì cần chon n +
12 ~n> 12 X 0.002
- / - ^ = 0.69377 ± 0.002.
J 1 + X
0
2 .2 .5 . C h ư ơ n g t r ì n h M a t L ab
2 .3 .1 . T r ư ò n g h ớ p 3 m ố c n ộ i s u y
Từ bảng số trên, áp dụng công thức nội suy Nevvton tiến vói X Xo + /í/
ta th u được
f ( x ) « p 2 [ x ) = p 2 (x o + h t ) = p 2 (t)
Ayo , A2í/o
—yo + -yp-/ 3— 21 <(í - !)■ (6.26)
Từ x — . x o 4- /lí ta có
b *2 2 2
ã Xo 0
= - £ )]
Mặt khác, do
Ay 0 - ĩ/1 - yo, A 2y0 = yo - 2 yi + y2
nên thay vào (6.27) ta thu được
b x ĩ
ỉ = Ị f { x ) d x = J f { x ) d x w - (yo + 4yi + y2) =: /*. (6.28)
a ¿0
Công thức (6.28) được goi là công thức Simp son (h ình 6 . 2 ).
Sai số
2. Tính gần đúng tích phân xác định 203
VỚI giả thiết hàm số f(x) là hên tục, có đạo hàm liên tuc đến cấp 4 va
/ (,,)(.r)| < M.I V.T € [a. b] thì sai số đươc đánh giá theo công thức
I (6-29)
/(*)
/(«)
P2(x)
/(&)
o & (1 -Ị- b 1) X
2
H ình 6.2
2.3.2. Côn g thứ c Sim pso n tổn g quát
Để sai số đat độ chính xác cao, tưong tự như đối vói công thức hình
thang, ta cùng chia đoạn [a, b} thành ii đoan b ằng n ha u (vì mỗi đoạn cần
2
Vi = / (X ị) , i = 0, 2n . (6.30)
Khi đó ta có
~ ị(y0 + 4?/i + y2) + (ịẹ/2 + 4ị/3 + yì) + ----- h (ĩ/2n-2 + 4t/2„_l + ỉ/2n)]
Chương 6. Đạo hàm, tích f)hãn và
204 phương trìn h vi ph ân
hay
trong đó
¥4 = max \ r \ x ) ị , h=
iẽ[a>]r ' ln
Từ công thức (6.32) ta thấy, để sai số tuyệt đối Iĩ - /* I < £ thì số mốc cần
chon
lf> X 180 X
n — + 1
Mị(b —(i)5
} dx
Ví du 6.3. Áp dung tính gần đúng ỉ — - ■= the o công th ức Sim pson
./ 1 + X
-
0
tổn g q u á t vói (6.31) n = 5.
Giải:
Do n — 5 nên suy ra h = ~ = 0.1. Tiếp theo, tính
1
Vi = / (x,) = 7 - 7 - 3 , X'i = í/i. / = 0 , 10.
1 + X,
Vây
arctan T - = 0.78539816.
0 4
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).
3.1 Mở đầu
Trong toán ứng dụng, ta thường gặp rất nhiều bài toan trong dạng
phương trìn h vi p h ân và cần phải tìm nghiệm của phương trìn h đó. Ta
dã biết trong giáo trình phương trình vi phân, chỉ tìm được nghiệm giải
Chưitng 6. Đ aohàm, tích phân và
206 phươ ng trình vi p h à n
tích của lớp phương trình rất hẹp; nói chung không có khả nàng. Vì vậy
buộc phải tìm nghiệ m của chúng trong dang gần đúng.
Trong phần này ta giỏi thiêu môt số thuât toán tìm nghiêm gần đúng
thường đươc dùng trong kỹ thuât đối với bài toán Cauchy, còn đối với
dạng phương trình đạo hàm riêng sẽ đươc nghiên cứu trong giáo trình
khác.
Thuật toán: Giả sử biết nghiệm y =* y(x) tại điểm X € [.r0. .Yj, ta tìm
nghiệm y tại điểm X + h e [xo,x \ là y - y{x + h) với /í > 0 đươc goi là bước
để có được nghiệm tại điểm X + h .
,‘ỉ. Giải gần đúng phương trình ui phân (bài toán Cauchy) 207
Tích phân hai vế của phương trình (6.35) trê n đoạn ị.T, X + /?.] ta có
từ đó suy ra
h h
Ị ý(x + z)dx = J [ý ( x ) + ý'{x)z + ũ { z 2)]dz
, 2x
y = y --------
y
y{ 0) =1
bằng phương pháp E u ler lấy với h = 0.2 trên đoan [0, 1 Ị.
Giải:
2/0 = 1.
ys = 2/(1) = 1.8237.
Vo = 1.
Vi = 1 1832,
ỹ 2 = 1.3416,
v3 = 1 4832,
Va = 1.6124,
ỹ 5 = 1-7320.
Sai số quá lớn là do quá trình tích lũy sai số: từ !Ji gặp sai số, từ đó tính
tiếp 1/2, - - -
3. Giải gần đúng phương trình vi phân (bài toán Cauchy) 209
C h ư ơ n g t r ìn h M a t LAB
function [x,ỵ]=euler(fun,xO,xn,ỵO,h)
% T his fun tion illu st ra te s the euler's m ethod fo r t h e
% Í IV P : d y / d x = f u n ( x , y ) ; x O <= x < = x n ; y ( xO ) =y O ;
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
= ậ [ /( * + h, y{ x + h) ) + f { x , y( x) ) \ + 0 { h 3 ) .
Chương 6. Đạo hàm, tích phân uà
210 phương trình vì phân
Thay vào (6.35) ta có
Bỏ qua o (/í3), ta được xấp xỉ. Sau đó thay xấp xi bởi dấu bằng, ta thu
được
y{x + /ỉ.) = y{x) + ~ ị/(.T + /í, y(.r + /ỉ)) + /(.T, y(.r))]. (6.40)
Công thức (6.40) được goi là công thức E ule r cải tiến , đ ạt sai số một bước
1à O (f t3).
Theo công thức (6.40) ta thấy, nếu biết y — y(x) khi tính y y(x + lì) thì
phải giả i phương trìn h phi tuyến, có th ể áp dung công th ức lăp. Để th u â n
lợi cho việc tính toán, ta tìm cách biến đổi (6.40) sao cho sai số vẫn đat
cấp o (/í3).
Thay y{x + h) trong vế phải của (6.40) bởi đẳng thức (6.37)
y{x + h) = y( x) + h f (x,y{x)) + 0 { h 2 )
hay
y(x + h) —y* = 0{h2), (6.41)
trong đó
y ’ - y{x) + h f { x , y ( x ) ) .
y{x + h) = y{x) + ^ [ f ( x , y { x ) ) + f ( x + h , i / ) \ ,
y* = y(x) + h f (z, y{x) ). (6.42)
3. Giải gần dũng phương trình vi phân (bài toán Cauchy) 211
Công thức này đạt sai số môt bưóc là 0(/;3). Công thức lặp cu thể của
(6.42) như sau:
y ( - T o ) = Vo,
v\ — Vo + h f (x0.Vo) •
V (Ti) = y{xo + h) ~ Ỉ/1 = yo + I ( / (t 0,yo) + / (.To+ h. y{))
Tổng quá t
Í ' _ Ty
í : ị
y( 0) = 1
theo công thức Euler cải tiến lấy /ỉ —0.1 tính trên đoan (0; 0.5).
Giải:
Nghiệ m chính xác —
ỹ = e ỉl4 . Kêt
i. quả tính toán đươc ghi tro ng b ảng sau:
l Ti Vi Vi
0 0 1 1
1 0.1 1.0025 1.0025
2 0.2 1.0100 1.0100
3 0.3 1.0227 1.0227
4 0.4 1.0408 1.0408
5 0.5 1.0645 1.0645
N hận thấy các kết quả trù n g nhau tới 4 số lẻ sau dấu
Chương 6. Đao hàm, tích phân và
212 phương trìn h vi p hân
C h ư ở n g tr ì n h M a t L ab
function [x,y]=modified_euler(fun,xO,xn,ỵO,h)
% This function illustrates the modified euler method for
% the IVP: dy/dx=fun(x,y); y(xO)=yO;
if nargin<4
h= 0 .0 1 ;
end
x= (xO:h :xn)';
n=length(x) ;
y=ỵ 0 *ones (n,1 );
for i=2 :n
z=y (-Ì-1 -)+h*feval (fun,X(i- 1 ) ,y ti— X) ) ;
y(i)=y(i-l) + ...
h * (feval (fun,X (i- 1 ),y (i- 1 ))+feval (fun, X(i-1)+h, z ) ) /2;
en d
plot(x,y);
end
Chit ý 6.5. Công thức Euler (6.39) và Euler cải tiến (6.43) đều có ưu
điểm là tính toán th u ậ n lơi, dễ lập trìn h, song có nhược diêm chính là sai
số một bước của ch úng lần lượ t là o (/ỉ2) và o (/(.'). Giả sử từ Ị) (.i n) i/o là
đú ng th ì việc tí n h </! — y (x + h) đã gặp sai số tương ứng, không còn là
0
đúng nữa. Dựa trên gần đú ng này để đi tìm gầ n đ úng tiếp theo dẫn đến
quá trình tính tới y, = y(x + ih) vói Xị xa với Xo sẽ có thể dẫn đến hiện
0
tương "sai một ly đi một dặm” (hình 6.3). Vì vậy các công thức trên chi
thích hợp vói các điểm Tị gần với x0.
3. Giải gân đúng phương trình vi phân (hài toán Cauchy) 213
3 .3 .3 . C ô n g t h ứ c d ạ n g R u n g e -K u t t a
Để đạt được độ chính xác cao hơn mà công thức tính cũng không quá
phức tạp, R unge-K utta đã đưa ra công thức tìm nghiệ m số của bài toán
Cauchy cấp môt (6.35) như sau: Biết y{x), tìm y(x + h) theo công thức
trong đó
ki(h) = hf(x,y{x))
được xác đinh sao cho (6.44) thỏa mãn, đồng thời khai triển Taylor
U2 um km+l
v(x+h) = y ( x ) + h ý ( x ) + ^ - ụ " ( x ) + - • ■ + ^ y {m\x) + ’ .,s/(m+t)(c-) (6.46)
2 ! m! ( m + 1 )!
Chương 6 . Đao hàm, tích phán và
214 phương tr ìn h vi phân
trùng nhau tới cấp cao nhất của lĩ mà ta mong muốn. Các chi số 7
1,2,3, ... goi là bậc của công thức da ng R unge-K utta.
Áp dung công thức khai triển Taylor theo lũy thừa của li và so sánh
(6.44), (6.46), ta suy ra đươc các công thức sau, thường đưoc sử dung
trong kỹ thuât:
Pỉ + P2 =1
.1
' « 2p 2 = ị
ftlP -2 =
b2{h) = h f ( x + ^ , y {x ) + ^ Y ^ ) (6.48)
y{ x + h) = y(x) + k 2 {lĩ)
h(h) = hf{x,y{x))
thì ta có
M >0 = hf(x,y(x))
k2(h) = hf( x + ^,y( x) + ! j) (6.50)
k3(h) = h f (x + h, y(x ) - kị + 2 k2) (6.51)
y(x + h) = y(x) + ^ (ki + 4 Ả'2 + k3)
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
if nargin<4
h=0.01;
end
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
ý = X+ y
y( 0 ) = 1
■i X, y,
0 0 1 1
Để 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.
ý = f(x,y,z), y { x 0) = o
z' = g[x,y,z), z ( z o) = 0 (6.53)
X € [.To,To + X]
hoặc tìm y — y(x) là nghiệm cùa bài toán Cauchy cấp hai
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 (-To) = ru
z = f { x , y . z ). z ( x 0) = p (6.55)
Chương 6. Đạo hàm, tích phân và
218 ph ương trìn h vi phán
z{x + h) = z(x) + h f ( x , y ( x ) , z { x ) ) .
Sai số môt bước là o (ti1). Để lâp công thức lăp cho trường hơp này, ta
chia đoạn [xo, Xo + A'Ị t h à n h n đoạn bằng nhau với bước là h — —- bởi cúc
n
,+1 =
IJ Vi + hf(xt.yt,Zi);
Zi+ 1 = Zị + h f (xi.yi,Zi), 7 = 0,1,2,... (6.56)
trong đó
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—,
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 ) ) ;
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
V =2 . y(0) = 0
<
z = —X
—X z — y. z(0 ) = 1
/ Xị Vi Zị
0 0 0 1
1 0.1 0.1
0.1 0.9908
2 0.2 0 .1 9 7 9 0 .9 6 6 1
3 0 .3 0.2933 0.9321
4 0 .4 0 .3 8 3 4 0 .8 8 9 2
5 0 .5 0 .4 6 9 9 0 .8 3 7 9
Bài tập 6.2. Tính gần đúng đạo hàm của hàm ụ — log X ta i điểm
điể m ./ 1
từ b ảng số sau:
5. Bài tập 221
22 1
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ằ
b ằ n g công thức SimDSon tổng auát sao cho đạt sai số 0.001.
r y54 3.5;r2
3.5 ;r2 + 5.1x
5. 1x —4.8
Bài tâp 6.5. Cho I — ---------- — --------- dx.
J4.2 X—0.4
—0.4
1. Tín h gần đúng tích ph ân 1 theo côn
côngg thức hìn h th an g tổn g qu át vớ
với
bưóc
bư óc lĩ = 0.1;
2. Nếu sử dụng công thức Simpson tổng quát thì phải chia đoạn
[4.2; 5.4] thành bao nhiêu đoạn nhò bằng nhau để đạt được sai số
< 10 ~ 3?
Bài tập 6.6. Tìm nghiệm gần đúng của bài toán Cauchy
t/(x) —ụ —x\ ụ{0)
{0) = 1 trê n đo an 0: 0.
0.5] theo công thứ c E u ler lấy
lấy /í —0.1.
Bài tập 6.7. Tìm nghiêm gần đúng của các bài toán Cauchy sau:
, (x + y) 1 - xy)
xy )
2/ ( 0 ) = 1;
J x + 2y
2. ý = y - — , y(0) = 1;
y
3. ý = y2 + - ,
X y{2) = 4;
4. ý = a:2 + y2,
y 2, y{ 0 ) = - 1 ;
theo các công thức Euler, Euler cải tiến và công thức R-K4 trên đoan
[0; 0.5] với h = 0.1.
Chương 6. Đạo hàm, tích phân và
222 ph
p h ư ơ n g tr ìn h vi p h â n
Bài tập 6.8. Tìm nghiêm gần đúng của các bài toán sau trên đoạn
[0; 0.5] lấy với h — 0.1 bằng công thức R-K4.
/
y = X + 22, 2/(0)
2/(0) = 1
1.
= xy,
x y, 2 (0 ) = -1;
= y + z,
z, y{ 0) = 1
~--y + z, 2 (0 ) = - l
TÀI LIÊU THAM KHẢO
[1]
[1] Phạm
Ph ạm Kỳ Anh, Phan
Ph an Vãn
Vãn Hạp, Hoàng
Hoàng Đức Nguyê
Ng uyên,
n, Lê Đình hị nh,, Cơ sở
Đì nh T hịnh
phương
phươ ng pháp
ph áp tính tập I,I, II, NXB
NXB Đại học Quốc gia Hà Nội, 1996.
[2]
[2] Ta Vãn Đĩnh, Trọ ng Vinh, Phương
Đĩnh , Lê Trọng Phương ph
pháp
áp tính,
tín h, NXB Đai hoc và Trung
hoc chuyên nghiệp, 1983.
[3]
[3] Phan Văn Hạp, Lê Đình Thịnh, Phương
Ph an Văn Phương pháp
phá p tính và các thuật
thu ật toán, NXB
Giáo dục, 2001
[4]
[4] P han các tác giả khác, Phương pháp
ha n Văn Hạp và các phá p tính
tín h tập I, II, NXB
NXB Đại
học và Trung học chuyên nghiệp, 1970 - 1971.
[5] Tro ng Vinh, Giáo trình Giải tích số, NXB Khoa học và Kỹ thuật, 2007.
[5] Lê Trong
[6] Dương Thuỳ Vỹ, Giáo trình Phương pháp tinh, NXB Khoa học và Kỹ
thuât, 2011.
[7] Granville Sewell, The numerical solution of ordinary and partial differ-
ential equations, Welley interscience, 2005.
[8] Hanselman L. and Littlefield B., Mastering
Master ing MatLab
Ma tLab 6, Prentice Hall,
2001 .
[9]
[9] Higham
Hig ham D. J. , MatLab
D. J., MatL ab guid
g uide,
e, SIAM, 2000.
2233
22