Tư duy theo Matlab

Matlab là một môi trường lập trình tính toán số. Tên gọi này lấy từ cụm từ "MATrix LABoratory", hay "phòng thí nghiệm ma trận". Như vậy có thể nói, cốt lõi của Matlab chính là làm việc trên ma trận. Trong khoá học về mô phỏng Matlab này, chúng ta chủ yếu sử dụng ba khái niệm: đại lượng vô hướng, đại lượng vectorhàm số. Vậy trong Matlab, những khái niệm này được hiểu và triển khai như thế nào?

Trong vật lý, ta gặp các đại lượng vô hướng như khối lượng, thời gian, khoảng cách, độ lớn vận tốc, độ lớn gia tốc... Matlab hiểu các đại lượng vô hướng ấy như các ma trận [1\times 1]. Việc gán giá trị vô cùng đơn giản:

1
2
3
4
m = 2; % khoi luong [kg]
v = 10; % van toc [m/s]
g = 9.81; % gia toc roi tu do [m/s^2]
t = 0; % thoi gian [s]

Dấu \% dùng để viết ghi chú cho dòng lệnh, không gây ảnh hưởng đến mã lệnh. Ở ví dụ trên các ghi chú chỉ rõ tên gọi và đơn vị cho các đại lượng ta vừa khai báo. Từ đây ta cũng thấy, việc khai báo trên Matlab hết sức đơn giản, gọi ngay tên đại lượng và gián giá trị cụ thể cho nó.

Các đại lượng như vị trí, vận tốc, gia tốc... về tổng quát là những đại lượng vector. Trong không gian chúng phân biệt rõ chiều hướng. Để biểu diễn các đại lượng ấy ta dùng phương pháp toạ độ, tức bộ số có thứ tự nhất định nhằm diễn tả các thành phần vector. Trong Matlab vector được xem như một ma trận [1\times n], tức một vector hàng với n phần tử (hoặc như một ma trận [n\times 1], tức một vector cột với n phần tử). Ví dụ cách cho vector trong chuyển động trên mặt phẳng:

5
6
7
8
9
10
11
12
13
x = 0; % hoanh do [m]
y = 200% tung do [m]
vx = 10; % thanh phan van toc theo phuong ngang [m/s]
vy = 0; % thanh phan van toc theo phuong thang dung [m/s]
ax = 0; % thanh phan gia toc theo phuong ngang [m/s^2]
ay = -9.81; % thanh phan gia toc theo phuong thang dung [m/s^2]
r = [x y]; % vector chi vi tri
v = [vx vy]; % vector van toc
a = [ax ay]% vector gia toc

Các thành phần vector có thể được quy ước trước theo một hệ toạ độ nhất định. Ở ví dụ nói trên, các vector được biểu diễn theo hệ toạ độ Descartes. Trong nhiều trường hợp khác, vector có thể biểu diễn qua hệ toạ độ cực:

14
15
16
R = 1; % khoang cach den goc toa do [m]
phi = 0% tung do [m]
r = [R phi]; % vector chi vi tri

Đôi khi các vector cũng sử dụng theo phương pháp tự nhiên, ví dụ như gia tốc tiếp tuyến, gia tốc pháp tuyến:

17
18
19
at = 2; % gia toc tiep tuyen [m/s^2]
an = 3; % gia toc phap tuyen [m/s^2]
a = [at an]% vector gia toc

Trong Matlab hàm số không được định nghĩa theo phương pháp giải tích. Hàm số ở đây được hiểu như hai dãy số có cùng độ dài, một dãy tương ứng với biến số độc lập, còn dãy kia tương ứng với biến số phụ thuộc. Mỗi biến số độc lập liên kết với một biến số phụ thuộc tạo thành một điểm của hàm số:

20
21
t = [0 1 2 3 4 5]; % thoi gian
x = [0 2 4 6 8 10]; % toa do

Từ ví dụ trên ta có được hàm số x(t) với đúng 6 điểm. Để ý ta sẽ thấy nó diễn tả quy luật của một chuyển động đều với vận tốc 2 m/s không đổi:

x=2t.

Cũng từ ví dụ trên, ta cũng hiểu rằng, Matlab làm việc trên những hàm số "rời rạc", không có vẻ liên tục như các hàm giải tích quen thuộc. Thực vậy, Matlab phản ánh đúng thực tế vật lý và kĩ thuật, khi quá trình thu thập dữ liệu, thống kê, điều khiển... đều mang tính rời rạc. Dù vậy, một hàm số rời rạc nhưng có số điểm đủ lớn, nó cũng có giá trị như một hàm số giải tích. Trên thực tế, ta thường làm việc với những hàm số rời rạc có số điểm lớn hơn nhiều, có thể đến hàng trăm, hàng nghìn. Việc tạo mảng biến số độc lập t bằng phép liệt kê như dòng lệnh 20 trở nên không khả thi. Một trong những lệnh dành cho việc tạo biến số độc lập có dạng như sau:

22
t = 0:0.01:5; % thoi gian

Lệnh 22 có ý nghĩa: từ thời điểm 0 đến thời điểm 5s, ta tạo ra mảng biến số t cách đều nhau từng đoạn bằng 0.01. Bằng cách này ta đã nhanh chóng tạo ra biến số độc lập t với khoảng 500 phần tử gồm: 0, 0.01, 0.02,... , 4.99, 5.00. Ngoài ra còn có một cách tạo biến số độc lập cách đều nhau như thế nhưng thuận tiện hơn nhiều:

23
t = linspace(0,5,500); % thoi gian

Lệnh 23 có tác dụng tạo ra mảng biến số độc lập t gồm đúng 500 phần tử nằm cách đều nhau từ thời điểm 0 đến thời điểm 5s.

Biến số phụ thuộc x có thể do thu thập trực tiếp từ đo đạc thực nghiệm, cũng có thể được hình thành qua nhiều phép tính toán. Tuy vậy, môi trường Matlab cho phép tạo các biến số phụ thuộc từ các lệnh đặc biệt, mang dáng vẻ của các hàm giải tích:

24
25
x = 2*t;
y = sin(2*pi*t);

Nhưng x và y nói trên là các mảng có 500 phần tử như thời gian t, và các hàm số x(t), y(t) vừa hình thành được không phải là những hàm số giải tích!

Matlab, theo đúng nghĩa của nó, không làm việc với các hàm số liên tục, chúng luôn rời rạc.