
Ph¸t triÓn c«ng cô tin häc trî gióp cho gi¶ng d¹y, nghiªn cøu vµ øng
dông To¸n häc 17
MATLAB VỚI MÔN HỌC CÁC PHƯƠNG PHÁP SỐ
Đặng Quang Á
Viện Công nghệ thông tin
Viện khoa học và công nghệ Việt nam
Trong báo cáo này chúng tôi đề cập đến việc sử dụng MATLAB trong việc giảng
dạy môn Các phương pháp số và giới thiệu về một thư viện các chương trình/hàm mã
nguồn phục vụ cho môn học đó.
1. Giới thiệu sơ lược về MATLAB
MATLAB – phần mềm nổi tiếng của công ty MathWorks, là một ngôn ngữ hiệu
năng cao cho tính toán k ỹ thu ậ t như được viết trong logo của phần mềm này. Nó tích
hợp tính toán, hiện thị và lập trình trong một môi trường dễ sử dụng. Các ứng dụng tiêu
biểu của MATLAB bao gồm:
−Hỗ trợ toán học và tính toán
−Phát triển thuật toán
−Mô hình, mô phỏng
−Phân tích, khảo sát và hiển thị số liệu
−Đồ họa khoa học và kỹ thuật
−Phát triển ứng dụng với các giao diện đồ họa.
Tên của phần mềm MATLAB bắt nguồn từ thuật ngữ “Matrix Laboratory”. Đầu
tiên nó được viết bằng FORTRAN để cung cấp truy nhập dễ dàng tới phần mềm ma
trận được phát triển bởi các dự án LINPACK và EISPACK. Sau đó nó được viết bằng
ngôn ngữ C trên cơ sở các thư viện nêu trên và phát triển thêm nhiều lĩnh vực của tính
toán khoa học và các ứng dụng kỹ thuật.
Ngoài MATLAB cơ bản với các khả năng rất phong phú sẽ được đề cập sau,
phần mềm MATLAB còn được trang bị thêm các ToolBox – các gói chương trình (thư
viện) cho các lĩnh vực ứng dụng rất đa dạng như xử lý tín hiệu, nhận dạng hệ thống, xử
lý ảnh, mạng nơ ron, logic mờ, tài chính, tối ưu hóa, phương trình đạo hàm riêng, sinh tin
học,... Đây là các tập hợp mã nguồn viết bằng chính MATLAB dựa theo các thuật toán
mới, hữu hiệu mà người dùng có thể chỉnh sửa hoặc bổ sung thêm các hàm mới.

