Nghiên cứu về Matlab và ứng dụng vào bài toán tài chính

SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 1 /116 MỞ ĐẦU ^ ] Ngày nay, kinh tế nước ta đã phát triển đáng kể. Các cơng ty, ngân hàng ra đời ngày càng nhiều, thị trường chứng khốn đang dần sơi động,…Thêm vào đĩ, dân số tăng nhanh làm cho vấn đề quản lý tài chính trở nên cần thiết và quan trọng. Từ đĩ, yêu cầu phải cĩ cơng cụ giúp giải quyết các bài tốn trong tài chính thật hiệu quả và đơn giản. Một trong những cơng cụ rất mạnh đĩ là Matlab (Matrix

pdf116 trang | Chia sẻ: huyen82 | Lượt xem: 2964 | Lượt tải: 5download
Tóm tắt tài liệu Nghiên cứu về Matlab và ứng dụng vào bài toán tài chính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Laboratory). Để thấy được khả năng ứng dụng của MatLab vào lĩnh vực tài chính, luận văn sẽ trình bày tổng quan về Matlab (đặc biệt là hộp cơng cụ tài chính), giới thiệu sơ lược các bài tốn thơng dụng trong tài chính và thiết kế hệ thống giải một số bài tốn tài chính thơng qua Matlab. Nhằm tạo sự giao tiếp thân thiện và thể hiện tính năng giao tiếp của MatLab với các ngơn ngữ khác, hệ thống được thiết kế giao diện, xử lý trên nền tảng .NET (cụ thể là ngơn ngữ C#) và sử dụng MatLab để tính tốn. Khả năng tích hợp MatLab với .NET chỉ được hỗ trợ từ MatLab version 7.2 trở lên (Hộp cơng cụ Matlab Builder for .NET). Nội dung cụ thể: ƒ Giới thiệu các thành phần cơ bản của MabLab bao gồm: - Khái niệm về MatLab - Tính tốn trên ma trận - Đồ họa hai chiều - Khơng gian 3D - Lập trình trong MatLab - Tạo giao diện người sử dụng đồ họa (GUI). ƒ Giới thiệu một số bài tốn cơ bản trong tài chính bao gồm - Bài tốn cơ bản trong hệ thống lãi đơn - Bài tốn cơ bản trong hệ thống lãi kép - Bài tốn về các khoản tiền thanh tốn theo chu kỳ - Bài tốn tính chỉ số - Bài tốn về dự đốn SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 2 /116 ƒ Giới thiệu các hàm về tài chính trong Matlab - Các hàm về tác vụ tài chính phổ biến - Các hàm trong hệ thống lãi đơn - Các hàm về các khoản thanh tốn theo chu kỳ - Các hàm về tác vụ phổ biến của đối tượng FTS1 - Các hàm về dự báo theo chuỗi thời gian ƒ Thiết kế hệ thống giải các bài tốn tài chính thơng qua Matlab. - Giới thiệu hệ thống - Phân tích nghiệp vụ - Thiết kế dữ liệu - Giao diện - Thử nghiệm Bố cục luận văn bao gồm 4 chương: ƒ Chương 1 : Giới thiệu tổng quan về Matlab. ƒ Chương 2 : Giới thiệu một số bài tốn trong tài chính. ƒ Chương 3 : Các hàm về tài chính trong Matlab. ƒ Chương 4: Thiết kế hệ thống giải các bài tốn tài chính thơng qua Matlab. 1 Financial Time Series: Chuỗi thời gian tài chính SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 3 /116 Chương 1 GIỚI THIỆU TỔNG QUAN VỀ MATLAB 1.1 Matlab là gì? (Xem chi tiết trong [1] [2], TLTK2 ) Matlab (Matrix Laboratory) là phần mềm của tập đồn The Math Works, Inc. of Natick, Massachusetts – Mỹ, được phân chia thành các lĩnh vực ứng dụng dựa vào các hộp cơng cụ (toolbox), đặc biệt là dùng trong tính tốn kỹ thuật. Matlab kết hợp việc tính tốn, hiển thị và lập trình trong một mơi trường dễ sử dụng. Ở đĩ, các vấn đề và giải pháp được trình bày bằng những ký hiệu tốn học quen thuộc. Nhà phân tích số học Cleve Moler đã xây dựng phiên bản đầu tiên của Matlab vào những năm 1970 bằng FORTRAN. Sau đĩ, Matlab được viết bằng ngơn ngữ C trên cơ sở các thư viện đã cĩ và phát triển thêm nhiều lĩnh vực ứng dụng khác. Nĩ đưa ra nhiều tác vụ thực tế được kết hợp với việc giải quyết các vấn đề số học. Điều này làm giảm bớt thời gian suy nghĩ và khuyến khích các thử nghiệm. Matlab cung cấp các lệnh mạnh và hiệu quả, giúp hiện thực những tác vụ phức tạp chỉ bằng một hoặc hai dịng lệnh. Ngồi những hàm được Matlab cung cấp sẵn, ta cũng cĩ thể tạo ra hàm mới để phục vụ cho các ứng dụng riêng của mình. Các ứng dụng tiêu biểu bao gồm: ƒ Hỗ trợ tốn học và tính tốn.. ƒ Phát triển thuật tốn. ƒ Yêu cầu cung cấp dữ liệu. ƒ Mơ hình, mơ phỏng và lấy mẫu. ƒ Phân tích, khảo sát và hiển thị dữ liệu. ƒ Khoa học và kỹ thuật đồ họa. ƒ Phát triển ứng dụng với giao diện người dùng đồ họa (GUI). 2 Tài Liệu Tham Khảo SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 4 /116 1.2 Các chức năng của Matlab: 1.2.1 Tính tốn trên ma trận: 1.2.1.1 Tạo ma trận: Để tạo ma trận A kích thước nxm, từ dịng lệnh (command line) của Matlab ta nhập như sau: >> A = [A11 A12… A1m; A21 A22… A2m;……; An1 An2… Anm]; Cĩ thể xuống dịng hoặc dùng dấu “;” để ngăn cách các hàng của ma trận. Các cột cách nhau bởi dấu “,” hoặc khoảng trắng. Nếu một hàng trong ma trận cĩ quá nhiều phần tử ta dùng dấu “…” và viết các phần tử cịn lại ở dịng kế tiếp. Ví dụ: >>A = [2 4 5; 3 1 9; 7 2 6] Kết quả: A = 627 913 542 Ngồi nhập trực tiếp từ dịng lệnh như trên, ta cĩ thể tạo ma trận bằng cách đọc từ một file dữ liệu đã cĩ (trong Matlab file này cĩ phần mở rộng là .mat, .dat,…), dùng tốn tử “:”3 hoặc nhập từ bàn phím (dùng lệnh input). Cách tạo một số ma trận đặc biệt: Cú pháp Ý nghĩa M = [] Tạo ma trận rỗng M = zeros(n,m) Ma trận kích thước nxm với tồn các phần tử là 0 M = ones(n,m) Ma trận kích thước nxm với tồn các phần tử là 1 M = eye(n) Ma trận đường chéo (ma trận vuơng cấp n) M = eye(n,m) Ma trận đường chéo mở rộng (kích thước nxm) M = magic(n) Ma trận ma phương bậc n M = rand(n,m) Ma trận kích thước nxm với các số ngẫu nhiên Bảng 1. 1: Một số ma trận đặc biệt trong Matlab 1.2.1.2 Xử lý ma trận: ™ Các phép tốn cơ bản: Trong Matlab, ký hiệu A’ là ma trận chuyển vị của ma trận A. Các ma trận được cộng , trừ và nhân bằng các ký hiệu tốn học thơng thường là +, –, * và /. Đặc biệt Matlab cịn cung cấp phép chia phải (dùng trong giải phương trình tuyến tính) ký hiệu là \. 3 Tốn tử “:” biểu diễn cho cả dịng hoặc cả cột của ma trận. Nếu nĩ nằm giữa 2 số nguyên thì đại diện cho tất cả các số nguyên ở giữa 2 số nguyên đĩ. (Xem chi tiết trong [3], TLTK) SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 5 /116 Ví dụ : >>A = [5 7 0 ; 2 1 8] ; >>B = [6 1 4 ; 5 3 1] ; >>C = A+B Kết quả : C = 947 4811 Chú ý : Với phép nhân vơ hướng hai ma trận cùng kích thước A và B phải viết là A.*B thay vì A*B (số hàng ma trận A phải bằng số cột ma trận B). ™ Lấy các giá trị của một ma trận: (Xem chi tiết trong [4], TLTK) M(i, j) : là phần tử dịng i cột j của ma trận M. M(:, j) : là cột thứ j của ma trận M. M(i:k, :) : biểu diễn các dịng từ i đến k. M(i:k, j:l) : chọn ma trận con gồm các phần tử thuộc hàng từ i đến k và từ cột j đến l. Ví dụ: cho ma trận A = 61289 3251 1742 >>B = A(2:3, 2:3) B = 128 25 1.2.1.3 Các hàm cơ bản : (Xem chi tiết trong [5], TLTK) Hàm Ý nghĩa size(A) Trả vể một vector hàng [m n] chứa kích thước của mảng A cĩ m hàng, n cột. length(A) trong đĩ A là một ma trận, sẽ trả về số lớn nhất trong hai số m, n max(A) Nếu A là vector, sẽ trả về phần tử lớn nhất trong A; Nếu A là một ma trận, sẽ trả về vector hàng chứa các phần tử lớn nhất của mỗi cột min(A) Tương tự max(A), nhưng lựa chọn phần tử bé nhất sum(A) Tính tổng các phần tử trong từng cột của ma trận A, kết quả chứa trong vector hàng. sort(A) Sắp xếp mỗi cột của ma trận A theo thứ tự giá trị tăng dần từ hàng 1 đến hàng cuối rot90(M) Quay các phần tử trong ma trận M ngược chiều kim đồng hồ một gĩc 90 độ. fliplr(M) Đảo các phần tử trong ma trận M từ trái sang phải. flipud(M) Đảo các phần tử trong ma trận M từ trên xuống dưới. reshape(M, n, m) Hàm dùng để định dạng lại số hàng và cột của ma trận. Kết quả trả về là ma trận mới với số hàng và cột SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 6 /116 khác với M, nhưng số phần tử của 2 ma trận thì bằng nhau. Với n, m là số hàng và cột tương ứng của ma trận mới. diag(M) diag(M, k) diag(V) Lấy các phần tử trên đường chéo chính của M. Ta cĩ thể chọn đường chéo dựa vào k. k = 0: chọn đường chéo chính. k<0: chọn đường chéo thứ k ở dưới đường chéo chính k>0: chọn đường chéo thứ k ở trên đường chéo chính. Tạo ma trận vuơng với đường chéo chính là vec-tơ V. triu(M) triu(M, k) Tạo ra ma trận mới cùng kích thước và chứa các phần tử thuộc và nằm phía trên đường chéo chính (hoặc thứ k) của ma trận M. Các vị trí khác bằng 0. tril(M) triu(M, k) Tạo ra ma trận mới cùng kích thước và chứa các phần tử thuộc và nằm phía dưới đường chéo chính (hoặc thứ k) của ma trận M. Các vị trí khác bằng 0. Bảng 1. 2: Các hàm cơ bản về ma trận 1.2.2 Đồ họa hai chiều trong MatLab: 1.2.2.1 Một số lệnh kiểm sốt: (Xem chi tiết trong [3], TLTK) Lệnh Ý nghĩa figure(gef) Hiển thị cửa sổ đồ họa hiện hành. whitebg(ColorSpec) Thay đổi màu nền của màn hình đồ họa. home Chuyển con trỏ đến vị trí “home”– vị trí phía trên bên trái màn hình clc Xĩa màn hình lệnh elf Xĩa cửa sổ đồ họa hiện hành hold on Giữ lại tất cả màn hình đã vẽ. Các lệnh sau sẽ thêm vào màn hình đồ họa chứ khơng xĩa màn hình cũ. hold off Bỏ chức năng “hold on”, đây là trạng thái mặc định của màng hình đồ họa. ishold Trả về 1 nếu trạng thái của hold là on, ngược lại trả về 0. subplot(m,n,p) Chia màn hình đồ họa thành ma trận mxn của những khung ảnh con với p là khung ảnh hiện hành. Những khung ảnh con được đánh số theo chiều từ phải sang trái và từ trên xuống. grid on/off Bật/tắt chế độ thêm lưới vào khung nhìn trong màn hình đồ họa. axis([xmin,xmax,ymin,ymax]) Đặt giới hạn cho trục x và y của hệ tọa độ hiện hành. Bảng 1. 3: Các lệnh kiểm sốt SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 7 /116 1.2.2.2 Các lệnh vẽ cơ bản: • Lệnh plot: vẽ đồ thị tuyến tính 2D theo cả 2 trục. Cú pháp Ý nghĩa plot(Y) Vẽ các cột của Y tương ứng với các chỉ mục của chúng nếu Y là 1 số thực. Nếu Y là số phức, thì plot(Y) tương đương plot(real(Y), imag(Y)). Trong tất cả các trường hợp khác của lệnh plot thì phần ảo được bỏ qua. plot(X1,Y1,…,Xn,Yn) Vẽ tất cả các đường được định nghĩa bởi cặp Xn, Yn. Nếu Xn hoặc Yn là ma trận, vec-tơ được vẽ là các hàng hoặc các cột của ma trận, phụ thuộc vào kích thước hàng hoặc cột của vec-tơ cĩ phù hợp với ma trận hay khơng. plot(X1,Y1, 'LineSpec',... ) Vẽ tất cả các đường được định nghĩa bởi bộ ba Xn, Yn và LineSpec. LineSpec là đặc tả xác định kiểu đường, ký hiệu và màu của đường được vẽ. (Xem danh sách các LineSpec ở phụ lục) plot(...,'PName',PValue,...) Thiết lập các thuộc tính với các giá trị thuộc tính được chỉ định cho tất cả các đối tượng đồ họa lineseries tạo ra bởi lệnh plot. plot(axes_handle,...) Vẽ trong hệ tọa độ với ơ điều khiển axes_handle thay cho hệ tọa độ hiện hành. h = plot(…) Trả về một vec-tơ cột của các ơ điều khiển cho các đối tượng đồ họa lineseries, một ơ điều khiển trên một hàng. hline = plot(‘v6’,…) Trả về các ơ điều khiển cho các đối tượng đường (line) thay cho đối tượng lineseries. Bảng 1. 4: Cú pháp lệnh plot Ví dụ: >>x = -pi:pi/10:pi; >>y = tan(sin(x)) - sin(tan(x)); >>plot(x,y,'--rs','LineWidth',2,... 'MarkerEdgeColor','k',... 'MarkerFaceColor','g',... 'MarkerSize',10) SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 8 /116 Kết quả: Hình 1. 1: Ví dụ cách dùng lệnh plot Ngồi ra, cịn một số lệnh cĩ cú pháp và ý nghĩa tương tự như lệnh plot: • Lệnh loglog: vẽ đồ thị với giá trị logarith theo cả hai trục. • Lệnh semilogx: vẽ đồ thị với giá trị logarith theo trục x và tuyến tính theo trục y. • Lệnh semilogy: vẽ đồ thị với giá trị logarith theo trục y và tuyến tính theo trục x. • Lệnh plotyy: vẽ đồ thị với nhãn y được dán bên cạnh trái và phải. 1.2.2.3 Văn bản trong màn hình đồ họa : Matlab hỗ trợ các lệnh để tạo văn bản trên màn hình đồ họa. Ta cĩ thể gán thêm các nhãn vào các trục tọa độ, hay đặt một chuỗi ký tự vào vị trí bất kỳ trên đồ thị,… Lệnh Ý nghĩa title(‘text’) Đặt tiêu đề với nội dung “text”. xlable(‘text’) Gán nhãn “text” ở giữa trục x. ylable(‘text’) Gán nhãn “text” ở giữa trục y. zlable(‘text’) Gán nhãn “text” ở giữa trục z. legend(‘s1’,’s2’,…) Thêm chuỗi s1, s2 (trong hộp – box) với vị trí của box cĩ thể được điều khiển bởi chuột. text(x,y,’txt’) Hiện chuổi ký tự txt ở vị trí x,y trên màn hình đồ họa. gtext(‘txt’) Dùng chuột click để đặt chuỗi ký tự txt tại vị trí mong muốn. Mỗi hàm gtext(…) được click 1 lần. Bảng 1. 5: Các hàm về văn bản trong màn hình đồ họa SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 9 /116 1.2.3 Khơng gian 3D (3D – Visualization): 1.2.3.1 Tạo hình ảnh 3D: Để tạo hình ảnh 3D, chúng ta cĩ những bước cơ bản sau: • Chuẩn bị dữ liệu • Chọn cửa sổ và vị trí khu vực cần vẽ bên trong cửa sổ • Gọi chức năng vẽ 3D • Đặt thuộc tính colormap và shading • Thêm thuộc tính lighting • Đặt điểm nhìn • Đặt trục giới hạn và tick marks • Set aspect ratio(Đặt tỉ lệ tương quan) • Chú thích hình ảnh với nhãn tọa độ, chú giải và chủ đề • In biểu đồ 1.2.3.2 Các hàm vẽ 3D cơ bản: Hàm Ý nghĩa plot3 (x, y, z) Tạo ra một đường 3D với các điểm tọa độ là thành phần của x, y, z (với x, y, z là 3 vector cĩ cùng độ dài) và sau đĩ tạo ra thể hiện đường 2D nằm trên màn hình. mesh(x, y, z ) Vẽ một khung lưới với màu được xác định bởi z để màu tương ứng với độ cao của bề mặt. Nếu x, y là vec-tơ thì length(x) = n và length(y)=m, [m,n] = size(z). meshc(x, y, z ) Vẽ một hình đường nét ở dưới hình lưới. surf(x ,y, z ) Tạo ra một bề mặt được tơ đậm dần với z là đối số dùng để tơ màu. Bảng 1. 6: Các hàm vẽ 3D cơ bản 1.2.3.3 Cơng cụ hiển thị bằng vùng sáng (Lighting as a Visualization Tool) ™ Khái niệm về lighting: Đây là một kỹ thuật dành cho việc tạo khả năng hiện thực khung nhìn đồ họa. Nĩ thực hiện mơ phỏng khu vực sáng tối xuất hiện trên những đối tượng dưới độ sáng tự nhiên. Để tạo hiệu ứng lighting, MatLab định nghĩa đối tượng gọi là light. MatLab áp dụng lighting cho đối tượng bề mặt và chắp vá. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 10 /116 ™ Các lệnh lighting: ƒ Camlight: Tạo hoặc di chuyển một light đối với vị trí máy quay - Headlight: tạo một light tại vị trí máy quay - Right(mặc định): tạo một light bên phải và trên xuống từ máy quay - Left: tạo một light bên trái và trên xuống từ máy quay. ƒ Lightangle: Tạo hoặc xác định vị trí một light trong tọa độ hình cầu. ƒ Light: Tạo đối tượng light. Gồm ba thuộc tính quan trọng: - Color: Thuộc tính Color xác định màu của light được định hướng từ nguồn light. Màu của một đối tượng trong khung nhìn được xác định bởi màu của đối tượng và nguồn sáng - Style: Style xác định liệu nguồn sáng là một điểm phát ra từ một vị trí xác định trong tất cả các hướng hay là một nguồn sáng được đặt tại vơ cực tỏa ra từ một vị trí xác định với những chùm sáng song song. - Position: Position xác định vị trí nguồn sáng. Trong trường hợp nguồn sáng tại vơ cực, Position định rõ hướng đến nguồn sáng. ƒ Lighting: Chọn thuật tốn lighting để tính hiệu ứng của đối tượng light trên tất cả các đối tượng surface và patch trong tọa độ hiện tại. Gồm các thuộc tính: - none: tắt thuộc tính lighting. - flat: tạo màu đồng nhất cho mỗi mặt của đối tượng. Chọn phương pháp này để xem rõ một số mặt của đối tượng. - gouraud: tính tốn màu tại đỉnh và nội suy màu thơng qua các mặt.Chọn phương pháp này để xem bề mặt cong. - phong: Nội suy đỉnh qua mỗi mặt và tính tốn hệ số phản xạ trên mỗi pixel. Chọn phương pháp này để xem bề mặt cong. phong lighting cho kết quả tốt hơn Gouraud nhưng mất nhiều thời gian để thể hiện. ƒ Material: Đặt thuộc tính hệ số phản xạ của đối tượng light ™ Các thuộc tính lighting: ƒ AmbientLightColor: Thuộc tính axes xác định màu nền của khung nhìn, khơng định hướng và ảnh hưởng đồng đều đến tất cả đối tượng. Hiệu ứng độ sáng xung quanh chỉ xuất hiện khi cĩ một đối tượng light cĩ thể thấy được trong hệ trục. ƒ AmbientStrength: Thuộc tính patch và surface xác định cường độ thành phần ánh sáng xung quanh được phản xạ từ đối tượng. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 11 /116 ƒ DiffuseStrength: Thuộc tính patch và surface xác định cường độ thành phần ánh sáng khuếch tán được phản xạ từ đối tượng. ƒ SpecularStrength: Thuộc tính patch và surface xác định cường độ thành phần ánh sáng phản chiếu được phản xạ từ đối tượng. ƒ SpecularExponent: Thuộc tính patch và surface xác định kích thước chỗ phản chiếu sáng nhất. ƒ SpecularColorReflectance: Thuộc tính patch và surface xác định mức độ ánh sáng phản xạ được tơ màu bởi đối tượng color hoặc màu nguồn sáng. ƒ FaceLighting: Thuộc tính patch và surface xác định phương pháp tính hiệu ứng ánh sáng trên những bề mặt đối tượng. Nếu chọn thuộc tính này thì khơng cĩ thuộc tính lighting flat, phong, gouraud. ƒ EdgeLighting: Thuộc tính patch và surface xác định phương pháp tính hiệu ứng ánh sáng trên các đỉnh của đối tượng. Nếu chọn thuộc tính này thì khơng cĩ thuộc tính lighting flat, phong, gouraud. ƒ BackFaceLighting: Thuộc tính patch và surface xác định cách các bề mặt được chiếu sáng khi đỉnh của chúng cách xa máy quay.Thuộc tính này hữu ích để phân biệt bề mặt bên trong và bên ngồi của một đối tượng. ƒ FaceColor: Thuộc tính patch và surface xác định màu bề mặt đối tượng. ƒ EdgeColor: Thuộc tính patch và surface xác định màu đỉnh đối tượng. ƒ VertexNormals: Thuộc tính patch và surface chứa những vectơ pháp tuyến cho mỗi đỉnh. MatLab dùng các vec-tơ đỉnh pháp tuyến để thể hiện tính tốn sự phân bố ánh sáng. MatLab tạo ra dữ liệu này tự động. ƒ NormalMode: Thuộc tính patch và surface xác định liệu MalLab cĩ tính tốn lại các vec-tơ nếu ta thay đổi dữ liệu( auto ) hoặc dùng giá trị hiện tại của thuộc tính VextexNormals(manual). Nếu ta xác định giá trị VextexNormals, MatLab đặt thuộc tính này là manual. 1.2.3.4 Độ trong suốt (Transparency): ™ Đối tượng Transparency: Tạo đối tượng đồ họa nửa trong suốt là một kỹ thuật hữu ích trong khơng gian 3D làm dễ dàng thấy được thơng tin của đối tượng trong khi nĩ hồn tồn mờ đục. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 12 /116 ™ Hàm Transparency: ƒ alpha : Đặt, truy vấn thuộc tính Transparency cho những đối tượng trong tọa độ hiện tại. - Thuộc tính FaceAlpha: flat, interp, texture, opaque(=1), clear(=0). - Thuộc tính AlphaData: x, y, z, color, rand - Thuộc tính AlphaDataMapping: scaled, direct, none. ƒ alphamap: Xác định hình thái alphamap - Parameter: default, rampup, rampdown, vup, vdown, increase, decrease, spin. ƒ alim: Đặt, truy vấn giới hạn tọa độ alpha - alimMode: auto, manual. 1.2.4 Lập trình trong Matlab: 1.2.4.1 Cấu trúc dữ liệu: Cấu trúc dữ liệu đơn giản nhất trong Matlab là ma trận – một hình chữ nhật hai chiều cĩ khả năng lưu trữ nhiều yếu tố dữ liệu trong một định dạng dễ truy cập. Các yếu tố này cĩ kiểu là số, ký tự, logic, hoặc các kiểu cấu trúc khác của Matlab. Matlab dùng ma trận để lưu trữ các số đơn hay chuỗi số tuyến tính đều rất tốt. Trong trường hợp này, kích thước lần lượt là 1-1 hoặc 1-n (với n là chiều dài của chuổi số). Matlab cũng hỗ trợ các cấu trúc dữ liệu nhiều hơn hai chiều. 1.2.4.2 Kiểu dữ liệu: Cĩ nhiều kiểu dữ liệu khác nhau được dùng trong Matlab. Cĩ thể xây dựng các ma trận và mảng của dữ liệu nguyên và thực, ký tự và chuổi, logic,…Ta cũng cĩ thể tạo ra các kiểu dữ liệu bằng cách dùng các lớp (class) của Matlab. Cĩ mười lăm kiểu dữ liệu cơ bản trong Matlab. Mỗi kiểu dữ liệu này là một dạng của ma trận hoặc mảng cĩ kích thước từ 0-0 đến mảng n chiều hoặc bất kỳ kích thước nào. Hình 1. 2 : Kiểu dữ liệu trong Matlab SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 13 /116 ™ Kiểu logic (logical): Kiểu dữ liệu logic thể hiện trạng thái true hoặc false bằng cách dùng lần lượt hai số 1 và 0. Các hàm hay tốn tử trả về true hoặc false để cho biết điều kiện được tìm thấy là đúng hay khơng. Dữ liệu logic khơng cĩ hướng, Matlab hỗ trợ các mảng giá trị logic. Một cách để tạo mảng logic là nhập giá trị true hoặc false cho mỗi phần tử của mảng. True trả về mức logic 1 và false trả về mức logic 0. Ví dụ : >>X = [true false false true false] Kết quả: X = [1 0 0 1 0] ™ Kiểu ký tự và chuỗi (char and string): Trong Matlab từ ‘string’ được nhắc đến như một mảng các ký tự Unicode. Matlab thể hiện mỗi ký tự bên trong như giá trị số tương ứng của nĩ. Tuy nhiên, nếu khơng muốn truy cập những giá trị này, thì cĩ thể dễ dàng làm việc với các ký tự như hiển thị của chúng trên màn hình. Chúng ta tạo ra dữ liệu ký tự bằng cách ghi các ký tự trong dấu nháy đơn. Ví dụ: Tạo biến “Ten” với giá trị là “Nguyen Van A” >>Ten = ‘Nguyen Van A’ Hay tạo mảng ký tự hai chiều như sau: >>Ten_Lop = [‘Nguyen Van A’; ‘Lop 02CNPM’] Cĩ thể chuyển đổi qua lại giữa hai kiểu dữ liệu numeric và string. ™ Kiểu số (numeric): Kiểu dữ liệu số trong Matlab bao gồm các số nguyên (integer) cĩ dấu và khơng dấu, single và double. Cách tạo dữ liệu kiểu số nguyên: >>tên biến = kiểu(giá trị) Ví dụ: để tạo biến x cĩ giá trị là 123 kiểu integer 16 bit ta viết: >>x = int16(123); Riêng với kiểu double khơng cần viết x = double(123.456). Ta viết x = 123.456. Vì mặc định, Matlab lưu trữ các giá trị số là kiểu double. ™ Mảng các ơ (Cell Arrays): Mảng ơ cung cấp một cơ chế lưu trữ cho các loại dữ liệu khác nhau. Cĩ thể lưu các mảng của kiểu và/hoặc kích thước khác nhau bên trong các ơ của mảng ơ. Để truy cập dữ liệu bên trong mảng các ơ, ta dùng chỉ mục ma trận tương tự như các mảng và ma trận trong Matlab. Tuy nhiên, phải dùng cặp ngoặc {} thay vì () như thơng thường. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 14 /116 Tạo mảng các ơ bằng cách sau: + Dùng các câu lệnh cĩ sẵn. + Chỉ định mảng dùng hàm “cell”, sau đĩ đưa dữ liệu vào. ™ Kiểu cấu trúc (structure): Cấu trúc là mảng Matlab với tên “data containers” được gọi là trường (feild). Các trường của một cấu trúc cĩ thể chứa bất kỳ loại dữ liệu nào. Ta cĩ thể xây dựng cấu trúc bằng hai cách : + Dùng các câu lệnh cĩ sẵn. + Dùng hàm “struct”. 1.2.4.3 Thành phần lập trình cơ bản: ™ Biến trong Matlab: ƒ Biến (variable) trong Matlab là một ký hiệu được sử dụng để chứa một giá trị. ƒ Matlab cung cấp ba kiểu biến cơ bản: biến cục bộ (local variables), biến tồn cục (global variables) và biến thường trực (persistent variables). - Biến cục bộ: Mỗi hàm trong Matlab đều cĩ biến cục bộ riêng của nĩ. Các biến được định nghĩa trong một hàm khơng lưu lại trong bộ nhớ từ một hàm gọi đến hàm kế tiếp, nếu chúng khơng được định nghĩa là global hoặc persistent. - Biến tồn cục: Khi biến trong một hàm cĩ giá trị với tất cả các hàm khác thì ta phải khai báo biến đĩ là global. Để khai báo biến global chỉ cần thêm vào trước tên biến từ khĩa “global”. Cách khai báo: global … (Các biến phải cách nhau bởi khoảng trắng, khơng dùng dấu phẩy). Một số lệnh liên quan đến biến tồn cục: ‚ clear global: xĩa bỏ các biến tồn cục. ‚ isglobal(tên_biến): hàm trả về 1 nếu tên_biến là biến tồn cục, ngược lại trả về 0. - Biến thường trực: đặc điểm của biến thường trực: ‚ Ta chỉ cĩ thể khai báo và dùng chúng bên trong các hàm M-file. ‚ Chỉ trong hàm mà biến được định nghĩa mới cĩ quyền truy cập biến đĩ. ‚ Matlab khơng xĩa chúng trong bộ nhớ khi thốt khỏi hàm. Vì vậy giá trị của nĩ được giữ lại từ một hàm gọi đến hàm kế tiếp. Cách khai báo : persistent SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 15 /116 Khi ta xĩa hàm mà biến thường trực được định nghĩa (dùng lệnh clear hoặc clear all), hoặc chỉnh sửa M-file cho hàm đĩ, thì Matlab sẽ xĩa tất cả các biến thường trực được sử dụng trong hàm. ƒ Đặt tên biến: Tên biến trong Matlab phải bắt đầu bằng một chữ cái, tiếp theo là các chữ cái, số, hay dấu gạch dưới. Matlab phân biệt chữ hoa và thường. Mặc dù tên biến cĩ thể dài tùy thích, nhưng Matlab chỉ dùng N (được trả về từ hàm namelengthmax) ký tự đầu tiên của tên biến. Vì vậy, nên đặt tên biến trong khoảng N (N = 63) ký tự để Matlab cĩ thể phân biệt các biến với nhau. ™ Các tốn tử (operators): - Matlab cung cấp các tốn tử dùng trong tính tốn số học như sau: Tốn tử Mơ tả + Cộng - Trừ .* Nhân ./ Chia phải .\ Chia trái + Số dương - Số âm : Tốn tử hai chấm .^ Lũy thừa .' Hốn vị (chuyển vị) ' Complex conjugate transpose * Nhân ma trận / Chia phải ma trận \ Chia trái ma trận ^ Lũy thừa ma trận Bảng 1. 7: Tốn tử trong tính số học - Tốn tử quan hệ: Tốn tử Mơ tả < Nhỏ hơn <= Nhỏ hơn hoặc bằng > Lớn hơn >= Lớn hơn hoặc bằng == Bằng ~= Khơng bằng Bảng 1. 8: Tốn tử quan hệ SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 16 /116 - Tốn tử logic: Tốn tử Mơ tả & Nếu hai phần tử tương ứng ở hai mảng đều cĩ giá trị là true thì trả về 1. Ngược lại trả về 0. | Nếu một trong hai phần tử tương ứng ở hai mảng cĩ giá trị là true thì trả về 1. Ngược lại trả về 0. ~ Lấy bù từng phần tử của mảng. xor Trả về một nếu hai phần tử tương ứng ở hai mảng cĩ giá trị khác nhau. Ngược lại trả về 0. Bảng 1. 9: Tốn tử logic ™ Câu lệnh điều kiện: Ž Lệnh if: đánh giá biểu thức logic và thực thi nhĩm lệnh dựa trên giá trị của biểu thức. Các lệnh if cĩ thể lồng nhau. Cú pháp: if Nhĩm lệnh end Nếu biểu thức logic đúng thì thực hiện nhĩm lệnh. Nếu sai thì nhảy đến lệnh end. Ž Lệnh else: Cú pháp: if Nhĩm lệnh 1 else Nhĩm lệnh 2 end Nếu biểu thức logic đúng thì thực thi Nhĩm lệnh 1. Ngược lại thì thực thi Nhĩm lệnh 2. Ž Lệnh elseif: Cú pháp: if Nhĩm lệnh 1 elseif Nhĩm lệnh 2 …… elseif Nhĩm lệnh n end SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 17 /116 Nếu biểu thức 1 đúng thì thực hiện Nhĩm lệnh 1. Biểu thức 2 đúng thì thực hiện nhĩm lệnh 2,…,biểu thức n đúng thì thực hiện nhĩm lệnh n. Nếu khơng cĩ biểu thức nào đúng thì khơng cĩ nhĩm lệnh nào được thi hành. Ž Lệnh switch: thực thi các nhĩm lệnh dựa trên giá trị của một biến hoặc một biểu thức. Cú pháp: switch (vơ hướng hoặc chuỗi) case Nhĩm lệnh 1 case Nhĩm lệnh 2 …. otherwise Nhĩm lệnh khác end Nếu biểu thức cĩ thì ‘Nhĩm lệnh 1’ được thực thi. Nếu biểu thức cĩ thì ‘Nhĩm lệnh 2’ được thực thi…. Nếu biểu thức cĩ giá trị khơng nằm trong các case thì ‘Nhĩm lệnh khác’ được thực thi. ™ Vịng lặp: Ž Vịng lặp for: thực thi một lệnh hoặc một nhĩm lệnh trong một số lần được xác định trước. + Cú pháp 1: for chỉ số = :: Nhĩm lệnh end Chỉ số = giá trị đầu, nếu chỉ số âm thì khơng thực hiện vịng lặp. Nếu chỉ số < giá trị đích thì thực hiện ‘Nhĩm lệnh’. Tăng chỉ số lên một giá trị = gia số (mặc định là 1). So sánh với giá trị đích nếu chưa bằng thì thực hiện ‘Nhĩm lệnh’. Ngược lại, kết thúc vịng lặp. Quá trình này lặp lại cho đến khi chỉ số = giá trị đích. + Cú pháp 2: for chỉ số = Nhĩm lệnh end SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 18 /116 là một ma trận (một vec-tơ hay một đại lượng vơ hướng), ‘Nhĩm lệnh’ được thực thi với số lần bằng số cột của ma trận biểu thức. Trong mỗi bước lặp chỉ số = giá trị của một phần tử của ma trận. Nếu biểu thức là ma trận rỗng thì vịng lặp khơng được thực thi. Ž Vịng lặp while: thực hiện một lệnh hoặc một nhĩm lệnh lặp đi lặp lại nhiều lần khi biểu thức là đúng ( bằng 1). Cú pháp: while Nhĩm lệnh end Nếu đúng thì thực hiện ‘Nhĩm lệnh’. Lặp lại cho đến khi sai thì kết thúc vịng lặp. Nếu biểu thức luơn luơn đúng thì vịng lặp sẽ lặp mãi mãi. Trong trường hợp này ta dùng Ctrl+C để thốt khỏi vịng lặp. Ž Lệnh break: kết thúc việc thực thi vịng lặp for hoặc while. Khi gặp lệnh break thì chương trình sẽ thốt khỏi vịng lặp và tiếp tục thực thi các lệnh ở bên ngồi vịng lặp. Trong vịng lặp lồng nhau, break chỉ thốt khỏi vịng lặp ở trong cùng. Ž Lệnh continue: chuyển đến lần lặp kế tiếp của cịng lặp for hoặc while. Tại vị trí lệnh continue xuất hiện, nĩ bỏ qua tất cả các lệnh phía sau nĩ trong thân vịng lặp. 1.2.4.4 Lập trình bằng M-file Khi viết một chương trình trong Matlab và lưu lại thành file, thì file đĩ được gọi là M-file (với phần mở rộng là .m). Cĩ hai loại M-file là script và function. ™ Script file Script là loại đơn giản nhất của M-file bởi vì chúng khơng cĩ đối số nhập và xuất. Nĩ được dùng cho các chuỗi tự động của các lệnh Matlab, cũng như việc tính tốn mà ta phải thực hiện lặp đi lặp lại từ dịng lệnh (command line). Cĩ thể dùng các chương trình soạn thảo nĩi chung để tạo script file. Nĩ được lưu dưới dạng các ký tự ASCII. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 19 /116 Các điểm cần lưu ý: (Xem chi tiết trong [10], TLTK) ‚ Trong Matlab, các ký tự được viết sau ký hiệu “%” được xem là chú thích (comment). ‚ Nếu khơng muốn hiển thị các kết quả ra màn hình sau khi câu lệnh được thực thi, ta thêm dấu “;” vào cuối mỗi dịng lệnh. ‚ Khơng cần phải khai báo các biến sử dụng trong chương trình. Matlab tự động nhận biết các biến và giá trị của chung khi ta đưa vào chương trình. ‚ Để chạy script file ta chỉ cần gõ tên file (khơng cần phần mở rộng) và nhấn phím  (Enter). Khi thực thi nội dung file khơng được hiển thị lên màn hình. Một số lệnh cơ bản dùng trong script file: Lệnh Ý nghĩa disp(…) Hiển thị giá trị của biến hoặc hiển thị một chuỗi (nằm trong cặp nháy đơn),… input(‘text’) Hiển thị chuỗi ký tự và dấu nhắc chờ nhận một giá trị từ bàn phím. keyboard Trao điều khiển tạm thời cho bàn phím. echo Điều khiển cửa sổ lệnh lặp lại các lệnh của script-file trong khi thực thi. Được dùng để debug hoặc hiển thị các lệnh trong M-file khi chúng được thực thi. type(‘filename’) Hiển thị nội dung của file cĩ tên nằm trong cặp nháy đơn. Nội dung được hiển thị trong cửa sổ lệnh của Matlab. what Cho biết các file M-file và MAT-file cĩ trong vùng làm việc hiện hành hay khơng. mfilename Trả về tên của M-file đang chạy. pause Dừng lại đến khi người dùng nhấn phím bất kỳ. pause(n) Dừng lại n giây. waitforbuttonpress Dừng lại cho đến khi người dùng nhấn chuột hoặc phím. Bảng 1. 10: Các lệnh cơ bản dùng trong script file ™ Hàm (function) và tạo hàm trong Matlab Function là một chương trình thủ tục (routine), được h._.iện thực trong M-file, nhận đối số nhập vào (input) và trả về các đối số xuất (output). Nĩ thao tác trên các biến ở bên trong khơng gian làm việc (workspace) riêng của mình. Khơng gian làm việc này riêng biệt với khơng gian mà ta truy cập tại dấu nhắc lệnh của Matlab. Các hàm này cũng được lưu trong M-file và được dùng như các hàm mà Matlab cung cấp sẵn. M-file cĩ thể chứa nhiều hơn một hàm SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 20 /116 (function), những hàm được thêm vào gọi là hàm con (subfunction). Các hàm này chỉ nhìn thấy hàm chính hoặc các hàm con khác trong cùng một file. Các quy tắc viết hàm trong Matlab: (Xem chi tiết trong [5], TLTK) Ž Hàm phải được bắt đầu bằng từ khĩa “function”. Tiếp theo là các tham số đầu ra (được bao trong cặp ngoặc vuơng và cách nhau bởi dấu phẩy), dấu bằng, tên hàm, tham số đầu vào (nằm trong cặp ngoặc đơn và cách nhau bằng dấu phẩy). Ž Nên viết chú thích cho hàm ở các dịng đầu tiên. Khi gõ lệnh help với tên hàm, thì các chú thích này sẽ được hiển thị. Ž Các giá trị trả về của hàm được lưu trong tham số (ma trận) đầu ra. Vì vậy, phải chắc chắn rằng trong hàm cĩ chứa câu lệnh xác định giá trị của tham số đầu ra. Ž Các biến (ma trận) cùng tên cĩ thể được sử dụng bởi hàm và chương trình cần đến nĩ. Vì các hàm và chương trình được thực hiện tách biệt nhau. Các giá trị tính tốn trong hàm, tham số đầu ra khơng chịu tác động của chương trình. Ž Các biến đặc biệt nargin và nargout dùng để xác định số tham số đầu vào và ra được sử dụng trong hàm. Các tham số này chỉ là biến cục bộ. Ví dụ: function [tsr1, tsr2,…,tsrn] = tên_hàm(tsv1, tsv2,…,tsvn) % ghi chú 1… % ghi chú n 1.2.5 Tạo giao diện người sử dụng đồ họa (Graphic User Interface – GUI) 1.2.5.1 Tạo firgure Trong MatLab, GUI là figure. Trước khi thêm các thành phần vào figure, cần tạo một figure xác định. f = figure, f là handle của figure. Chú ý: Trước khi tạo các thành phần mà khơng cĩ figure thì MatLab cĩ thể tạo figure tự động nhưng ta khơng biết handle của figure. Sau đây là các thuộc tính của figure: ƒ MenuBar: hiển thị bảng chọn của Menu bar. - Giá trị: none,figure(mặc định). ƒ Name: Tựa đề hiển thị trong cửa sổ figure. Nếu NumberTitle là on, chuỗi này được thêm vào số figure. - Giá trị: string SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 21 /116 ƒ NumberTitle: on( mặc định ), off. ƒ Position: kích thước của figure GUI và vị trí của nĩ cân đối với gĩc dưới bên trái màn hình. - [ left, bottom, width, height ] ƒ Resize: Xác định khả năng người dùng cĩ thể thay đổi kích thước figure bằng chuột. - Giá trị: on( mặc định ), off. ƒ Toolbar: Hiển thị hoặc ẩn thanh cơng cụ mặc định. - none: khơng hiển thị thanh cơng cụ. - auto: hiển thị thanh cơng cụ nhưng nĩ bị bỏ qua nếu thanh cơng cụ khác thêm vào. - figure( mặc định ): hiển thị thanh cơng cụ. ƒ Units: đơn vị đo lường. - Giá trị: centimeters, characters, inches, normalized, points, pixels( mặc định ). ƒ Visible: Hiển thị figure trên màn hình. - Giá trị: on( mặc định ), off. 1.2.5.2 Những thành phần cơ bản ƒ Thành phần ActiveX: Chỉ cĩ giá trị trên Microsoft Windows - function: actxcontrol ƒ Axes: cho phép hiển thị hình ảnh - function: axes ƒ Button Group: giống như panel nhưng dùng để quản lý các radio button và toggle button. - function: uibutttongroup ƒ CheckBox: dùng để chọn lựa một số yêu cầu. - function : uicontrol ƒ Edit Text: cho phép nhập hoặc thay đổi chủ đề. - function: uicontrol ƒ List Box: hiển thị và cho phép chọn một hoặc nhiều item. - function: uicontrol ƒ Panel: sắp xếp các thành phần vào các nhĩm. Các thành phần trên panel di chuyển khi di chuyển panel và vị trí của chúng tương ứng với panel. - function: uipanel SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 22 /116 ƒ Pop-Up Menu: hiển thị danh sách chọn lựa khi người dùng click vào mũi tên. - function: uicontrol ƒ Push Button: tạo ra một tác động khi nĩ được click. - function: uicontrol ƒ Radio Button: giống check box nhưng radio button chỉ cho phép chọn duy nhất một yêu cầu trong nhĩm yêu cầu. radio button trước sẽ khơng được chọn khi cĩ một radio button khác được chọn. - function: uicontrol ƒ Slider: - function: uicontrol ƒ Static Text: dùng để gán nhãn cho các control khác, cung cấp hướng dẫn cho người dùng. - function: uicontrol ƒ Toggle Button: tạo ra tác động và nhận biết chúng bật hay tắt. Khi click vào, nĩ bị nhấn xuống. Chỉ khi nào ta click một lần nữa nĩ mới về trạng thái ban đầu. Nĩ giống như radiobutton. - function: uicontrol 1.2.5.3 Thêm điều khiển giao diện người dùng (User Interface Controls) uich = uicontrol( parent, ‘PropertyName’, ‘PropertyValue’,......) Nếu khơng xác định parent thì figure hiện tại được xem parent ƒ Các thuộc tính được dùng phổ biến - Max: giá trị lớn nhất, phụ thuộc vào thuộc tính Style. Mặc định là 1. - Min: giá trị lớn nhất, phụ thuộc vào thuộc tính Style. Mặc định là 0. - Position: kích thước và vị trí của thành phần tương ứng với parent. - String: Tạo tựa đề - Style: pushbutton( mặc định ), togglebutton, radiobutton, checkbox, edit, text, slider, listbox, popupmenu. - Units: đơn vị đo lường. Gồm: pixels( mặc định ), normalized, inches, centimeters, points, characters. - Value: phụ thuộc vào thuộc tính Style. ƒ Check Box: - Style = ‘checkbox’ - value = 1: chọn, value = 0 : khơng chọn ƒ Edit Text: - Style = ‘edit’ - Max-Min > 1: nhập nhiều hàng SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 23 /116 ƒ List Box: - Style = ‘listbox’ - value = scalar :số thứ tự của item được chọn. - Max – Min > 1, value = [ ] :chọn nhiều item. ƒ Pop-up Menu: - Style = ‘popupmenu’ - value = số thứ tự của item được chọn. ƒ Push Button: - Style = ‘pushbutton’ - Thêm hình ảnh vào push button: gán cho thuộc tính CData của button một mảng n-m-3 để định nghĩa hình ảnh . ƒ Radio Button: - Style = ’radiobutton’ - value = 1: chọn, value = 0: khơng chọn. ƒ Slider: - Style = ‘slider’ - Max – Min: xác định khoảng giá trị của slider. - value: min <= value <= max. - SliderStep = [min_step, max_step]. ‚ min_step: giá trị nhỏ nhất khi thay đổi. ‚ max_step: giá trị lớn nhất khi thay đổi. ƒ Static Text: - Style = ‘text’ ƒ Toogle Button: - Style = ‘tooglebutton’ - value = 1: chọn, value = 0: khơng chọn 1.2.5.4 Thêm Panel và Button Groups ƒ Các thuộc tính được dùng phổ biến - Parent: Xác định figure, panel, group button là thành phần cha. - Position: Kích thước và vị trí của thành phần trong parent của nĩ. - Title: Dùng để gán nhãn. - TitlePosition: vị trí của title. ‚ Các giá trị: lefttop( mặc định ), centertop, righttop, leftbottom, centerbottom, rightbottom. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 24 /116 - Units: Đơn vị đo lường. ‚ Các giá trị: pixels, normalized( mặc định ), inches, centimeters, points, characters. ƒ Panel: - ph = uipanel(‘PropertyName’, ‘PropertyValue’,….) ƒ Button Groups: - bgh = uibuttongroup( ‘PropertyName’, ‘PropertyValue’,….) 1.2.5.5 Thêm Axes ah = axes(‘PropertyName’, PropertyValue,….) ƒ Thuộc tính phổ biến: - HandleVisibility: Xác định handle của nĩ cĩ nằm trong danh sách của parent của nĩ - Parent: Xác định figure, panel, group button là thành phần cha. - Position: Kích thước và vị trí của thành phần trong parent của nĩ. - Units: Đơn vị đo lường. ‚ Các giá trị: pixels, normalized( mặc định ), inches, centimeters, points, characters. 1.2.5.6 Thêm ActiveX Controls h = actxcontrol('progid', position, fig_handle) → tạo trình điều khiển tại vị trí xác định trong cửa sổ figure hiện tại. Cửa sổ này được nhận biết bởi fig_handle( mặc định là gcf ) 1.2.5.7 Các thành phần Aligning align( HandleList, ‘HorizontalAlignment’, ‘VerticalAlignment’ ) ƒ HandleList: tất cả handle phải cĩ cùng parent ƒ HorizontalAlignment: None, Left, Center, Right, Distribute, Fixed. ƒ VerticalAlignment: None, Top, Middle, Bottom, Distribute, Fixed. 1.2.5.8 Thiết lập Tab Oder ƒ Tab Oder mặc định: là thứ tự khi tạo các thành phần. Ta khơng thể tab đến axes và static text. ƒ Thay đổi thứ tự TabOder - uistack(h): thay đổi thứ tự của đối tượng. - uistack(h, stackopt ) ‚ stackopt = up: di chuyển h lên một vị trí ‚ stackopt = down: di chuyển h xuống một vị trí ‚ stackopt = top: di chuyển h đến đỉnh của thứ tự hiện tại. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 25 /116 ‚ stackopt = bottom: di chuyển h xuống vị trí dưới cùng của thứ tự hiện tại. - uistack( h, ‘up’, n ): di chuyển h lên n bậc. - uistack(h, ‘down’, n): di chuyển h xuống n bậc. 1.2.5.9 Tạo Menus ƒ mh = uimenu(parent,'PropertyName',PropertyValue,...) ƒ set(f, ‘MenuBar’, ’figure’): hiển thị menubar. Đây là thuộc tính mặc định. ƒ set( f, ‘MenuBar’, ‘none’): khơng hiển thị menubar. ƒ Thuộc tính phổ biến: - Accelerator: Cho phép người dùng chọn menu item bằng cách Ctrl+Accelerator. ‚ Giá trị : character - Checked: ‚ on: Chọn ‚ off( mặc định ): Khơng chọn. - Enable: cho phép sử dụng ‚ on( mặc định ): cho phép sử dụng. ‚ off: item bị mờ, khơng dùng được. - HandleVisibility: Xác định handle của nĩ cĩ nằm trong danh sách của parent của nĩ ‚ on( mặc định): ‚ off: để ngăn chặn những hoạt động khơng mong đợi. - Label: ‚ String: dùng hiển thị nhãn cho menu - Position: vị trí menu item trong menu. - Separator: Đường chia. ‚ on: Hiển thị. ‚ off( mặc định ): khơng hiển thị SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 26 /116 1.2.5.10 Tạo Context Menu ƒ Thuộc tính phổ biến - HandleVisibility: Xác định handle của nĩ cĩ nằm trong danh sách của parent của nĩ ‚ on( mặc định ) ‚ off: ngăn chặn những hoạt động khơng mong đợi. - Parent: Parent của Context Menu. - Position[ 0 0]: Khoảng cách từ gĩc dưới bên trái của parent figure tới gĩc trên bên trái của context menu. Thuộc tính này chỉ được dùng khi Visible = on. - Visible: ‚ on: Hiển thị. ‚ off( mặc định ): Khơng hiển thị. ƒ Tạo Context Menu - handle = uicontextmenu(‘PropertyName’, PropertyValue,…..) ƒ Thêm Menu item vào Context Menu - mh = uimenu(handle,'PropertyName',PropertyValue,...) ƒ Giao tiếp với Context Menu : dùng thuộc tính UIContextMenu - set( parent, ‘UIContextMenu’, handle ) 1.2.5.11 Tạo Toolbars ∗ tbh = uitoolbar(h, ‘PropertyName’, PropertyValue,…..) ∗ pth = uipushtool(h, ‘PropertyName’, PropertyValue,…..) ∗ pth = uitoggletool(h, ‘PropertyName’, PropertyValue,…..) ƒ Thuộc tính phổ biến - CData : Định dạng màu RGB ‚ Giá trị 3D trong khoảng 0.0 đến 1.0 - HandleVisibility : Xác định handle của nĩ nằm trong danh sách handle của parent. ‚ on( mặc định ): ‚ off : Ngăn chặn những hành động mong muốn. - Separator : Vẽ đường chia. ‚ Giá tri: on, off. - State : Tình trạng của dụng cụ. ‚ on: Được chọn, bị nhấn xuống. ‚ off: Khơng chọn SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 27 /116 - TooltipString : dùng để giải thích chức năng của cơng cụ. ƒ Hiển thị Toolbar chuẩn: - set( fh, ‘Toolbar’, ‘figure’ ): hiển thị thanh cơng cụ chuẩn - set( fh, ‘Toolbar’, ‘none’ ): khơng hiển thị thanh cơng cụ chuẩn - set( fh, ‘Toolbar’, ‘auto’ ): Đây là thuộc tính mặc định. Hiển thị thanh cơng cụ chuẩn nhưng khi tạo mới thanh cơng cụ thì thanh cơng cụ chuẩn sẽ bị xĩa. 1.2.5.12 Hàm Callback Các hàm dùng để lập trình các hành vi của các thành phần trong GUI. ƒ Khai báo biến cho các đối số nhập và xuất - mInputArgs =varagin: Khai báo đối số nhập - mOutputArgs = {}: Khai báo đối số được trả về ƒ Hàm Callback - function objectTag_Callback(hObject, eventdata, handles) ‚ hObject: đối tượng gọi hàm callback ‚ eventdata: trống- để sử dụng trong tương lai. ‚ handles: Một cấu trúc chứa các handle của tất cả các thành phần trong GUI . Nĩ cũng cĩ thể được dùng để chuyển dữ liệu đến các hàm callback khác hoặc đến dịng lệnh (command line). SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 28 /116 Chương 2 GIỚI THIỆU MỘT SỐ BÀI TỐN TRONG TÀI CHÍNH 2.1 Mở đầu: Trong đời sống hằng ngày, chúng ta vẫn bắt gặp các hoạt động mua bán, tài chính diễn ra thường xuyên. Qua đĩ cho thấy việc tính tốn tài chính rất gần gũi (tùy theo mức độ cơng việc). Đối với các sinh viên kinh tế, bộ mơn ‘Tốn Tài Chính’ rất quan trọng và khơng thể thiếu. Vì nĩ gắn liền với các mơn học: nghiệp vụ ngân hàng, thị trường đầu tư, thị trường thương mại, thị trường tài chính, quản lý tài chính.v.v…Nền tảng của các cơng thức thuộc lĩnh vực tài chính là gì? Nĩ dựa trên tốn học và hệ thống lãi suất. Và trong thực tế, nĩ cũng là cơng cụ gĩp phần khơng nhỏ cho thành cơng của các nhà kinh doanh. Vậy tại sao chúng ta khơng dành đơi chút thời gian để tìm hiểu các vấn đề cơ bản của bộ mơn này? 2.2 Các khái niệm tài chính cơ bản: (Xem chi tiết trong [6], TLTK) 9 Tiền lãi: Là giá trị chênh lệch giữa vốn đầu tư ban đầu và giá trị thu được sau n chu kỳ đầu tư (cho vay). 9 Lãi đơn: Là tiền lãi phải trả (cho trường hợp vay nợ) hoặc kiếm được (trong trường hợp tiền được đem đi đầu tư), chỉ tính trên số vốn gốc ban đầu. 9 Lãi kép: Là tiền lãi khơng chỉ tính trên vốn gốc mà cịn tính trên tiền lãi sinh ra của chu kỳ sau nếu khơng rút vốn ra trong suốt n chu kỳ. 9 Lãi suất: Tượng trưng cho tiền lãi của một số vốn được ấn định trong một đoạn thời gian. 9 Hiện giá: Giá trị hiện tại của số lượng tiền tệ dựa trên một mốc thời gian cụ thể. 9 Giá trị tương lai: Là giá trị của một số lượng tiền tệ tăng trưởng nếu nĩ được đem đầu tư với một lãi suất nhất định trong một khoảng thời gian nào đĩ. 9 Chiết khấu: Là hình thức mua bán các thương phiếu chưa đến kỳ đáo hạn và người ta phải tính lại giá trị của thương phiếu. 9 Các khoản tiền thanh tốn theo chu kỳ: Là những khoản tiền sẽ được nhận hoặc chi trả cách đều nhau theo thời gian. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 29 /116 2.3 Hệ thống lãi đơn (Xem chi tiết trong [6], TLTK) 2.3.1 Các đối số In : Tiền lãi của vốn đầu tư sau n chu kỳ i : Lãi suất của 1 chu kỳ (Lãi suất 1 ngày, 1 tháng, 1 quý, 1 năm) n : Số chu kỳ đầu tư (số ngày, số tháng, số quý, số năm) C0 : Vốn đầu tư ban đầu Cn : Giá trị của vốn đầu tư sau n chu kỳ A : Mệnh giá thương phiếu a : Hiện giá sau khi chiết khấu 2.3.2 Tiền lãi ƒ Cơng thức: ƒ Bài tốn: Cho i = 24% năm. Tính tiền lãi của vốn đầu tư 250.000.000 đ. 1. trong 60 ngày 2. trong 7 tháng 3. trong 2 năm Giải: Ta cĩ: Lãi suất của 1 ngày %.% 070 360 24 == ngày Lãi suất của 1 tháng %% 2 12 24 == tháng Do đĩ: 10.000.000600.07%0250.000.00I60ngày =××= đ 35.000.00072%0250.000.00I7tháng =××= đ 0đ120.000.00224%0250.000.00I2năn =××= 2.3.3 Lãi suất ƒ Cơng thức: ƒ Bài tốn: Một hàng hĩa bán trả ngay là 100 triệu đồng được đem bán chịu. Sau 30 này, số tiền thu được là 102 triệu đồng. Tính lãi suất /ngày. Giải Lãi suất bán chịu: %065.0 300102.000.00 0100.000.000102.000.00i =× −= niCI 0n ×= na aAi × −= SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 30 /116 2.3.4 Lãi suất chiết khấu ƒ Cơng thức: ƒ Bài tốn: Một thương phiếu cĩ mệnh giá 128000 đồng đáo hạn ngày 22/12 đem đi chiết khấu tại ngày 10/11 cho một số tiền 124775 đồng. Tính lãi suất chiết khấu. Giải Số ngày chiết khấu từ 10/11 đến 22/12 là 42 ngày Lãi suất chiết khấu cho thương phiếu: %06.0 42280001 124775128000i =× −= 2.3.5 Hiện giá sau chiết khấu ƒ Cơng thức: ƒ Bài tốn: Một thương gia thương lượng một hối phiếu 450.000 đồng hạn kỳ từ ngày thương lượng đến ngày đáo hạn của hối phiếu là 55 ngày với lãi suất chiết khấu ngân hàng áp dụng 20% năm. Tính tiền ngân hàng giữ lại và tiền thương gia nhận được.[6] Giải: Tiền chiết khấu ngân hàng giữ lại là A.n.i 13.750 360 20%55450.000E =××= đồng Tiền thương gia nhận là a = A – E a = 450.000 – 13.750 = 436.250 đồng 2.3.6 Giá trị hiện tại ƒ Cơng thức: ƒ Bài tốn: Cho 3 hối phiếu B1 = 500.000; P1 = 24 ngày B2 = 850.000; P2 = 36 ngày B3 = 1.200.000; P3 = 60 ngày nA aAi × −= ∑∑∑ === −= n 1k kk n 1k k n 1k k inAAa n)i(1CC n0 ×−= SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 31 /116 Thay 3 hối phiếu trên bằng hối phiếu A duy nhất cĩ n = 42 ngày với i = 20% năm. Xác định C0. Giải: Ta cĩ phương trình tương đương: ) 360 20%6011.200.000( ) 360 20%361850.000() 360 20%241500.000() 360 20%421(C0 ×−+ ×−+×−=×− C0 = 2.545.734đ 2.3.7 Giá trị tương lai ƒ Cơng thức: ƒ Bài tốn Trị giá tại một thời gian bất kỳ của một số vốn là 150.000đ với lãi suất i = 18% năm. Tính trị giá của vốn này sau thời điểm bất kỳ này là 120 ngày. Giải: Trị giá của vốn sau thời điểm bất kỳ là 120 ngày 159.000) 360 18%1201150.000(Cn =×+= đ 2.4 Hệ thống lãi kép (Xem chi tiết trong [6], TLTK) 2.4.1 Các đối số In: Tiền lãi của vốn đầu tư sau n chu kỳ i: Lãi suất của 1 chu kỳ (Lãi suất 1 ngày, 1 tháng, 1 quý, 1 năm) n: Số chu kỳ đầu tư (số ngày, số tháng, số quý, số năm) C0: Vốn đầu tư ban đầu Cn: Giá trị của vốn đầu tư sau n chu kỳ 2.4.2 Tiền lãi ƒ Cơng thức ƒ Bài tốn Tính tiền lãi thu được của số vốn 250 triệu đồng đầu tư theo lãi kép trong 5 tháng với lãi suất 3% tháng. Giải: Áp dụng cơng thức trên, ta tính được tiền lãi sau khi đầu tư In = C0[( 1 + i )n - 1] In = 250[ ( 1 + 0.03 )5 - 1] In = 39.818.518,6 Cn = C0( 1+i.n ) In = C0[(1+i)n - 1] SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 32 /116 2.4.3 Lãi xuất ƒ Cơng thức: ƒ Bài tốn: Theo một lãi suất nào thì một số vốn sẽ tăng gấp 5 lần sau 8 năm. Tiền lãi nhập vốn mỗi năm. Giải: Lãi suất cần tìm: 22.28%15i 1 C 5Ci )i1(C5C 8 8 0 0 8 00 =−= −= += 2.4.4 Chiết khấu ƒ Cơng thức: En: Tiền chiết khấu Cn: Mệnh giá của của vốn tại ngày đáo hạn ƒ Bài tốn: Cho biết tiền chiết khấu của một hối phiếu 250tr đồng đáo hạn sau 3 năm, nếu lãi suất chiết khấu 17% / năm. Giải: Tiền chiết khấu cho hối phiếu: En = Cn[ 1- ( 1 + i ) –n ] E3 = 250.000.000[ 1- ( 1 + 0.17 )-3 ] = 93.907.361 2.4.5 Giá trị hiện tại ƒ Cơng thức: ƒ Bài tốn Một doanh nghiệp muốn cĩ một số vốn 15.000 triệu đồng vào ngày 1/1/93. Cho biết số tiền mà ơng ta bỏ ra đầu tư theo lãi kép vào ngày 1/1/88 biết i = 25% năm. Giải: Từ ngày 1/1/88 đến 1/1/93 là 5 năm do đĩ số tiền phải bỏ ra đầu tư là C0 = Cn( 1 + i )-n C0 = 15.000( 1 + 0.25 )-5 C0 = 4.915,2trđ 1 C Ci n 0 n −= En = Cn[ 1 – ( 1+i)-n] C0 = Cn( 1+ i )-n SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 33 /116 2.4.6 Giá trị tương lai ƒ Cơng thức: ƒ Bài tốn: Tính giá trị của 120 triệu đồng đầu tư theo lãi kép theo lãi suất 4% kỳ 3 tháng. Thời gian đầu tư là 2 năm. Giải: Chu kỳ là 3 tháng nên thời gian đầu tư 2 năm cĩ 8 chu kỳ Cn = C0( 1 + i )n C8 = 120( 1 + 0.04 )8 C8 = 164,228 trđ 2.5 Các khoản thanh tốn theo chu kỳ 2.5.1 Các đối số a: Khoản tiền thanh tốn vào cuối kỳ (đầu kỳ) i: Lãi suất một chu kỳ n: Số chu kỳ thanh tốn Vn: Tổng giá trị tương lai của các khoản thanh tốn cuối kỳ tại n V0: Tổng giá trị hiện tại của các khoản thanh tốn cuối kỳ tại 0 V’n: Tổng giá trị tương lai của các khoản thanh tốn đầu kỳ tại n V’0: Tổng giá trị hiện tại của các khoản thanh tốn đầu kỳ tại 0 2.5.2 Tổng giá trị tương lai của các khoản thanh tốn cuối kỳ ƒ Cơng thức: ƒ Bài tốn: Tính tổng giá trị tương lai của 10 khoản thanh tốn. Nếu mỗi khoản thanh tốn là 250.000đ đĩng vào cuối mỗi quý lãi suất là 6.25% quý. Giải 3.334,143 0.0625 10.0625)(1250.000V 10 10 =−+×= đ Cn = C0( 1+i )n i 1i)(1aV n n −+×= SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 34 /116 2.5.3 Tổng giá trị hiện tại của các khoản thanh tốn cuối kỳ ƒ Cơng thức: ƒ Bài tốn: Cho biết số tiền cĩ thể vay được vào đầu năm dưới sự đảm bảo của 12 kỳ trả gĩp vào cuối mỗi tháng số tiền 20.000đ, lãi suất 2.8% tháng. Giải 201.478 0.028 0.028)(1-120.000V -12 0 =+×= đ 2.5.4 Tổng giá trị tương lai của các khoản thanh tốn đầu kỳ ƒ Cơng thức: ƒ Bài tốn: Một người cam kết đĩng vào quỹ tiết kiệm ngày 1/1 mỗi năm một số tiền khơng đổi là 200.000đ từ năm 1990. Cho biết số vốn được thành lập vào ngày 31/12/99 nếu lãi suất được tính là 22% năm trong suốt thời gian này. Giải 409.992.6)22.01( 0.22 10.22)(1200.000V' 10 10 =+−+×= đ 2.5.5 Tổng giá trị hiện tại của các khoản thanh tốn đầu kỳ ƒ Cơng thức: ƒ Bài tốn: Cho biết số tiền cĩ thể vay được vào đầu năm dưới sự đảm bảo của 10 kỳ trả gĩp vào đầu mỗi tháng số tiền 50.000đ, lãi suất 1.5% tháng. Giải 468.030 0.015 0.015)(1-10.015)(1000.50V' -10 0 =++= đ i i)(1-1aV -n 0 +×= i 1i)(1i)a(1V' n n −++= i i)(1-1i)(1aV' -n 0 ++= SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 35 /116 2.5.6 Định giá các khoản tiền thanh tốn cuối kỳ ƒ Cơng thức: ƒ Bài tốn Trong tài khoản tiết kiệm ban đầu cĩ 5triệu với lãi suất 0.01% mỗi tháng. Cho biết số tiền được rút ra trong mỗi tháng trong 2 năm. Giải ( )( ) 367.235101.01 0.01)(101.0000.000.5a 24 24 =−+ +×= đ 2.5.7 Định giá các khoản tiền thanh tốn đầu kỳ ƒ Cơng thức: ƒ Bài tốn Tổng giá trị hiện tại của các khoản thanh tốn đầu kỳ trong ba năm là 900.000đ. Tính số tiền phải thanh tốn hàng tháng với lãi suất 12% / năm. Giải ( )( ) 597.2910.011 0.01)(10.01900.000a 36 35 =−+ +×= đ 2.6 Chỉ số (Index number): (Xem chi tiết trong [7], TLTK) 2.6.1 Định nghĩa Một Index Number đo lường mức độ biến đổi theo chuỗi thời gian trong một giai đoạn như một phần của chuỗi thời gian trong một giai đoạn cơ bản. 2.6.2 Cơng thức ƒ Chỉ số LASPEYRES Chỉ số Laspeyres đo lường sự thay đổi giá cả đối với mơ hình mua bán cố định.Chỉ số Laspeyres cho n chu kỳ thể hiện bằng cơng thức sau: ∑ ∑×= 0i0i 0ini 0:n qP qP 100L ( )( )1i1 i)(1iVa n n 0 −+ +×= ( )( )1i1 i)(1iV'a n -1n 0 −+ +×= SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 36 /116 ƒ Chỉ số PAASCHE Chỉ số Paasche đo lường sự thay đổi giá cả đối với đối tượng mua bán cố định trong trường hợp sự thay đổi về số lượng từ một số năm cơ bản. Chỉ số Paasche cho n chu kỳ được thể hiện bằng cơng thức sau: ∑ ∑×= ni0i nini 0:n qP qP 100P ƒ Chỉ số INDEX Chỉ số đo lường sự thay đổi trung bình trong giá cả đối với mơ hình mua bán cố định. Chỉ số cho n chu kỳ được thể hiện bởi cơng thức sau: P*LI= 2.6.3 Bài tốn Giá cả và khối lượng của cá tuyết và cá bơn ở Anh 1990 1995 Khối lượng Giá Khối lượng Giá Q0i P0i Q1i P1i Cá tuyết 102.10 562.48 87.90 776.06 Cá bơn 1.80 2677.78 2.70 3345.56 ™ 136.9616 1.82677102.1562.48 1.83345.56102.1776.06100L 0:1 =×+× ×+××= ™ 136.3084 2.7267787.9562.48 2.73345.5687.9776.06100P 0:1 =×+× ×+××= ™ 136.6348I 0:1 = 2.7 Dự báo theo chuỗi thời gian (Time Series Forecasting) (Xem chi tiết trong [7], TLTK) 2.7.1 Định nghĩa Thứ tự các giá trị được lưu trữ theo thời gian cho một sự biến đổi trong một chuỗi thời gian. 2.7.2 Dự báo theo dịch chuyển trung bình (Moving Average) ƒ Phương pháp: Lấy giá trị trung bình của các thời điểm trước làm giá trị dự báo cho thời điểm hiện tại. ƒ Cơng thức: F(t) = ∑n 1 A(t) / n f(t +τ ) = F(t) SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 37 /116 ƒ Bài tốn: Thời gian Lượng bán thực tế Độ dịch chuyển trung bình trong ba tháng Hai năm trước Tháng 1 21 Tháng 2 20 Tháng 3 19 Tháng 4 18 ( 21 + 20 + 19 )/3 = 20 Tháng 5 14 ( 20 + 19 + 18 )/3 = 19 Tháng 6 15 ( 19 + 18 + 14 )/3 = 17 Tháng 7 22 ( 18 + 14 + 15 )/3 = 15.67 Tháng 8 28 ( 14 + 15 + 22 )/3 = 17 Tháng 9 25 ( 15 + 22 + 28 )/3 = 21.67 Tháng 10 25 ( 22 + 28 + 25 )/3 = 25 Tháng 11 25 ( 28 + 25 + 25 )/3 = 26 Tháng 12 20 ( 25 + 25 + 25 )/3 = 25 Một năm trước Tháng 1 25 (25 + 25 + 20 )/ 3 = 23.33 Tháng 2 25 ( 25 + 20 + 25 )/3 = 23.33 Tháng 3 24 ( 20 + 25 + 25 )/3 = 23.33 Tháng 4 28 ( 25 + 25 + 24 )/3 = 24.67 Tháng 5 36 ( 25 + 24 + 28 )/3 = 25.67 Tháng 6 32 ( 24 + 28 + 36 )/3 = 29.33 Tháng 7 25 ( 28 + 36 + 32 )/3 = 32 Tháng 8 23 ( 36 + 32 + 25 )/3 = 31 Tháng 9 22 ( 32 + 25 + 23 )/3 = 26.67 Tháng 10 23 ( 25 + 23 + 22)/3 = 23.33 Tháng 11 22 ( 23 + 22 + 23 )/3 = 22.67 Tháng 12 27 ( 22 + 23 + 22 )/3 = 22.33 Bảng 2. 1: Bài tốn về dự báo theo dịch chuyển trung bình 2.7.3 Dự báo theo dịch chuyển trung bình cĩ trọng số (Weighted Moving Average) ƒ Phương pháp: Lấy giá trị trung bình cĩ trọng số các thời điểm trước làm giá trị dự báo cho thời điểm hiện tại. ƒ Cơng thức: Weigh for periods t: Trọng số cho thời gian t Demand in period t: nhu cầu trong thời gian t Weighs t)periodint)(Demandperiodsfor(WeighW.M.A ∑ ∑= SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 38 /116 ƒ Bài tốn: Trọng số Thời gian 3 1 tháng trước 2 2 tháng trước 1 3 tháng trước Kết quả dự đốn theo phương pháp này thể hiện trong bảng sau: Thời gian Lượng bán thực tế Độ dịch chuyển trung bình cĩ trọng số trong ba tháng Hai năm trước Tháng 1 21 Tháng 2 20 Tháng 3 19 Tháng 4 18 ( 3x19 + 2x20 + 21 )/6 = 19.67 Tháng 5 14 ( 3x18 + 2x19 + 20 )/6 = 18.67 Tháng 6 15 ( 3x14 + 2x18 + 19 )/6 = 16.17 Tháng 7 22 ( 3x15 + 2x14 + 18 )/6 = 15.17 Tháng 8 28 ( 3x22 + 2x15 + 14 )/6 = 18.33 Tháng 9 25 ( 3x28 + 2x22 + 15 )/6 = 28.83 Tháng 10 25 ( 3x25 + 2x28 + 22 )/6 = 25.50 Tháng 11 25 ( 3x25 + 2x25 + 28 )/6 = 25.50 Tháng 12 20 ( 3x25 + 2x25 + 25 )/6 = 25. Một năm trước Tháng 1 25 ( 3x20 + 2x25 + 25 )/6 = 22.50 Tháng 2 25 ( 3x25 + 2x20 + 25 )/6 = 23.33 Tháng 3 24 ( 3x25 + 2x25 + 20 )/6 = 24.17 Tháng 4 28 ( 3x24 + 2x25 + 25 )/6 = 24.50 Tháng 5 36 ( 3x28 + 2x24 + 25 )/6 = 26.17 Tháng 6 32 ( 3x36 + 2x28 + 24 )/6 = 31.33 Tháng 7 25 ( 3x32 + 2x36 + 28 )/6 = 32.67 Tháng 8 23 ( 3x25 + 2x32 + 36 )/6 = 29.17 Tháng 9 22 ( 3x23 + 2x25 + 32 )/6 = 25.17 Tháng 10 23 ( 3x22 + 2x23 + 25 )/6 = 22.83 Tháng 11 22 ( 3x23 + 2x22 + 23 )/6 = 22.67 Tháng 12 27 ( 3x22 + 2x23 + 22 )/6 = 22.33 Bảng 2. 2: Kết quả dự đốn theo pp dịch chuyển trung bình cĩ trọng số SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 39 /116 2.7.4 Dự báo theo hàm trơn đơn (Single Exponential Smoothing) ƒ Cơng thức: a: Trọng số với 0<a<1 ƒ Bài tốn: Thời gian Lượng bán thực tế Độ trung bình hàm trơn với số mũ a=0.5 Hai năm trước Tháng 1 21 Tháng 2 20 21.00 Tháng 3 19 20.50 Tháng 4 18 19.75 Tháng 5 14 18.88 Tháng 6 15 16.44 Tháng 7 22 15.72 Tháng 8 28 18.86 Tháng 9 25 23.43 Tháng 10 25 24.21 Tháng 11 25 24.61 Tháng 12 20 24.80 Một năm trước Tháng 1 25 22.40 Tháng 2 25 23.70 Tháng 3 24 24.35 Tháng 4 28 24.18 Tháng 5 36 26.09 Tháng 6 32 31.04 Tháng 7 25 31.52 Tháng 8 23 28.26 Tháng 9 22 25.63 Tháng 10 23 23.82 Tháng 11 22 23.41 Tháng 12 27 22.70 Bảng 2. 3: Bài tốn dự báo theo hàm đơn trơn Dự đốn mới = dự báo thời gian trước + a( nhu cầu thời gian trước – dự báo thời gian trước ) SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 40 /116 Chương 3 CÁC HÀM VỀ TÀI CHÍNH TRONG MATLAB 3.1 Giới thiệu: MatLab và hộp cơng cụ tài chính (Financial Toolbox – FT) cung cấp mơi trường tính tốn được tích hợp hồn chỉnh cho việc nghiên cứu và phân tích tài chính. Hộp cơng cụ cĩ mọi thứ cần thiết để thực hiện các phép tốn, phân tích thống kê dữ liệu tài chính và hiển thị kết quả bằng hình ảnh đồ họa đặc trưng. Trong lập trình bảng tính hay truyền thống, ta phải xử lý tất cả các chi tiết như: khai báo, loại dữ liệu, kích thước,…Nhưng với Matlab, tất cả các việc đĩ đều được xử lý tự động. Ta chỉ cần viết biểu thức theo cách mà ta nghĩ về vấn đề. Khơng cần chuyển đổi cơng cụ, thay đổi file hoặc viết lại ứng dụng. MatLab và hộp cơng cụ tài chính cung cấp các chức năng sau: ƒ Tính tốn và phân tích giá cả, lợi nhuận và độ nhạy cho vốn đầu tư, các chứng khốn và danh mục vốn đầu tư chứng khốn. ƒ Định giá lợi tức cố định tích hợp theo Hội liên hiệp kinh doanh chứng khốn (Securities Industry Association – SIA), lợi nhuận và phân tích độ nhạy. ƒ Phân tích và quản lý vốn đầu tư. ƒ Dự kiến và đánh giá hàng rào chiến lược. ƒ Nhận biết, ước tính và điều khiển rủi ro. ƒ Phân tích và tính tốn chu kỳ tiền mặt, bao gồm tỉ lệ hồn trả và dịng giảm giá. ƒ Phân tích và dự đốn hoạt động kinh tế. ƒ Quan sát và phân tích dữ liệu chuỗi thời gian tài chính. ƒ Tạo các cơng cụ tài chính cĩ cấu trúc, bao gồm cơng cụ chuyển đổi ngoại tệ. ƒ Giảng dạy và hướng dẫn nghiên cứu học thuật. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 41 /116 3.2 Biểu diễn các tác vụ tài chính phổ biến: 3.2.1 Xử lý và chuyển đổi kiểu dữ liệu Date: Hầu như tất cả các dữ liệu tài chính được xác định hay thu được từ một chuỗi thời gian, nên các hàm tài chính phải cĩ khả năng xử lý tốt dữ liệu ngày tháng. 9 Định dạng ngày tháng: Ta thường dùng chuỗi ngày tháng (date string) để xử lý kiểu dữ liệu ngày tháng. FT sử dụng dãy các số chỉ ngày tháng (serial date numbers), mỗi dãy số nhất định này tượng trưng cho một ngày tháng. Tùy theo yêu cầu của các hàm mà đối số ngày tháng là chuỗi ngày tháng hay dãy các số chỉ ngày tháng. Ví dụ: dãy số 733016 là 05-Dec-2006 hay 05 Dec 2006 Khi xử lý một số ít ngày tháng ở mức dùng dịng lệnh trong Matlab, thì chuỗi ngày tháng thuận lợi hơn. Ngược lại, khi phân tích danh mục vốn đầu tư lớn, chu kỳ tiền mặt,…thì nên dùng dãy các số chỉ ngày tháng để cải ._.nghĩa, cơng thức và ví dụ minh họa. Xây dựng được chương trình giải các bài tốn tài chính thơng qua Matlab. Cho phép nhận và xuất dữ liệu theo các định dạng lưu trữ: Excel, Access, SQL,…. 2. ĐÁNH GIÁ Mặc dù chúng em đã cĩ nhiều cố gắng trong quá trình thực hiện luận văn này. Song, vẫn khơng tránh khỏi những thiếu sĩt và hạn chế về mặt lý thuyết cũng như ứng dụng. ƒ Lý thuyết: - Các bài tốn trong tài chính chưa được giới thiệu đầy đủ. - Chưa trình bày sâu về các hàm trong hộp cơng cụ tài chính. ƒ Chương trình: - Chỉ giải được một số bài tốn cơ bản đã giới thiệu trong phần lý thuyết. - Chương trình chỉ nhận và xuất theo các định dạng dữ liệu nhất định. - Chưa hỗ trợ tính năng xử lý các bài tốn lồng nhau (dữ liệu ra của bài này là dữ liệu đầu vào của bài tốn khác). 3. HƯỚNG PHÁT TRIỂN ƒ Lý thuyết: - Giới thiệu thêm các bài tốn khác trong tài chính. - Trình bày đầy đủ các hàm trong hộp cơng cụ tài chính ƒ Chương trình: - Tạo mơ hình dữ liệu lưu các cơng thức tính do người dùng nhập vào nhằm tạo sự linh động khi tính tốn. - Bổ sung một số định dạng lưu trữ dữ liệu khác như: MySQL, Oracle….. - Cho phép lọc dữ liệu vào và ra. - Thiết kế giao diện thân thiện hơn. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 92 /116 PHỤ LỤC (1) Hướng dẫn cài đặt Matlab: 1. Yêu cầu hệ thống: ( MATLAB 7.3) ƒ Ổ đĩa CD-ROM (để cài đặt từ CD) hoặc DVD. ƒ Hệ điều hành: Windows XP, Windows 2000 (Service Pack 3 hoặc 4), Windows Server 2003. ƒ Bộ vi xử lý : Intel Pentium III, IV, Xeon, Pentium M hoặc AMD Athlon, Athlon XP, Athlon MP, Opteron. ƒ Dung lượng RAM : 512 MB (tối thiểu), 1024 MB (đề nghị). ƒ Dung lượng đĩa cứng cần thiết : 460 MB (chỉ cài đặt MATLAB và Help), nếu cài đặt đầy đủ cần khoảng 4377MB. ƒ Card đồ họa : hỗ trợ OpenGL 16-,24-, hoặc 32-bit. 2. Cách cài đặt MATLAB 7.3 (phiên bản R2006b) trên Windows từ CD: ƒ Cho đĩa CD1 vào ổ đĩa CD – ROM, trình cài đặt The MathWorks Installer sẽ tự chạy, hiển thị hộp hội thoại Welcome to the MathWorks Installer như sau: ƒ Hộp thoại sau xuất hiện yêu cầu điền các thơng tin cần thiết cho việc cài đặt. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 93 /116 ƒ Đọc software licensing agreement, chọn Yes và click vào nút Next. ƒ Chọn chế độ cài đặt là Typical hoặc Custom và click Next. ƒ Nếu chọn kiểu cài đặt là Custom thì hộp thoại sau xuất hiện cho phép ta chọn các tool cần cài đặt và click Next. ƒ Chọn nơi cài đặt Matlab và click Next. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 94 /116 ƒ Chọn Intall để cài đặt chương trình. ƒ Sau khi cài đặt xong, hộp thoại sau xuất hiện. (2) Hộp cơng cụ tài chính: 2.1. Biến đổi ma trận 9 Cú pháp: - tsmat = fts2mat(tsobj) - tsmat = fts2mat(tsobj, datesflag) - tsmat = fts2mat(tsobj, seriesnames) - tsmat = fts2mat(tsobj, datesflag, seriesnames) 9 Mơ tả : Lấy chuỗi dữ liệu trong đối tượng FTS và đặt chúng vào ma trận cột. Thứ tự các cột giống thứ tự của chuỗi dữ liệu trong đối tượng FTS. 9 Các đối số : - tsobj: Đối tượng FTS. - datesflag( Tùy chọn ): ‚ datesflag = 0 (mặc định) Khơng chứa ngày. ‚ datesflag = 1 chứa vectơ ngày. - seriesnames( Tùy chọn ): Chỉ rõ chuỗi dữ liệu trong ma trận. Cĩ thể là mảng các chuỗi. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 95 /116 2.2. Kết hợp các đối tượng FTS 9 Cú pháp: newfts = merge(fts1, fts2, ..., Method, RefObj) 9 Mơ tả: Kết hợp các đối tượng FTS. Đối số Method xác định giá trị chứa trong đối tượng FTS trả về. 9 Các đối số - fts1, fts2, ...: Danh sách các đối tượng FTS cần tích hợp, được ngăn cách bởi dấu phẩy. Chú ý: Thứ tự nhập vào quyết định dữ liệu ra. Những ngày giống nhau và dữ liệu tương ứng của đối tượng sau bị loại bỏ. - Method(tùy chọn): Phương pháp tích hợp. ‚ 'union' hoặc 'u' (Mặc định): Trả về các giá trị kết hợp của tất cả đối tượng. ‚ 'intersection' hoặc 'i': Trả về các giá trị chung cho các đối tượng. ‚ 'reftime' hoặc 'r': Sắp xếp tất cả các giá trị đến một thời điểm liên quan trong RefObj. - RefObj( Tùy chọn ): Vectơ thời gian của đối tượng FTS được sử dụng như thời gian tham khảo. 9 Ví dụ: Tạo 3 đối tượng FTS và kết hợp chúng vào một đối tượng duy nhất. >> dates = {'jan-01-2001'; 'jan-03-2001' }; >> data = [1; 1]; >> t1 = fints(dates, data); >> dates = { 'jan-03-2001'; 'jan-04-2001'}; >> data = [2; 2]; >> t2 = fints(dates, data); >> dates = {'jan-03-2001';'jan-05-2001'}; >> data = [3; 3]; >> t3 = fints(dates, data); >> t123 = merge(t1, t2, t3) ; >> ans = desc: || || freq: Unknown (0) 'dates: (4)' 'series1: (4)' '01-Jan-2001' [ 1] '03-Jan-2001' [ 1] '04-Jan-2001' [ 2] '05-Jan-2001' [ 3] SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 96 /116 2.3. Các hàm số học Hàm Ý nghĩa horzcat Nối các đối tượng FTS theo chiều ngang. vertcat Nối các đối tượng FTS theo chiều dọc. minus Trừ FTS. times Nhân FTS. rdivide Chia FTS. mtimes Nhân ma trận FTS. mrdivide Chia ma trận FTS. power Lũy thừa đối tượng FTS. 9 horzcat: ƒ Mơ tả: Các đối tượng FTS phải chứa ngày và thời gian giống nhau chính xác. Khi nhiều chuỗi dữ liệu chỉ tên xuất hiện, việc kết hợp sẽ thêm một hậu tố _objectname, với n là một số cho biết vị trí của chuỗi thời gian trong câu lệnh kết nối từ trái sang phải. n chỉ xuất hiện khi cĩ nhiều chuỗi dữ liệu chỉ tên. Các field miêu tả cũng được kết nối. Chúng được phân cách bởi //. ƒ Ví dụ: Xây dựng 3 đối tượng FTS, mỗi đối tượng chứa một chuỗi dữ liệu cĩ tên DataSeries: >> firstfts = fints((today:today+1)', (1:2)','DataSeries','d'); >> secondfts = fints((today:today+1)', (11:12)','DataSeries','d'); >> thirdfts = fints((today:today+1)', (21:22)','DataSeries','d'); >> newfts = [firstfts secondfts thirdfts secondfts]; >> newfts = desc: // // // freq: Daily (1) Columns 1 through 2 'dates: (2) ' 'DataSeries_firstfts' ' ' ': (2) ' '10-Dec-2006' [ 1] '11-Dec-2006' [ 2] Columns 3 through 4 'DataSeries_secondft' 'DataSeries_thirdfts' 's2: (2) ' ': (2) ' [ 11] [ 21] SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 97 /116 [ 12] [ 22] Column 5 'DataSeries_secondft' 's4: (2) ' [ 11] [ 12] 9 vertcat: ƒ Mơ tả: Đối tượng được kết nối khơng cần phải cĩ thời gian trùng khớp. Các field miêu tả cũng được kết nối. Chúng được ngăn cách bởi ||. Khi freq khác nhau thì thuộc tính freq xuất ra cĩ giá trị là Unknown(0). ƒ Ví dụ: >> myfts = fints((today:today+1)', (1:2)', 'DataSeries', 'd'); >> yourfts = fints((today+2:today+3)', (11:12)', 'DataSeries', 'd'); >> newfts1 = [myfts; yourfts]; >> newfts1 = desc: || freq: Daily (1) 'dates: (10)' 'DataSeries: (4)' '10-Dec-2006' [ 1] '11-Dec-2006' [ 2] '12-Dec-2006' [ 11] '13-Dec-2006' [ 12] 9 plus: ƒ Cú pháp: - newfts = tsobj_1 + tsobj_2 - newfts = tsobj + array - newfts = array + tsobj ƒ Mơ tả: Hai phải cùng ngày và chuỗi dữ liệu chỉ tên, thứ tự khơng cần giống nhau. Thứ tự của chuỗi dữ liệu khi một FTS được cộng với một FTS khác theo sau thứ tự của đối tượng đầu tiên. ƒ Các đối số - tsobj_1, tsobj_2: Một cặp đối tượng FTS. - array: Giá trị hoặc mảng vơ hướng với số hàng bằng số hàng của thuộc tính ngày trong tsobj và số cột bằng với số chuỗi dữ liệu trong tsobj. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 98 /116 ƒ Ví dụ: >> newfts = first + second >> newfts = desc: (none) freq: Daily (1) 'dates: (5)' 'DataSeries: (5)' '10-Dec-2006' [ 12] '11-Dec-2006' [ 14] '12-Dec-2006' [ 16] '13-Dec-2006' [ 18] '14-Dec-2006' [ 20] 9 minus: ƒ Cú pháp: - newfts = tsobj_1 - tsobj_2 - newfts = tsobj – array - newfts = array – tsobj ƒ Mơ tả: Hai đối tượng phải cùng ngày và chuỗi dữ liệu chỉ tên, thứ tự khơng cần giống nhau. Thứ tự của chuỗi dữ liệu khi một FTS bị trừ bởi một FTS khác theo sau thứ tự của đối tượng đầu tiên. ƒ Ví dụ >> newfts = first – second >> newfts = desc: (none) freq: Daily (1) 'dates: (5)' 'DataSeries: (5)' '10-Dec-2006' [ -10] '11-Dec-2006' [ -10] '12-Dec-2006' [ -10] '13-Dec-2006' [ -10] '14-Dec-2006' [ -10] ƒ Các đối số - tsobj_1, tsobj_2: Một cặp đối tượng FTS. - array: Giá trị hoặc mảng vơ hướng với số hàng bằng số hàng của thuộc tính ngày trong tsobj và số cột bằng với số chuỗi dữ liệu trong tsobj. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 99 /116 9 times: ƒ Cú pháp: - newfts = tsobj_1 .* tsobj_2 - newfts = tsobj .* array - newfts = array .* tsobj ƒ Mơ tả : Hai đối tượng phải cùng ngày và cùng chuỗi dữ liệu chỉ tên, thứ tự khơng cần giống nhau. Thứ tự của chuỗi dữ liệu khi đối tượng được nhân bởi một đối tượng khác theo sau thứ tự của đối tượng đầu tiên. ƒ Các đối số - tsobj_1, tsobj_2: Một cặp đối tượng FTS. - array: Giá trị hoặc mảng vơ hướng với số hàng bằng số hàng của thuộc tính ngày trong tsobj và số cột bằng với số chuỗi dữ liệu trong tsobj. ƒ Ví dụ: >> newfts = first.* second >> newfts = desc: (none) freq: Daily (1) 'dates: (5)' 'DataSeries: (5)' '11-Dec-2006' [ 11] '12-Dec-2006' [ 24] '13-Dec-2006' [ 39] '14-Dec-2006' [ 56] '15-Dec-2006' [ 75] 9 rdivide: ƒ Cú pháp: - newfts = tsobj_1 ./ tsobj_2 - newfts = tsobj ./ array - newfts = array ./ tsobj ƒ Mơ tả :Hai đối tượng phải cùng ngày và cùng chuỗi dữ liệu chỉ tên, thứ tự khơng cần giống nhau. Thứ tự của chuỗi dữ liệu khi đối tượng bị chia bởi một đối tượng khác theo sau thứ tự của đối tượng đầu tiên. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 100 /116 ƒ Các đối số - tsobj_1, tsobj_2: Một cặp đối tượng FTS. - array: Giá trị hoặc mảng vơ hướng với số hàng bằng số hàng của thuộc tính ngày trong tsobj và số cột bằng với số chuỗi dữ liệu trong tsobj. ƒ Ví dụ: >> newfts = first ./ second >> newfts = desc: (none) freq: Daily (1) 'dates: (5)' 'DataSeries: (5)' '11-Dec-2006' [ 0.0909] '12-Dec-2006' [ 0.1667] '13-Dec-2006' [ 0.2308] '14-Dec-2006' [ 0.2857] '15-Dec-2006' [ 0.3333] 9 mtimes : - newfts = tsobj_1 * tsobj_2 - newfts = tsobj * array - newfts = array * tsobj Chú ý: Đối với đối tượng FTS, hàm mtimes giống hệt như hàm times. 9 mrdivide : - newfts = tsobj_1 / tsobj_2 - newfts = tsobj / array - newfts = array / tsobj Chú ý: Đối với đối tượng FTS, hàm mrdivide giống hệt như hàm rdivide 9 Lũy thừa: ƒ Cú pháp: - newfts = tsobj .^ array - newfts = array .^tsobj - newfts = tsobj_1 .^ tsobj_2 ƒ Mơ tả: Nâng tương ứng tất cả các giá trị trong chuỗi dữ liệu của đối tượng FTS tới lũy thừa được chỉ rõ bởi giá trị của mảng. Kết quả trả về trong một đối tượng FTS mới. Đối tượng này chứa chuỗi dữ liệu chỉ tên giống như đối tượng FTS trước. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 101 /116 ƒ Các đối số - tsobj: Đối tượng FTS. - tsobj_1, tsobj_2: Một cặp đối tượng FTS. - array: Giá trị hoặc mảng vơ hướng với số hàng bằng số hàng của thuộc tính ngày trong tsobj và số cột bằng với số chuỗi dữ liệu trong tsobj. ƒ Ví dụ: >> newfts = first .^ array >> newfts = desc: (none) freq: Daily (1) 'dates: (5)' 'DataSeries: (5)' '11-Dec-2006' [ 1] '12-Dec-2006' [ 32] '13-Dec-2006' [ 243] '14-Dec-2006' [ 1024] '15-Dec-2006' [ 3125] 2.4. Các hàm tốn học Hàm Ý nghĩa exp Tính giá trị số mũ theo cơ số e hist Vẽ biểu đồ log Tính giá trị loga theo cơ số e max Giá trị lớn nhất mean Tính giá trị trung bình cộng std Tính độ lệch chuẩn 9 exp: ƒ Cú pháp: newfts = exp(tsobj) ƒ Mơ tả: Tính giá trị số mũ theo cơ số e cho tất cả các giá trị trong chuỗi giá trị của đối tượng FTS tsobj và trả kết quả trong đối tượng FTS newfts. ƒ Ví dụ: >> newfts = exp(firstfts) >> newfts = desc: EXP of freq: Daily (1) 'dates: (5)' 'DataSeries: (5)' '11-Dec-2006' [ 2.7183] SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 102 /116 '12-Dec-2006' [ 7.3891] '13-Dec-2006' [ 20.0855] '14-Dec-2006' [ 54.5982] '15-Dec-2006' [ 148.4132] 9 hist: ƒ Cú pháp: - hist(tsobj, numbins) - ftshist = hist(tsobj, numbins) - [ftshist, binpos] = hist(tsobj, numbins) ƒ Các đối số - tsobj: Đối tượng FTS. - numbins( Tùy chọn ): Số thanh của biểu đồ. Mặc định = 10. ƒ Ví dụ: >> hist(first) 9 log: ƒ Cú pháp: newfts = log(tsobj) ƒ Mơ tả: Tính giá trị loga theo cơ số e cho các giá trị trong đối tượng FTS tsobj và trả kết quả trong đối tượng FTS newfts. ƒ Ví dụ: >> newfts = log(first) >> newfts = desc: LOG of freq: Daily (1) 'dates: (5)' 'DataSeries: (5)' '11-Dec-2006' [ 0] '12-Dec-2006' [ 0.6931] '13-Dec-2006' [ 1.0986] '14-Dec-2006' [ 1.3863] '15-Dec-2006' [ 1.6094] Chú ý: Các hàm log2, log10 tương tự. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 103 /116 9 tsmax: ƒ Cú pháp: tsmax = max(tsobj) Chú ý: tsmax chỉ trả về giá trị và khơng trả về ngày liên quan với giá trị. Giá trị lớn nhất khơng cần ngày phải giống nhau. ƒ Ví dụ: >> tsmax = max(first) >> tsmax = DataSeries: 5 Chú ý: Hàm min tương tự 9 mean: ƒ Cú pháp: tsmean = mean(tsobj) ƒ Ví dụ: >> tsmean = mean(first) >> tsmean = DataSeries: 3 9 std: ƒ Cú pháp: - tsstd = std(tsobj) - tsstd = std(tsobj, flag) ƒ Các đối số - tsobj: Đối tượng FTS - flag( Tùy chọn ): Các nhân tố bình thường hĩa: ‚ flag = 1: Bình thường hĩa bởi n( số dữ liệu tìm thấy). ‚ flag = 0: Bình thường hĩa bởi n-1 ƒ Ví dụ: >> tsstd = std(first) >> tsstd = DataSeries: 1.5811 2.5. Các hàm tiện ích Hàm Ý nghĩa chfield Thay đổi tên chuỗi dữ liệu extfiel Trích chuỗi dữ liệu fetch Trích dữ liệu từ đối tượng FTS fieldnames Lấy tên field freqnum Chuyển chuỗi chỉ tính thường xuyên thành số getnameidx Tìm tên trong danh sách rmfield Xĩa chuỗi dữ liệu sortfts Sắp xếp FTS SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 104 /116 9 chfield: ƒ Cú pháp: newfts = chfield(oldfts, oldname, newname) ƒ Mơ tả: - Đổi tên của thành phần đối tượng FTS từ oldname thành newname. - Gán newfts = oldfts để đổi tên của một thành phần đã tồn tại mà khơng phải thay đổi tên của đối tượng FTS. - Để đổi tên đồng thời nhiều thành phần cần chỉ rõ chuỗi của đối tượng cũ và tên thành phần mới trong mảng cột tương ứng. - Khơng thể đổi tên của desc, freq, dates. ƒ Các đối số: - oldfts: Tên của đối tượng FTS hiện hành. - oldname: Tên thành phần hiện hành trong oldfts. Một chuỗi MatLab hay một mảng cột. - newname: Tên mới cho thành phần trong oldfts. Một chuỗi MatLab hay một mảng cột. ƒ Ví dụ: >> newfts = chfield(first, 'DataSeries', 'DataSeries1') >> newfts = desc: (none) freq: Daily (1) 'dates: (5)' 'DataSeries1: (5)' '11-Dec-2006' [ 1] '12-Dec-2006' [ 2] '13-Dec-2006' [ 3] '14-Dec-2006' [ 4] '15-Dec-2006' [ 5] 9 extfield: ƒ Cú pháp: ftse = extfield(tsobj, fieldnames) ƒ Mơ tả: Trích từ tsobj ngày và chuỗi dữ liệu được xác định bởi fieldnames vào đối tượng FTS ftse. ftse cĩ tất cả các ngày trong tsobj nhưng chứa số chuỗi dữ liệu nhỏ hơn. ƒ Các đối số: - tsobj: Đối tượng FTS. - fieldnames: Chuỗi dữ liệu được trích. Là một mảng nếu một danh sách tên các chuỗi dữ liệu được cung cấp. Là một chuỗi nếu chỉ một tên chuỗi dữ liệu được yêu cầu. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 105 /116 ƒ Ví dụ: >> ftse = extfield(first, 'DataSeries') >> ftse = desc: (none) freq: Daily (1) 'dates: (5)' 'DataSeries: (5)' '11-Dec-2006' [ 1] '12-Dec-2006' [ 2] '13-Dec-2006' [ 3] '14-Dec-2006' [ 4] '15-Dec-2006' [ 5] 9 fetch: ƒ Cú pháp: newfts = fetch(oldfts, StartDate, StartTime, EndDate, EndTime, delta, dmy_specifier, time_ref) ƒ Mơ tả: Yêu cầu dữ liệu của một đối tượng FTS bắt đầu từ ngày bắt đầu và/hoặc thời gian bắt đầu đến ngày kết thúc và/hoặc thời gian kết thúc, bỏ qua số ngày, tháng, năm. ƒ Các đối số: - oldfts: Đối tượng FTS hiện tại. - StartDate: Ngày đầu tiên trong mảng dữ liệu được trích. - StartTime: Thời gian bắt đầu mỗi ngày. Nếu khơng cần thời gian cụ thể hoặc oldfts khơng chứa thời gian thì dùng []. Nếu StartTime xác định thì cũng phải xác định EndTime. - EndDate: Ngày cuối trong mảng dữ liệu được trích. - EndTime: Thời gian kết thúc vào mỗi ngày. Nếu thời gian khơng xác định hoặc oldfts khơng chứa thơng tin thời gian thì dùng “[]”. Nếu EndTime xác định thì StartTime cũng phải xác định. - delta: Nhảy qua khoảng thời gian giữa.Cĩ thể là bất kỳ số nguyên dương. Đơn vị cho khoảng thời gian bỏ qua được xác định bởi dmy_specifier. - dmy_specifier: Xác định đơn vị cho delta. ‚ D, d ( Ngày ) ‚ M, m ( Tháng ) ‚ Y, y ( Năm ) - time_ref: Khoảng thời gian tham khảo hay thời gian rõ ràng. Khoảng thời gian tham khảo hợp lý là 1, 5, 15, 60 phút. Nhập vào thời gian xác định như 'hh:mm'. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 106 /116 ƒ Ví dụ: >>dates2 = ['01-Jan-2001';'01-Jan-2001'; '01-Jan-2001';... '02-Jan-2001'; '02-Jan-2001';'02-Jan-2001']; >>times2 = ['11:00';'11:05';'11:06';'12:00';'12:05';'12:06']; >>dates_times2 = cellstr([dates2, repmat(' ',size(dates2,1),1), times2]); >>myFts2 = fints(dates_times2,(1:6)',{'Data1'},1,'My second FINTS') >> fetch(myFts2,'01-Jan-2001',[],'02-Jan-2001',[],1,'d',... {'11:06';'12:06'}) >> ans = desc: My second FINTS freq: Daily (1) 'dates: (2)' 'times: (2)' 'Data1: (2)' '01-Jan-2001' '11:06' [ 3] '02-Jan-2001' '12:06' [ 6] 9 fieldnames: ƒ Cú pháp: fnames = fieldnames(tsobj) ƒ Mơ tả: Trả về tên field liên quan với đối tượng FTS tsobj như một mảng các chuỗi, bao gồm các field thơng thường: desc, freq, dates( và thời gian nếu tồn tại ). ƒ Ví dụ: >> fnames = fieldnames(first) >> fnames = 'desc' 'freq' 'dates' 'DataSeries' ƒ Các đối số: - tsobj: Đối tượng FTS. - srsnameonly: Các tên field trả về: ‚ = 0( mặc định ): trả về tất cả các tên field. ‚ = 1: chỉ trả về tên chuỗi dữ liệu. Chú ý: Hàm fnames = fieldnames(tsobj, srsnameonly) tương tự. 9 freqnum: ƒ Cú pháp: nfreq = freqnum(sfreq) ƒ Mơ tả: Chuyển một chuỗi chỉ tính thường xuyên thành số. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 107 /116 Chú ý: Hàm sfreq = freqstr(nfreq) ngược lại. ‚ Các giá trị: sfreq nfreq UNKNOWN, Unknown, unknown, U, u 0 DAILY, Daily, daily, D, d 1 WEEKLY, Weekly, weekly, W, w 2 MONTHLY, Monthly, monthly, M, m 3 QUARTERLY, Quarterly, quarterly, Q, q 4 SEMIANNUAL, Semiannual, semiannual, S, s 5 ANNUAL, Annual, annual, A, a 6 ƒ Ví dụ: >> nfreq = freqnum('w') >> nfreq = 2 9 getnameidx : ƒ Cú pháp: nameidx = getnameidx(list, name) ƒ Mơ tả: Nếu name là một mảng các tên thì getnameidx trả về vectơ chứa thứ tự của các tên trong danh sách. Nếu khơng tìm thấy tên nào trong danh sách thì nĩ trả về 0. Nếu một vài tên khơng tìm thấy thì thứ tự tương ứng bằng 0. Hàm chỉ nhận tên đầu tiên trong danh sách cĩ các tên giống nhau. Hàm này dùng cho tên trong danh sách là duy nhất. ƒ Các đối số: - list: Một mảng các chuỗi tên. - name: Một chuỗi hay một mảng các chuỗi tên. ƒ Ví dụ: >> poultry = {'duck', 'goose', 'chicken'} >> animals = {'duck', 'cow', 'duck', 'chicken', 'horse', 'chicken'} >> nameidx = getnameidx(animals, poultry) >> nameidx = 1 0 4 9 rmfield : ƒ Cú pháp: fts = rmfield(tsobj, fieldname) ƒ Mơ tả: Xĩa chuỗi dữ liệu fieldname và nội dung của nĩ từ đối tượng FTS tsobj. SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 108 /116 ƒ Các đối số: - tsobj: Đối tượng FTS. - fieldname: Mảng chứa tên các chuỗi để xĩa một chuỗi đơn ra khỏi đối tượng. Mảng các chuỗi dữ liệu để xĩa nhiều chuỗi dữ liệu ra khỏi đối tượng cùng một lúc. 9 sortfts: ƒ Cú pháp - sfts = sortfts(tsobj) - sfts = sortfts(tsobj, flag) - sfts = sortfts(tsobj, seriesnames, flag) - [sfts, sidx] = sortfts(...) ƒ Mơ tả: Sắp xếp đối tượng FTS tsobj. theo thứ tự tăng dần chỉ dựa vào vectơ ‘dates’ nếu tsobj khơng chứa thời gian. Nếu cĩ thì phải sắp xếp dựa trên sự kết hợp của vectơ ‘dates’ và ‘times’. Vectơ ‘times’ khơng thể sắp xếp riêng biệt. ƒ Các đối số - tsobj:Đối tượng FTS. - flag( Tùy chọn ): Xác định thứ tự sắp xếp: ‚ flag = 1( mặc định ): thứ tự tăng dần. ‚ flag = -1: thứ tự giảm dần. - seriesnames( Tùy chọn ): Chuỗi chứa một tên chuỗi dữ liệu hay mảng chứa danh sách các tên chuỗi dữ liệu. ƒ Ví dụ: >> sfts1 = sortfts(first, -1) >> sfts = sortfts(sfts1) >> sfts = desc: (none) freq: Daily (1) 'dates: (5)' 'DataSeries: (5)' '11-Dec-2006' [ 1] '12-Dec-2006' [ 2] '13-Dec-2006' [ 3] '14-Dec-2006' [ 4] '15-Dec-2006' [ 5] SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 109 /116 2.6. Biến đổi dữ liệu Hàm Ý nghĩa peravg Tính mức trung bình định kỳ smoothts Dữ liệu trơn tsmovavg Tính độ dịch chuyển trung bình và độ trung bình dịch chuyển cĩ trọng số 9 peravg: ƒ Cú pháp: avgfts = peravg(tsobj, numperiod) ƒ Mơ tả: Trả về một cấu trúc avgfts chứa mức trung bình định kỳ( cho mỗi kỳ numperiod ) của đối tượng FTS. avgfts cĩ các tên field giống với tên chuỗi dữ liệu của tsobj. ƒ Các đối số: - tsobj: Đối tượng FTS. - numperiod: Số nguyên xác định số điểm dữ liệu dùng để tính trung bình cho mỗi mức trung bình định kỳ - daterange: Khoảng thời gian dùng để tính trung bình. ƒ Ví dụ: >> avgfts = peravg(first, 2) >> avgfts = DataSeries: [1.5000 3.5000 5] ™ Chú ý: Hàm avgfts = peravg(tsobj, daterange) tương tự Ví dụ: >> avgfts = peravg(first, '13-Dec-2006::16-Dec-2006') >> avgfts = DataSeries: 2.5000 9 smoothts: ƒ Cú pháp: output = smoothts(input, 'e', n) ƒ Mơ tả: Làm trơn dữ liệu vào dùng phương pháp Exponential. n cĩ thể đại diện cho kích thước cửa sổ( window size)( khoảng thời gian ) hoặc alpha. Nếu n>1 thì n đại diện cho kích thước cửa sổ(window size). Nếu 0< n<1 thì n đại diện cho alpha mà 1 2 += wsizeα . Nếu input là FTS thì output là FTS giống hệt nhưng loại trừ nội dung. Nếu input là ma trận hàng thì output là ma trận hàng cùng cỡ. ƒ Ví dụ: >> a = [1 2 3 4 5; 4 5 6 7 8 ]; >> output = smoothts(a, 'e', 0.5) >> output = 1.0000 1.5000 2.2500 3.1250 4.0625 4.0000 4.5000 5.2500 6.1250 7.0625 SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 110 /116 9 tsmovavg: Độ dịch chuyển trung bình đơn giản ƒ Cú pháp: - output = tsmovavg(tsobj, 's', lag) - output = tsmovavg(vector, 's', lag, dim) ƒ Mơ tả: Tính độ dịch chuyển trung bình. lag chỉ số điểm dữ liệu trước được dùng chung dữ liệu hiện tại khi tính độ dịch chuyển trung bình. ƒ Ví dụ: >> output = tsmovavg(first, 's', 2) >> output = desc: (none) freq: Daily (1) 'dates: (5)' 'DataSeries: (5)' '13-Dec-2006' [ NaN] '14-Dec-2006' [ 1.5000] '15-Dec-2006' [ 2.5000] '16-Dec-2006' [ 3.5000] '17-Dec-2006' [ 4.5000] 9 tsmovavg: Độ dịch chuyển trung bình cĩ trọng số ƒ Cú pháp: - output = tsmovavg(tsobj, 'w', weights) - output = tsmovavg(vector, 'w', weights, dim) ƒ Mơ tả: Tính độ dịch chuyển trung bình cĩ trọng số bằng cách cung cấp các trọng số cho mỗi yếu tố trong cửa sổ dịch chuyển. Chiều dài của vectơ trọng số xác định kích cỡ cửa sổ. Nếu các trọng số lớn hơn được dùng cho nhiều giá gần đây và các trọng số nhỏ hơn dùng cho giá trước đĩ thì xu hướng thuận lợi hơn cho thị trường chứng khốn gần đây. ƒ Các đối số - tsobj: Đối tượng FTS. - lag: Số điểm dữ liệu trước. - vector: Vectơ hàng hay ma trận hàng. Mỗi hàng là một bộ quan sát. - dim( Tùy chọn ): Chỉ rõ chiều khi đầu vào là vectơ hoặc ma trận. Mặc định là 2( Ma trận hàng: mỗi hàng là một biến và mỗi cột là một bộ quan sát ). Nếu dim = 1 thì đầu vào là vectơ cột hoặc ma SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 111 /116 trận cột( mỗi cột là một biến và mỗi hàng là một bộ quan sát). output giống định dạng của đầu vào. weights: Trọng số của các yếu tố. ƒ Ví dụ: >> output = tsmovavg(first, 'w', [3 2 1]) >> output = desc: (none) freq: Daily (1) 'dates: (5)' 'DataSeries: (5)' '13-Dec-2006' [ NaN] '14-Dec-2006' [ NaN] '15-Dec-2006' [ 1.6667] '16-Dec-2006' [ 2.6667] '17-Dec-2006' [ 3.6667] 2.7. Vẽ đồ thị Hàm Ý nghĩa bar Vẽ biểu đồ dạng bar, barh chartfts Hiển thị tương tác 9 bar: ƒ Cú pháp: - bar(tsobj) - bar(tsobj, width) - bar(..., 'style') - hbar = bar(...) ƒ Mơ tả: Vẽ các cột chuỗi dữ liệu của tsobj. Số chuỗi dữ liệu quyết định số cột đứng trong mỗi nhĩm. Mỗi nhĩm là dữ liệu cho một ngày riêng biệt. ƒ Các đối số - tsobj: Đối tượng FTS. - width: Độ rộng của cột và khoảng cách giữa các cột trong một nhĩm. Mặc định là 0.8. Nếu width =1 thì các cột trong một nhĩm đụng lẫn nhau. Nếu width >1 tạo ra các cột chồng lấp. - style: ‘grouped’( mặc định ) hoặc ‘stacked’ Chú ý: - Hàm barh(...) và hàm hbarh = barh(...) tương tự nhưng vẽ theo chiều ngang. - Các hàm bar3, bar3h tương tự như bar, barh SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 112 /116 9 chartfts: ƒ Cú pháp: chartfts(tsobj) ƒ Mơ tả: Tạo một khung hình chứa một hoặc nhiều biểu đồ. Cĩ thể dùng chuột để xem dữ liệu tại một điểm thời gian riêng biệt trên biểu đồ. ƒ Ví dụ: >> ibmfts = ascii2fts('ibm9599.dat.txt', 1, 3, 2); >> chartfts(ibmfts) (3) Các LineSpec (Line Specification): Matlab cho phép ta định nghĩa bất kỳ đặc tính nào của các đường (line) dùng cho việc vẽ đồ thị, hình ảnh,…Bao gồm kiểu đường (line style), độ rộng của đường (line width), màu (color), kiểu vạch dấu (marker type), kích thước vạch dấu (marker size), bề mặt vạch dấu và màu cạnh (dùng cho các vạch dấu được tơ đặc). Sau đây là một số đặc tính của đường được Matlab cung cấp: " Kiểu đường: Chỉ định Kiểu đường - Đường liền (mặc định) -- Đường gạch ngang : Đường chấm -. Đường gạch chấm " Vạch dấu (kiểu ký hiệu dánh dấu điểm dữ liệu): Chỉ định Kiểu vạch dấu + Kiểu dấu cộng o Hình trịn * Dấu hoa thị . Điểm x Dấu thập SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 113 /116 square hoặc s Hình vuơng diamond hoặc d Hình kim cương (thoi) ^ Tam giác hướng lên v Tam giác hướng xuống > Tam giác hướng phải < Tam giác hướng trái pentagram hoặc p Ngơi sao 5 cánh hexagram hoặc h Ngơi sao 6 cánh none Khơng cĩ vạch dấu (mặc định) " Bảng màu ColorSpec: Giá trị RGB Tên tắt Tên đầy đủ Màu [1 1 0] y yellow Vàng [1 0 1] m magenta Đỏ tươi [0 1 1] c cyan Lục lam [1 0 0] r red Đỏ [0 1 0] g green Xanh lá [0 0 1] b blue Xanh [1 1 1] w white Trắng [0 0 0] k black Đen Ví dụ: t = 0:pi/20:2*pi; plot(t,sin(t),'-.r*') hold on plot(t,sin(t-pi/2),'--mo') plot(t,sin(t-pi),':bs') hold off SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 114 /116 >> plot(t,sin(2*t),'-mo',... 'LineWidth',2,... 'MarkerEdgeColor','k',... 'MarkerFaceColor',[.49 1 .63],... 'MarkerSize',12) (4) Các định dạng ngày tháng (DateForm): DateForm Định dạng Ví dụ 0 'dd-mmm-yyyy HH:MM:SS' 01-Mar-2000 15:45:17 1 'dd-mmm-yyyy' 01-Mar-2000 2 'mm/dd/yy' 03/01/00 3 'mmm' Mar 4 'm' M 5 'mm' 03 6 'mm/dd' 03/01 7 'dd' 01 8 'ddd' Wed 9 9 'd' W10 10 'yyyy' 2006 11 'yy' 06 12 'mmmyy' Mar06 13 'HH:MM:SS' 15:45:17 14 'HH:MM:SS PM' 3:45:17 PM 15 'HH:MM' 15:4516 16 'HH:MM PM' 3:45 PM 17 'QQ-YY' Q1-01 18 'QQ' Q1 SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 115 /116 19 'dd/mm' 01/03 20 'dd/mm/yy' 01/03/06 21 'mmm.dd.yyyy HH:MM:SS' Mar.01,2000 15:45:17 22 'mmm.dd.yyyy' Mar.01.2006 23 'mm/dd/yyyy' 03/01/2006 24 'dd/mm/yyyy' 01/03/2006 25 'yy/mm/dd' 06/03/01 'yyyy/mm/dd' 2006/03/01 27 'QQ-YYYY' Q1-2006 28 'mmmyyyy' Mar2006 SVTH: Nguyễn Thị Cẩm Nhân–02ĐHTH143 Nguyễn Thị Hồng Nhi–02ĐHTH150 Trang 116 /116 TÀI LIỆU THAM KHẢO Sách và Ebooks: [1] David F. Griffiths, An Introduction to Matlab version 2.3, The University Dundee, 2005. [2] The Math Work, Getting Started with Matlab. [3] Alex F. Bielajew, Introduction to Computers and Programming using C++ and MATLAB, The University of Michigan, 2005. [4] Đinh Đức Anh Vũ, Giới thiệu sơ lược vển ngơn ngữ Matlab, Trường ĐH Bách Khoa TpHCM, 2004. [5] PGS.TS Tạ Duy Liêm, Cơ sở Matlab và Ứng dụng, NXB Khoa học và Kỹ thuật, Hà Nội, 2005. [6] Tiến sĩ Lại Tiến Dĩnh, Tốn Tài Chính, NXB Thống Kê, 2002 [7] Tiến sĩ Trương Mỹ Dung, SOFTWARE APPLICATIONS TO CONOMICS, NXB Tổng Hợp Tp HCM, 2005 [8] The Math Work, MATLAB Help của MATLAB version 7.3 [9] Kevin Sheppard, Financial Econometrics MFE Matlab Notes, University of Oxford, 8/10/2006 [10] La Văn Hiển, Nhập mơn MATLAB Access, NXB Đại Học Quốc Gia Tp.HCM, 2003 [11] Pascal Getreuer, Writing Fast MATLAB Code, 6/2006 [12] Dmitrii S. Silvestrov and Anatoliy A. Malyarenko, An Introduction to Financial Mathematics with MATLAB, Research Report, 2001. Websites: [1] www.mathwork.com [2] www.codeproject.com [3] www.msdn.microsoft.com [4] www.en911.com [5] www.templateen.com [6] www.c-sharpcorner.com ._.

Các file đính kèm theo tài liệu này:

  • pdfBaoCao LVTN_Khoa2002.pdf
  • mdfToanTaiChinh_Data.MDF
  • ldfToanTaiChinh_Log.LDF