Ph¸t triÓn c«ng cô tin häc trî gióp cho gi¶ng d¹y, nghiªn cøu vµ øng
dông To¸n häc 18
MATLAB đ ượ c thi ế t k ế đ ể gi ả i các bài toán b ằ ng s ố chứ không nhằm mục đích
chính là tính toán ký hiệu như MATHEMATICA và MAPLE. Tuy nhiên, trong MATLAB
cũng có thể tính toán ký hiệu được nhờ các hàm trong Symbolic Math ToolBox.
Một số đặc trưng chính của MATLAB:
−MATLAB là ngôn ngữ thông dịch. Vì thế nó có thể làm việc ở hai chế độ: tương
tác và lập trình. Trong chế độ tương tác MATLAB thực hiện từng lệnh được gõ
trong cửa sổ lệnh sau dấu nhắc lệnh và kết quả tính toán được hiện ngay trong
cửa sổ này, còn đồ thị được hiện trong một cửa sổ khác. Lệnh tương tác có thể
là đơn giản, thí dụ tính sin(1.5) hoặc vẽ fplot('sin(1 ./ x)', [0.01 0.1]), có thể là cấu
trúc điều kiện, thí dụ if x<=0; y=0; else; y=1; end hoặc các cấu trúc lặp xác định
và không xác định. Trong chế độ lập trình một tập lệnh được soạn thảo và ghi
thành một têp đuôi .m (m-file). Các hàm cũng được tổ chức thành các m-file. Một
chương trình có thể gồm nhiều m-file. Để chạy chương trình chỉ cần gõ tên m-file
chính trong cửa sổ lệnh rồi Enter.
−Các hàm trong MATLAB cơ bản (không kể các thư viện chuyên dụng được gọi là
các ToolBox) được chia làm 2 loại: hàm trong và hàm ngoài. Các hàm trong là các
hàm được cài đặt sẵn (built-ins) tức là tồn tại dưới dạng mã nhị phân nên ta không
thể xem được mã nguồn của chúng, thí dụ các hàm sin, sqrt, log, clear, clc,.... Đây
là các hàm hay được sử dụng hoặc các hàm đòi hỏi nhiều thời gian xử lý. Các
hàm ngoài là các hàm tồn tại dưới dạng mã nguồn mà người dùng có thể tham
khảo hoặc chỉnh sửa, bổ sung khi cần thiết, thí dụ log10, ode23, fzero,...
−Phần tử dữ liệu chính của MATLAB là các ma trận (mảng) mà kích thước của
chúng không cần khai báo trước như trong các ngôn ngữ lập trình khác. Tuy nhiên,
để tăng tốc độ xử lý cần báo trước cho MATLAB biết kích thước tối đa của
mảng để phân bổ bộ nhớ bằng một lệnh gán, chẳng hạn A(20,30)=0.
Các khả năng chính của MATLAB cơ bản:
−Thực hiện các tính toán toán học bao gồm: ma trận và đại số tuyến tính, đa thức
và nội suy, phân tích số liệu và thống kê, tìm cực trị của hàm một biến hoặc nhiều
biến, tìm nghiệm của phương trình, tính gần đúng tích phân, giải phương trình vi
phân.
−Đồ họa 2 chiều và 3 chiều: MATLAB cung cấp rất nhiều các hàm đồ họa, nhờ đó
ta có thể nhanh chóng vẽ được đồ thị của hàm bất kỳ 1 biến hoặc 2 biến, vẽ
được các kiểu mặt, các contour, trường vận tốc,...Ngoài ra MATLAB còn vẽ rất

Ph¸t triÓn c«ng cô tin häc trî gióp cho gi¶ng d¹y, nghiªn cøu vµ øng
dông To¸n häc 19
tốt các đối tượng 3 chiều phức tạp như hình trụ, hình cầu, hình xuyến,..và cung
cấp khả năng xử lý ảnh và hoạt hình.
−Xây dựng giao diện người dùng: với MATLAB 7 người dùng có thể dễ dàng xây
dựng giao diện gồm các thực đơn, nút lệnh, hộp thoại, hộp chọn,...mà không cần
phải viết mã như các phiên bản trước đây.
2. MATLAB với môn học Các phương pháp số
Nhờ có các khả năng và ưu thế như đã nói ở trên MATLAB được cộng đồng hàn
lâm trên thế giới chấp nhận rộng rãi như một công cụ phục vụ cho giảng dạy, nghiên
cứu toán học và phát triển các ứng dụng kỹ thuật. Hơn 3500 trường đại học nhất là các
trường đại học kỹ thuật đã đưa MATLAB vào giảng dạy và nghiên cứu. Hiện nay đã có
trên 700 đầu sách về MATLAB dành cho giáo viên, sinh viên và các nhà chuyên môn. Trên
Internet các tài liệu có liên quan đến MATLAB rất nhiều. Nếu vào trang Web
http:\\www.google.com.vn tìm kiếm theo từ khóa “MATLAB” ta sẽ tìm thấy nhiều triệu
kết quả có liên quan, trong đó có nhiều tài liệu giới thiệu và dạy về MATLAB. Thí dụ: A
practical introduction to MATLAB taị địa chỉ
http://www.math.mtu.edu/~msgoken/ ,MATLAB summary and Tutorial tại
http://www.math.ufl.edu/help/matlab-tutorial.
Ở Việt nam, theo tôi được biết, MATLAB đã được đưa vào giảng dạy cho sinh
viên, học viên cao học hoặc giới thiệu tại một số khoa, trường đại học và cũng đã xuất
bản một số đầu sách về MATLAB dành cho sinh viên các khối khoa học và kỹ thuật. Đã
có nhiều sinh viên ngành Toán và các ngành kỹ thuật sử dụng MATLAB làm đồ án tốt
nghiệp. Tuy nhiên mức độ phổ biến của MATLAB chưa phải là cao.
Với ưu thế về tính toán số trị MATLAB rất thích hợp cho việc giảng dạy môn
học “Các phương pháp số”- môn học không thể thiếu được đối với sinh viên toán, lý,
công nghệ thông tin và các ngành kỹ thuật. Việc sử dụng MATLAB để lập trình các thuật
toán của môn học này có cái lợi là đơn giản, dễ dàng vẽ các đồ thị để hiện thị kết quả và
kiểm tra kết quả các chương trình tự viết so với kết quả của các hàm đã cài đặt sẵn vì
MATLAB cơ bản chứa đựng rất nhiều các hàm tính toán toán học như đã nói trong mục
1. Nhận thức được điều này, trong quá trình giảng dạy môn học “Các phương pháp số”
tôi đã khuyến cáo sinh viên khai thác và sử dụng MATLAB để lập trình thay cho sử dụng
ngôn ngữ truyền thống là PASCAL hoặc C. Trong giáo trình “Các phương pháp số” viết
cuối năm 2003 nhưng chưa xuất bản tôi đã minh họa các thuật toán bằng các chương
trình viết bằng MATLAB và trong phần Phụ lục tôi đã cung cấp một số kiến thức cơ

Ph¸t triÓn c«ng cô tin häc trî gióp cho gi¶ng d¹y, nghiªn cøu vµ øng
dông To¸n häc 20
bản về phần mềm này làm cơ sở ban đầu để sinh viên có thể tự học thêm về MATLAB.
Giáo trình này tôi cũng đã cho photocopy để phổ biến.
Hiện nay trên thế giới người ta đã xuất bản khá nhiều sách về các ph ươ ng pháp
s ố với các chương trình viết bằng MATLAB. Các chương trình này thường được tổ chức
thành các ToolBox và cung cấp miễn phí trên Internet. Dưới đây là danh sách một số sách
và địa chỉ các Web site nơi giới thiệu hoặc có thể tải về các ToolBox –phần mềm đồng
hành với sách:
1. Gerald Recktenwald, Numerical methods with MATLAB, Prentice Hall, 2000.
Companion Software: nmm (Numerical methods with MATLAB) ToolBox.
http://www.prenhall.com/recktenwald
2. Shoichiro Nakamura, Numerical Analysis and Graphic Visualization with MATLAB,
Prentice Hall, 1996. Companion Software: Numerical Analysis and Graphic
Visualization Toolbox. ftp://ftp.mathworks.com/pub/books/nakamura/,
http://www.mathworks.com/matlabcentral/fileexchange
3. Charles F. Van Loan, Introduction to Scientific Computing: A Matrix-Vector
Approach Using MATLAB, Prentice Hall, 1997, ftp://ftp.cs.cornell.edu/pub/cv.
4. David Kincaid & Ward Cheney,Numerical Analysis, 2e, Brooks/Cole Publishing
Company, 1996
ftp://ftp.brookscole.com/brookscole/Mathematics/Texts_by_Author/Kincaid_Cheney
/matlab.
5. John H. Mathews, Numerical Methods for Mathematics, Science, and Engineering,
2e, Prentice Hall, 1992, ftp://ftp.mathworks.com/pub/books/mathews/
6. George Lindfield & John Penny, Numerical Methods Using MATLAB,
Prentice Hall/Ellis Horwood, 1995,
7. G. J. Borse, Numerical Methods With MATLAB: A Resource for Scientists and
Engineers, PWS Publishing Company, 1997,
8. Gunnar Backstrom, Practical Mathematics Using MATLAB 5,
Studentlitteratur, 1997
9. G.W. Recktenwald Numerical Methods with MATLAB: Implementations and
Applications, Prentice Hall, 2000. www.me.pdx.edu/~gerry/nmm
10. Paolo Brandimarte, Numerical Methods in Finance: A MATLAB-Based Introduction,
Wiley, 2001.
11. Laurene V. Fausett , Applied Numerical Analysis Using Matlab, Prentice Hall, 1999.
12. Won Young Yang, Wenwu Cao, Tae-Sang Chung, John Morris, Applied Numerical
Methods Using MATLAB, Wiley, 2005.

Ph¸t triÓn c«ng cô tin häc trî gióp cho gi¶ng d¹y, nghiªn cøu vµ øng
dông To¸n häc 21
13. Howard Wilson, Louis H. Turcotte, David Halpern, Advanced Mathematics and
Mechanics Applications Using MATLAB, Third Edition, CRC Press, 1998.
Trong phần tiếp theo chúng tôi giới thiệu sơ lược về Numerical methods with
MATLAB ToolBox –nmm của Recktenwald.
3. Thư viện chương trình NMM ToolBox về các phương pháp số
NMM ToolBox là một thư viện chứa khoảng 150 chương trình/hàm viết bằng
MATLAB và 40 tập dữ liệu từ các ứng dụng rất đa dạng được tổ chức thành các thư
mục: data, eigen, errors, fit, intergrate,interact, interpolate, linalg, ode, program, rootfind
and utils. Các chương trình/hàm đều cho dưới dạng mã nguồn MATLAB nên người dùng
có thể xem để tham khảo thuật toán và tự mình chỉnh sửa theo ý muốn hoặc dựa vào đó
để viết các hàm khác. Trừ thư mục data chứa các tệp dữ liệu mẫu cho các thí dụ, thư
mục utils chứa một số hàm tiện ích và thư mục interact chứa một số hàm và thí dụ demo
về các loại đường, mặt, contour, còn các thư mục khác chứa các hàm và các thí dụ minh
họa về giá trị riêng, sai số, đường phù hợp, tích phân số, nội suy, hệ phương trình đại số
tuyến tính và phi tuyến, giải số phương trình vi phân thường, tìm nghiệm của phương
trình phi tuyến và một số chương trình tính toán khác. Dưới đây trích chọn một số hàm
trong các thư mục của NMM ToolBox thể hiện các thuật toán rất cơ bản có trong bất kỳ
giáo trình phương pháp tính nào.
Thư mục Intergrate:
−Hàm I = trapezoid(fun,a,b,npanel) và hàm I = simpson(fun,a,b,npanel) tính gần đúng
tích phân theo công thức hình thang và công thức Simpson tương ứng của hàm có
tên là fun từ a đến b với số đoạn chia đều là npanel.
−Hàm demoTrap và hàm demoSimp không tham số minh họa sử dụng hàm trapezoid
và simpson tính tích phân của hàm số x*exp(-x) trên đoạn [0,5] với các số đoạn
chia là 2 4 8 16 32 64 128 256.
−Các hàm I = plotTrapInt(fun,a,b,npanel)và plotSimpInt(fun,a,b,nsub) cho biểu diễn
đồ họa các công thức hình thang và Simpson.
−Hàm [x,w] = GLNodeWt(n) tính các nút và trọng số của công thức cầu phương
Gauss-Legendre bậc n.
−Hàm I = gaussQuad(fun,a,b,npanel,nnode) tính gần đúng tích phân theo công thức
Gauss-Legendre với số nút trên mỗi đoạn con là nnode.
−Hàm demoGauss minh họa tính tích phân của hàm số x*exp(-x) trên đoạn [0,5]
bằng công thức Gauss-Legendre.

