MATLAB là một bộ phần mềm dùng để tính toán các bài toán kĩ thuật, 
đ-ợc viết bằng ngôn ngữ C do hãng Math Works Inc. sản xuất. Nó đ-ợc 
tạo trên cơ sở những phần mềm do các nhà lập trình của các dự án 
LINPACK và EISPACK viết ra bằng ngôn ngữ Fortran dùng cho việc 
thực hiện các phép tính và thao tác trên ma trận. 
Tên của phần mềm MATLAB là chữ viết tắt của ‘ matrix laboratory’ có 
nghĩa là ‘ph-ơng pháp ma trận’. Đến khi thực hành sử dụng phần mềm ta 
sẽ thấy mỗi phần tử cơ bản của MATLAB là một ma trận. 
MATLAB liên tục đ-ợc bổ sung và hoàn thiện.Thời gian gần đây hãng 
sản xuất đã cho ra phiên bản mới nhất là MATLAB 6.0. 
Matlab là một phần mềm rất mạnh, cho phép giải rất nhanh các bài toán 
phân tích số liệu, tính toán ma trận, xửlí tín hiệu, mô phỏng và tạo vẽ đồ 
thị . Lí do vì Matlab đã có một loạt các hàm chuyên giải quyết các vấn 
đề đó đ-ợc đặt trong Toolbox. Thêm nữa, Matlab lại rất dễ sử dụng: nó 
không cần khai báo biến, các câu lệnh đ-ợc viết rất gần gũi nh-khi viết 
các biểu thức toán học, tiết kiệm rất nhiều thời gian cho việc lập trình. 
Một đặc điểm nổi bật nữa của Matlab là nó có khả năng mở rộng: ng-ời 
sử dụng có thể tự sáng tạo những file hàm đặt vào Toolbox để thực hiện 
giải những baì toán trong lĩnh vực chuyên môn của mình. 
Sau một thời gian tự tìm hiểu và ứng dụng chúng tôi thấy rằng MATLAB 
là một phần mềm rất thích hợp cho việc giải các bài toán kĩ thuật trong 
nhiều lĩnh vực. Đặc biệt trong các tr-ờng Đại học kĩ thuật nó có thể giúp 
cho các cán bộ nghiên cứu và sinh viên có đ-ợc một công cụ sắc bén để 
nâng cao năng lực tính toán, tiết kiệm thời gian lập trình. 
Đó là lí do để nhóm nghiên cứu chúng tôi mạnh dạn thực hiện đề tài có 
tính chất tìm hiểu, giới thiệu và thử ứng dụng này
              
                                            
                                
            
 
            
                 60 trang
60 trang | 
Chia sẻ: oanh_nt | Lượt xem: 1632 | Lượt tải: 1 
              
            Bạn đang xem trước 20 trang nội dung tài liệu Đồ án Matlab tìm hiểu và ứng dụng giải một số bài toán kĩ thuật, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Tr−ờng đạI học giao thông vận tảI 
thuyết minh 
đề tàI nghiên cứu khoa học cấp tr−ờng 
matlab 
 tìm hiểu và ứng dụng 
 giải một số bài toán kĩ thuật 
Mã số : T2001- CK- 08 
 Ng−ời thực hiện : Th.S Nguyễn Bá Nghị 
 K.S Nguyễn văn Chung 
 K.S Phạm thế Minh 
 Đơn vị : Bộ môn Kĩ thuật máy 
 Khoa Cơ khí 
HANOI - 2002 
 mục lục 
 Phần 1 Giới thiệu về Matlab 
1. Bắt đầu với Matlab 
2. Các khái niệm cơ bản 
a. Câu lệnh và biến 
b. Các phép toán 
c. Số dùng trong Matlab 
d. Nhập số liệu từ bàn phím 
e. In kết quả ra màn hình 
f. Ma trận 
g. Số phức và ma trận phức 
3. Các hàm toán học 
a. Các hàm l−ợng giác 
b. Các hàm toán sơ cấp 
4. Các thao tác đặc biệt trên ma trận 
5. Thực hiện các phép tính trên ma trận 
a. Các phép tính trên ma trận 
b. Các phép tính phần tử - phần tử của ma trận 
6. Các hàm thực hiện các phép tính về đa thức 
7. Các hàm phân tích dữ liệu 
8. Hàm của hàm 
a. Hàm tích phân số 
b. Hàm tìm nghiệm ph−ơng trình phi tuyến và các hàm tối −u 
c. Hàm giải ph−ơng trình vi phân 
9. Các toán tử điều khiển 
10. Các loại file trong Matlab 
11. Xử lí tín hiệu 
12. Vẽ đồ thị 
 Phần 2 ứng dụng Matlab giải một số 
 bài toán kĩ thuật 
1. Bài toán về mạch điện 
2. Giải bài toán động học cơ cấu phẳng 
3. Giải bài toán cân bằng máy 
4. Tính thiết kế bộ truyền bánh răng 
5. Tính sức bền trục 
6. Tính dao động 
a. Tính dao động hệ một bậc tự do 
b. Tính dao động hệ hai bậc tự do 
c. Xác định tần số dao động riêng của hệ nhiều bậc tự do 
Kết luận 
tài liệu tham khảo 
Giới thiệu 
MATLAB là một bộ phần mềm dùng để tính toán các bài toán kĩ thuật, 
đ−ợc viết bằng ngôn ngữ C do hãng Math Works Inc. sản xuất. Nó đ−ợc 
tạo trên cơ sở những phần mềm do các nhà lập trình của các dự án 
LINPACK và EISPACK viết ra bằng ngôn ngữ Fortran dùng cho việc 
thực hiện các phép tính và thao tác trên ma trận. 
Tên của phần mềm MATLAB là chữ viết tắt của ‘ matrix laboratory’ có 
nghĩa là ‘ph−ơng pháp ma trận’. Đến khi thực hành sử dụng phần mềm ta 
sẽ thấy mỗi phần tử cơ bản của MATLAB là một ma trận. 
MATLAB liên tục đ−ợc bổ sung và hoàn thiện. Thời gian gần đây hãng 
sản xuất đã cho ra phiên bản mới nhất là MATLAB 6.0. 
Matlab là một phần mềm rất mạnh, cho phép giải rất nhanh các bài toán 
phân tích số liệu, tính toán ma trận, xử lí tín hiệu, mô phỏng và tạo vẽ đồ 
thị ... Lí do vì Matlab đã có một loạt các hàm chuyên giải quyết các vấn 
đề đó đ−ợc đặt trong Toolbox. Thêm nữa, Matlab lại rất dễ sử dụng: nó 
không cần khai báo biến, các câu lệnh đ−ợc viết rất gần gũi nh− khi viết 
các biểu thức toán học, tiết kiệm rất nhiều thời gian cho việc lập trình. 
Một đặc điểm nổi bật nữa của Matlab là nó có khả năng mở rộng: ng−ời 
sử dụng có thể tự sáng tạo những file hàm đặt vào Toolbox để thực hiện 
giải những baì toán trong lĩnh vực chuyên môn của mình. 
Sau một thời gian tự tìm hiểu và ứng dụng chúng tôi thấy rằng MATLAB 
là một phần mềm rất thích hợp cho việc giải các bài toán kĩ thuật trong 
nhiều lĩnh vực. Đặc biệt trong các tr−ờng Đại học kĩ thuật nó có thể giúp 
cho các cán bộ nghiên cứu và sinh viên có đ−ợc một công cụ sắc bén để 
nâng cao năng lực tính toán, tiết kiệm thời gian lập trình. 
Đó là lí do để nhóm nghiên cứu chúng tôi mạnh dạn thực hiện đề tài có 
tính chất tìm hiểu, giới thiệu và thử ứng dụng này. 
 Phần 1 giới thiệu về matlab 
1. Bắt đầu với Matlab 
Sau khi bật máy tính, để khởi động Matlab, từ màn hình Destop, 
nhắp đúp trỏ chuột trái vào biểu t−ợng của Matlab. trên màn hình 
sẽ xuất hiện cửa sổ Command Window nh− hình d−ới đây: 
Hình 1 
Bạn cũng có thể vào Matlab bằng cách trên màn hình Destop bấm chọn 
Start \ Program \ Matlab5.3 kết quả mhận đ−ợc cũng nh− trên. 
Ta có thể trực tiếp thực hiện các phép tính toán và chạy các ch−ơng trình 
trên cửa sổ Command Window này. 
Ví dụ 1: Cần ttực hiện phép tính 201+191x32/44, từ dấu nhắc trên 
Command Window ta gõ vào nh− sau: 
>> 201+191*32/44 
Bấm Enter, kết quả cho nh− d−ới đây: 
 ans = 
 339.9091 
Hình 2 là hình ảnh bạn thấy trên màn hình. 
Hình 2 
Ví dụ 2: Nếu bạn muốn vẽ đồ thị hàm số y=5sinx+2cos2x+0,2x với biến 
x chạy từ -10 đến 10, gia số của x là 0,1, trên Command Window bạn có 
thể gõ vào các lệnh nh− đ−ợc thể hiện trong hình 3 d−ới đây: 
 Hình 3 
Sau khi bấm Enter ở dòng lệnh cuối cùng, ch−ơng trình chạy và 
cho kết quả là đồ thị nh− trong hình 4. 
 Hình 4 
Nếu muốn l−u giữ ch−ơng trình vẽ đồ thị trên để có thể tu sửa hoặc chạy 
nhièu lần, bạn hãy viết một file ch−ơng trình ( gọi là M. file) nh− sau: 
trên cửa sổ Command Window bấm chọn File \ New \ M-file (hình 5): 
 Hình 5 
trên màn hình sẽ xuất hiện một cửa sổ soạn thảo Editor/ Debugger với 
tên file là [Untitled1] nh− trên hình 6 d−ới đây: 
 Hình 6 
Viết ch−ơng trình vẽ đồ thị trên màn hình soạn thảo đó ( Hình 7). 
 Hình 7 
Khi viêt xong ta đặt tên cho file và cất nó bằng cách bấm chọn File 
\ Save as trên màn hình Editor / Debugger ( Hình 8). Cửa sổ 
Save as xuất hiện (hình 9): ta gõ 
 Hình 8 
tên file, ví dụ dothi vào ô File name rồi bấm chọn Save. Ch−ơng trình sẽ 
đ−ợc tự động cất vào th− mục Work của Matlab với tên là dothi và với 
đuôi mặc định là .m ( file vừa cất sẽ là dothi.m). 
ằ 
 Hình 9 
Để chạy ch−ơng trình trong file này, tại chỗ dấu nhắc trên màn hình 
Command Window ta chỉ việc gõ tên file : 
 >> dothi 
rồi bấm Enter.Ch−ơng trình sẽ đ−ợc thực hiện và kết quả cho ra là đồ thị 
nh− đ−ợc thể hiện trên hình 4. 
Tr−ờng hợp bạn cất file .m vào một th− mục ngoài, khi cần chạy ch−ơng 
trình có thể bấm chọn File \ Run Scrip, một cửa sổ sẽ xuất hiện và bạn 
có thể gõ đ−ờng dẫn và tên file vào đó rồi bấm phím Enter. 
2. Các khái niệm cơ bản 
a-Câu lệnh và biến trong Matlab 
Các câu lệnh trong Matlab th−ờng có dạng sau: 
 biến = biểu thức 
Tên biến đ−ợc bắt đầu bằng một chữ cái, sau đó có thể là các chữ và số. 
Ví dụ: 
a2=4/5 
Matlab chấp nhận tên biến (cũng nh− tên hàm) có đến 19 kí tự và phân 
biệt chữ in hoa với chữ in th−ờng. Ví dụ : A và a là tên hai biến khác 
nhau. 
Không giống với một số phần mềm lập trình khác, ở đây biến không 
phải khai báo tr−ớc. Nếu không viết tên biến và dấu = tr−ớc biểu thức thì 
ch−ơng trình sẽ tự động tạo tên biến là ans ( đứng cho chữ answer). 
Ví dụ: 
 >> 4/5 
 ans = 
 0.8000 
Nếu cuối câu lệnh ta đánh dấu kết thúc ‘ ; ‘ thì các phép tính đ−ợc thực 
hiện nh−ng không xuất kết quả ra màn hình. Ng−ợc lại nếu không gõ dấu 
kết thúc lệnh thì kết quả tính đ−ợc in ra màn hình. Ví dụ: 
 >> b20=30+3^4/35 
 b20 = 
 32.3143 
Nếu câu lệnh quá dài không thể viết hết đ−ợc trên một dòng thì có thể 
dùng dấu ba chấm (...) để viết tiếp trên dòng thứ hai. Ví dụ: 
 >> b = 22.334 - 45.12 + 89.222 – ( 123.30+330.2)/217.22 ... 
 + 87.32 – 443.112 ; 
Muốn viết lời chú dẫn, tr−ớc dòng đó ta gõ dấu %. Ví dụ: 
 % Day la chuong trinh giai phuong trinh vi fan bậc hai. 
Khi chạy ch−ơng trình, máy sẽ bỏ qua dòng này. 
b. Các phép toán 
• Các phép toán số học: nối các toán hạng trong biểu thức 
đ−ợc với 
nhau. Dấu các phép toán nh− sau: 
 + cộng 
- trừ 
* nhân 
/ chia phải 
\ chia trái 
^ luỹ thừa 
• Các phép toán quan hệ 
== bằng 
<= nhỏ hơn hoặc bằng 
>= lớn hơn hoặc bằng 
~= không bằng 
< nhỏ hơn 
> lớn hơn 
• Các phép toán lô gic 
& và 
/ hoặc 
~ không 
Các phép toán quan hệ và lô gíc th−ờng đ−ợc dùng trong các biêủ thức 
của các toán tử điều khiển nh− if, while. 
c. Số dùng trong Matlab 
Matlab dùng số thập phân truyền thống với số chữ số thập phân tuỳ chọn. 
Bạn cũng có thể dùng số d−ới dạng luỹ thừa của 10 và số có đơn vị phức. 
D−ới đây là một số ví dụ về các số hợp thức dùng trong Matlab: 
 4 57 -180.1122 
 3.09837412 12.6529E4 20.2908e-2 
 12i -23.1261i 5e2i 
d- Nhập số liệu từ bàn phím 
Dùng lệnh input với qui cách viết nh− sau: 
 a=input(‘ Hãy nhập giá trị của a : a = ‘) 
Khi chạy ch−ơng trình máy sẽ dừng để đợi ta gõ vào từ bàn phím giá trị 
của a, sau đó bấm Enter. 
e. In kết quả ra màn hình: có hai cách 
Cách 1 : Không gõ dấu kết thúc ( ; ) ở cuối câu lệnh. Khi chạy kết quả 
tính đ−ợc tự động in ra trên màn hình. 
Ví dụ: 
>> x=12+6*sin(pi/7) 
x = 
 14.6033 
Cách 2: dùng lệnh disp 
>> x=12+6*sin(pi/7); 
 disp(x) 
 14.6033 
f. Ma trận 
Ma trận đ−ợc biểu thị trong dấu ngoặc vuông, mỗi phần tử trên một hàng 
đ−ợc cách nhau bằng các ô trống hoặc dấu phẩy (,), còn mỗi hàng đ−ợc 
ngăn cách bởi dấu chấm phẩy (;). 
 Ví dụ : viết ma trận A gồm 3 hàng 3 cột trên màn hình Command 
Window 
 >> A=[ 1 2 3 ; 4 5 6 ; 7 8 9] 
A = 
 1 2 3 
 4 5 6 
 7 8 9 
Tr−ờng hợp ma trận quá lớn ta có thể viết mỗi hàng của ma trận trên một 
dòng nh− sau: 
 B = [ 1 2 3 4 
5 6 7 8 
9 10 11 12 ] ; 
 Các phần tử của ma trận có thể là các biểu thức. Ví dụ: 
 C=[ -1 2*3/5 2.2^3 (12+34/7)/3 ] 
C = 
 -1.0000 1.2000 10.6480 5.6190 
g. Số phức và ma trận phức 
Matlab có thể thực hiện đ−ợc các phép toán về số phức. Số phức 
đ−ợc biểu thị nhờ hàm i và j. Ví dụ viết số phức z dùng i và j nh− 
d−ới đây cho kết quả nh− nhau: 
 z = 4+5*i 
 hoặc z = 4+5*j 
Một ví dụ khác về số phức đ−ợc viết d−ới dạng e mũ: 
 w =r* exp(i*theta) 
Ma trận có các phần tử là số phức đ−ợc viết nh− sau: 
 A=[ 3+2*i 4-9*i ; 12+i 7-6*i ] 
3. Các hàm toán học 
a. Các hàm l−ợng giác 
- sin : sin 
- cos : cosin 
- tan : tang 
- asin : arcsin 
- acos : arccosin 
- atan : arctang 
- atan2 : arctan góc phần t− 
- sinh : sin hypecbôlic 
- cosh : cosin hypecbôlic 
- tanh : tang hypecbôlic 
- asinh : sin hypecbôlic ng−ợc 
- acosh : cosin hypecbôlic ng−ợc 
- atanh : tang hypecbôlic ng−ợc 
Ví dụ 1: 
a=1.223; 
b=sin(a) 
Kết quả cho: 
b = 
 0.9401 
Ví dụ 2: 
 c=[1.22 -0.96 1.17 ]; 
 d=cos(c) 
Kết quả cho: 
d = 
 0.3436 0.5735 0.3902 
 b. Các hàm toán sơ cấp 
- abs : giá trị tuyệt đối hoặc mô đun của số phức 
- angle : góc pha 
- real : phần thực của số phức 
- imag: phần ảo 
- sqrt : căn bậc hai 
- conj : số phức liên hợp 
- round : làm tròn đến số nguyên gần nhất 
- fix : làm tròn h−ớng về zẻo 
- sign : hàm xét dấu 
- gcd : ứơc số chung lớn nhất 
- lom : Bội số chung nhỏ nhất 
- exp : hàm e mũ 
- log : logarit cơ số tự nhiên 
- log10 : logarit cơ số 10 
Ví dụ 1: 
 a=2+5*i; 
md= abs(a) 
 arg= angle(a) 
Kết quả cho: 
md = 
 5.3852 
 arg = 
 1.1903 
4. Các thao tác đặc biệt trên ma trận 
- Tạo ma trận hàng 
>>t=0: 0.5: 3 
t = 
 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 
>> v= -2: 3 
v = 
 -2 -1 0 1 2 3 
- Lấy ra một ma trận con từ một ma trận đ∙ cho 
Ví dụ: Cho ma trận c 
>> c=[1 2 3 4 ; 5 6 7 8; 9 10 11 12] 
c = 
 1 2 3 4 
 5 6 7 8 
 9 10 11 12 
Lấy ra một ma trận con e từ ma trận c nh− sau: 
>> e=c(1:2,2: 4) 
e = 
 2 3 4 
 6 7 8 
Hoặc ví dụ khác: lấy ra một ma trận cột t−ơng ứng với cột thứ 3 của ma 
trận c 
>> f=c(:,3) 
f = 
 3 
 7 
 11 
Lấy ra một ma trận hàng gồm 3 phần tử cuối của hàng thứ 3: 
>>g=c(3,2:4) 
g = 
 10 11 12 
 - Tạo ma trận có cỡ lớn hơn từ các ma trận nhỏ 
Ví dụ: tạo ma trận h từ hai ma trận e và g ở trên 
>> h=[e ; g] 
h = 
 2 3 4 
 6 7 8 
 10 11 12 
Ví dụ khác: tạo ma trận k từ ma trận h và ma trận cột f 
>> k= [ h f ] 
k = 
 2 3 4 3 
 6 7 8 7 
 10 11 12 11 
- Tạo một số ma trận đặc biệt 
+ Vết của ma trận : Dùng lệnh diag để tạo một ma trận cột mà 
các phần tử của nó là các phần tử nằm trên đ−ờng chéo của ma trận cho 
tr−ớc. Ví dụ: muốn có vết của ma trận h ở trên ta làm nh− sau: 
>> ch=diag(h) 
ch = 
 2 
 7 
 12 
+ Ma trận đ−ờng chéo 
Cũng dùng lệnh diag tạo ma trận đ−ờng chéo từ một ma trận cột hoặc ma 
trận hàng cho tr−ớc. 
Ví dụ: tạo ma trận đ−ờng chéo từ ma trận cột ch ở trên 
 >>C=diag(ch) 
 C = 
 2 0 0 
 0 7 0 
 0 0 12 
+ Ma trận đơn vị : Dùng hàm eye 
Ví dụ: Để tạo ma trận đơn vị có 4 hàng 4 cột ta viết nh− sau: 
 >> I=eye(4) 
I = 
 1 0 0 0 
 0 1 0 0 
 0 0 1 0 
 0 0 0 1 
+ Ma trận mà các phần tử đều là các số 0 hoặc số 1: 
Dùng hàm zeros và hàm ones. 
Ví dụ: 
 >> K=zeros(3,4) 
K = 
 0 0 0 0 
 0 0 0 0 
 0 0 0 0 
>>M=ones(2,2) 
M = 
 1 1 
1 1 
- Đảo ma trận 
Dùng hàm fliplr để đảo ma trận từ trái sang phải và hàm flipud đảo ma 
trận từ trên xuống d−ới. 
Ví dụ : Cho ma trận M cỡ 4x4 rồi tiến hành đảo nh− d−ới đây 
>> M=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16] 
M = 
 1 2 3 4 
 5 6 7 8 
 9 10 11 12 
 13 14 15 16 
>> Mtf=fliplr(M) % Dao tu trai sang phai 
Mtf = 
 4 3 2 1 
 8 7 6 5 
 12 11 10 9 
 16 15 14 13 
>> Mtd=flipud(M) % Dao tu tren xuong duoi 
Mtd = 
 13 14 15 16 
 9 10 11 12 
 5 6 7 8 
 1 2 3 4 
5. Thực hiện Các phép tính trên ma trận 
a- Các phép tính tiêu chuẩn 
Giả sử cho a là ma trận vuông cỡ 4x4 
a=[1 3 -4 5; 2 -1 2 0 ; 4 6 -1 1; 0 1 3 5] 
a = 
 1 3 -4 5 
 2 -1 2 0 
 4 6 -1 1 
 0 1 3 5 
- Ma trận chuyển vị 
Ma trận chuyển vị của a là ac đ−ợc xác định nh− sau: 
 ac=a' 
ac = 
 1 2 4 0 
 3 -1 6 1 
 -4 2 -1 3 
 5 0 1 5 
- Cộng ma trận : hai ma trận phải cùng cỡ. Ta tính tổng của hai 
ma trận a và ac nh− sau: 
 at=a+ac 
at = 
 2 5 0 5 
 5 -2 8 1 
 0 8 -2 4 
 5 1 4 10 
- Cộng một số với ma trận: 
Matlab coi số đó nh− một ma trận cùng cỡ với ma trận đ−ợc cộng, mỗi 
phần tử của ma trận bằng chính số đó. Ví dụ: cộng số là 7 với ma trận at 
ở trên ta đ−ợc ma trận cs. 
 s =7; 
 cs=s+at 
cs = 
 9 12 7 12 
 12 5 15 8 
 7 15 5 11 
 12 8 11 17 
- Nhân ma trận với một số 
Ví dụ: Nhân số 3 với ma trận a ở trên 
>> t=3*a 
t = 
 3 9 -12 15 
 6 -3 6 0 
 12 18 -3 3 
 0 3 9 15 
 - Nhân ma trận với ma trận 
Điều kiện để hai ma trận nhân đ−ợc với nhau là số cột của ma trận thứ 
nhất phải bằng số hàng của ma trận thứ hai. Ví dụ ta nhân ma trận b 
d−ới đây với ma trận a: 
 >> b=[3 7 0 9]; 
 >> tich=b*a 
 tich = 
 17 11 29 60 
Ví dụ nữa là ta nhân ma trận a với ma trận chuyển vị của b: 
 >> tich2=a*b' 
 tich2 = 
 69 
 -1 
 63 
 52 
 - Chia ma trận 
 Ma trận x= A\B với điều kiện : A*x=B (*) 
Ví dụ: 
 A=[ 2 1 9 7; 1 3 8 5; 5 3 4 2; 9 0 6 6] 
A = 
 2 1 9 7 
 1 3 8 5 
 5 3 4 2 
 9 0 6 6 
 B=[12; 2; -6; 8 ]' 
B = 
 12 
 2 
 -6 
 8 
x= A\B 
x = 
 0.1026 
 -6.2051 
 4.8718 
 -3.6923 
Thử lại xem A*x có bằng B không: 
A*x 
ans = 
 12.0000 
 2.0000 
 -6.0000 
 8.0000 
Kết quả đúng bằng véc tơ B 
(cũng có thể dùng phép chia phải / nh−ng phải thay A và B bằng các ma 
trận chuyển vị t−ơng ứng, tức B’/A’, và kết quả là một ma trận hàng đúng 
bằng ma trận chuyển của nghiệm x đã tính ở trên). 
 - Ma trận nghịch đảo : Dùng hàm inv 
Ví dụ: Tính ma trận nghịch đảo của ma trận A ở trên 
 gọi An là ma trận nghịch đảo của ma trận A thì: 
 >> An=inv(A) 
An = 
 0.4615 -0.6154 0.4615 -0.1795 
 -2.9231 3.2308 -1.9231 1.3590 
 3.9231 -4.2308 2.9231 -2.0256 
 -4.6154 5.1538 -3.6154 2.4615 
Thử tìm nghiệm x từ ph−ơng trình (*) khi dùng ma trận nghịch đảo: 
Ta có nghiệm x đ−ợc viết nh− sau: x=A-1.B 
Gõ vào dòng lệnh sau: 
 X=An*B 
Kết quả cho: 
X = 
 0.1026 
 -6.2051 
 4.8718 
 -3.6923 
- Định thức của ma trận 
Định thức của ma trận vuông đ−ợc tính nhờ hàm det. Ví dụ tính định thức 
D của ma trận A ở trên: 
>> D=det(A) 
D = 
 -39 
 - Nhân vô h−ớng, nhân có h−ớng véc tơ 
Cho hai véc tơ m và n nh− sau: 
 m=[1 1 3]; n=[4 2 0]; 
Tích vô h−ớng của m và n: dùng hàm dot 
 vh=dot(m,n) 
 vh = 6 
Tích có h−ớng của m và n: dùng hàm cross 
 ch=cross(m,n) 
 ch = -6 12 -2 
Còn tích có h−ớng của n và m: 
 ch2=cross(n,m) 
 ch2 = 6 -12 2 
b- Các phép tính phần tử - phần tử của ma trận 
Các phép tính này rất tiện ích và đ−ợc phân biệt với các phép tính tiêu 
chuẩn trên ma trận bằng dấu chấm ( . ) đ−ợc đặt tr−ớc các dấu phép tính. 
Ví dụ: X.^Y, X.*Y, hay X.\Y. Nếu X và Y là các ma trận ( hay véc tơ) 
các phần tử của X sẽ đ−ợc nâng lên luỹ thừa hoặc đ−ợc nhân , chia bởi 
các phần tử t−ơng ứng của ma trận Y. Dẽ thấy là ma trận X và Y phải 
cùng cỡ. 
- Luỹ thừa các phần tử ma trận 
Ví dụ: 
 >> x=[1 2 ; 3 4] 
x = 
 1 2 
 3 4 
>> y=[ 3 4; 1 2] 
y = 
 3 4 
 1 2 
>> x.^y 
ans = 
 1 16 
 3 16 
x = 
 1 2 
 3 4 
Nếu y không phải là ma trận mà là một số, ví dụ y=2, thì kết quả nh− 
sau: 
>> x.^2 
ans = 
 1 4 
9 16 
- Nhân phần tử ma trận 
Ví dụ 
>> x.*y 
ans = 
 3 8 
2 8 
- Chia phần tử ma trận 
Ví dụ; 
>> x./y 
ans = 
 0.3333 0.5000 
 3.0000 2.0000 
6. Các hàm thực hiện các phép tính với đa thức 
- Hàm poly : Xác định đa thức khi biết tr−ớc nghiệm 
Quy các viết p=poly(b) 
trong đó b là một ma trận hàng. 
Kết quả sẽ cho ra là một ma trận hàng mà mỗi phần tử của nó là một hệ 
số của một đa thức có nghiệm là các phần tử của ma trận b ( theo số mũ 
giảm dần). 
Ví dụ: 
 b=[2 1 -4 3]; 
 p=poly(b) 
 p = 
 1 -2 -13 38 -24 
Theo kết quả trên thì các số 2, 1, -4 và 3 là nghiệm của đa thức : 
 x4- 2x
3 - 13x2 + 38x - 24 = 0 
- Hàm roots : Xác định nghiệm của đa thức 
Quy cách viết : a=roots(b) 
trong đó b là ma trận hàng với các phần tử là các hệ số của đa thức (theo 
số mũ giảm dần). Kết quả cho ra là một ma trận cột mà các phần tử là 
nghiệm của đa thức. 
Ví dụ: Thử tìm lại nghiệm của đa thức trên. Ta viết các lện nh− sau: 
 p=[ 1 -2 -13 38 -24 ]; 
 r=roots(p) 
r = 
 -4.0000 
 3.0000 
 2.0000 
 1.0000 
Ta thấy kết quả hoàn toàn chính xác. 
- Hàm conv : Dùng nhân đa thức. 
Quy cách viết: a=conv(b,c) trong đó b,c là hai ma trận hàng có các phần 
tử là các hệ số của các đa thức cần nhân. Kết quả cho ra là ma trận a có 
các phần tử là hệ số của ma trận tích. 
Ví dụ : cần nhân hai đa thức x3+2x2+6 và 3x4-6x2+5x-10 ta làm nh− sau: 
b=[1 2 0 6]; 
c=[3 0 -6 5 -10]; 
a=conv(b,c) 
a = 
 3 6 -6 11 0 -56 30 -60 
Vậy đa thức tích là: 3x7+ 6x6- 6x5 + 11x4 - 56x2 + 30x – 60 
- Hàm deconv : Dùng chia hai đa thức 
Qui cách viết nh− sau: [ m , n] = deconv(p,q) 
với p và q là hai ma trận hàng có các phần tử là các hệ số của đa thức bị 
chia và đa thức chia, còn các phần tử của ma trận m,n là các hệ số của đa 
thức th−ơng và phần d−. 
Ví dụ : Ta thử chia ngay đa thức tích vừa có ở trên cho đa thức có các hệ 
số là các phần tử của ma trận c, tức đa thức: 3x4-6x2+5x-10. 
 a=[3 6 -6 11 0 -56 30 -60]; 
 c=[3 0 -6 5 -10]; 
 [b,d]=deconv(a,c) 
b = 
 1 2 0 6 
d = 
 0 0 0 0 0 0 0 0 
Ta thấy kết quả là hoàn toàn đúng. 
7. các Hàm dùng phân tích dữ liệu 
Các hàm tìm giá trị cực đại, cực tiểu và trung bình 
- Hàm max : Tìm giá trị lớn nhất 
Qui cách viết ln=max(a) 
với a là ma trận hàng. Kết quả cho ra là một phần tử có giá trị lớn nhất 
của a 
Ví dụ: 
a=[ 10 2 1 -30 23 8]; 
ln=max(a) 
ln = 
 23 
- Hàm min : tìm giá trị cực tiểu 
Ví dụ: 
bn=min(a) 
bn = 
 -30 
bn=mi 
- Hàm mean : Tìm giá trị trung bình 
Ví dụ: 
tb=mean(a) 
tb = 
 2.3333 
Nếu a là một ma trận có nhiều hàng nhiều cột thì các giá trị max, min 
hoặc trung bình sẽ là các giá trị t−ơng ứng đối với các cột của ma trận. 
Ví du : 
>>b=[1 2 3; 4 5 6 ; 7 8 9] 
b = 
 1 2 3 
 4 5 6 
 7 8 9 
>>ln=max(b) 
ln = 
 7 8 9 
 >>bn=min(b) 
bn = 
 1 2 3 
 >>tb=mean(b) 
 tb = 
 4 5 6 
- Hàm sum : dùng tính tổng 
Ví dụ: Tính tổng các phần tử của ma trận a nh− sau 
 T=sum(a) 
 T = 
 26 
- Hàm diff : Tính giá trị sai khác của hai số đứng liền nhau. Qui cách 
viết: 
 s=diff(x) 
với x là một ma trận hàng hoặc cột. 
Ví dụ: 
>>x=[ 1.2 1.4 1.8 2.1 3 ]; 
>> s=diff(x) 
s = 
 0.2000 0.4000 0.3000 0.9000 
Ta dễ dàng thấy rằng hàm diff này có thể dùng để tính gần đúng đạo 
hàm. 
Nếu x là một ma trận bình th−ờng thì quá trình tính sẽ đ−ợc thực hiện 
theo thứ tự các cột. 
- Hàm Interp1 : Dùng tìm các giá trị bị khuyết. 
Ví dụ: Đã biết giá trị của hàm y=x3-3x+4 tại các điểm có x=0,1,2,3,4 và 
5. Hãy xác định giá trị của y tại các điểm có x= 0,3, 0,5, ..., 4.2, 4,8. 
Ta viết các lệnh nh− sau: 
 x1=0:5; 
 y1=x1.^3-3*x1+4; 
 x2=[0 .3 .5 1.2 1.4 2.1 3.3 4.2 4.8 5]; 
 y2=interp1(x1,y1,x2,'cubic') 
 plot(x1,y1,'ro',x2,y2,'b+') 
Kết quả cho ở dạng số và đồ thị d−ới đây 
y2 = 
 Columns 1 through 7 
 4.0000 2.7700 2.2500 2.2240 2.5920 7.0330 30.1210 
 Columns 8 through 10 
 65.6800 100.4800 114.0000 
Đó là 10 giá trị của y ứng với 10 giá trị của x ( trong ch−ơng trình tính là 
x2). Còn đồ thị sẽ cho thấy sự ppù hợp của các kết quả này: Các điểm vẽ 
bằng dấu ‘+’ là biểu thị các điểm cần tìm, còn các điểm vẽ bằng dấu ‘o’ 
là t−ơng ứng các điểm đã cho. 
0 1 2 3 4 5
0
2 0
4 0
6 0
8 0
1 0 0
1 2 0
8. Hàm của hàm 
Có nhiều hàm trong Matlab không chỉ làm việc với các ma trận số mà 
còn làm việc với các hàm toán. Các hàm của hàm này bao gồm các hàm 
dùng để tính tích phân, giải các ph−ơng trình phi tuyến và giải các 
ph−ơng trình vi phân. 
a. Hàm dùng để tích phân số: hàm quad hoặc quad8 
Ví dụ: Cần tính tích phân của hàm f(x) = 3+sin2x/(4+2cosx) với cận từ 
0 đến 4, ta tiến hành nh− sau: 
 Viết một file hàm có tên tfan1.m nh− d−ới đây: 
function f=tfan1(x) 
f=3+sin(2*x)/(4+2*cos(x)); 
và một file chính có tên tfan.m: 
tf=quad8('tfan1',0,4) 
Chạy ch−ơng trình kết quả cho giá trị của tích phân: 
tf = 
 12.0517 
b. Hàm để tìm nghiệm ph−ơng trình phi tuyến và các hàm tối 
−u 
- Hàm fzero : xác định nghiệm của hàm một biến. 
- Hàm fmin : tính giá trị cực tiểu của hàm một biến. 
- Hàm fmins : tính các giá trị cực tiểu của hàm nhiều biến 
Ví dụ: Dùng hàm fzero tìm nghiệm của ph−ơng trình sau tại vị trí gần 
x=1 : 
 y=2- 6sinx / (1+x); 
Ta viết file hàm nghiem1.m nh− sau: 
function y=nghiem(x) 
y=2-6*sin(x)./(1+x); 
Sau đó viết file chính nghiem.m: 
 x1=fzero('nghiem1',1) 
Chạy ch−ơng trình chính, kết quả cho trên màn hình nh− sau: 
Zero found in the interval: [0.36, 1.4525]. 
 x1 = 
 0.5385 
Để thử lại, ta thay x=x1 vào ph−ơng trình ban đầu để xem kết quả hai vế 
có bằng 0 hay không. 
y=2-6*sin(.5385)/(1+.5385) 
y = 
 -6.0516e-005 
Ta thấy y~ 0 và có thể nói kết quả đủ chính xác. 
c. Hàm để giải ph−ơng trình vi phân : hàm ode23 và ode34 
Ví dụ: Giải ph−ơng trình vi phân Van de Pol có dạng nh− sau: 
 x’’+( x2- 1 ) x’+ x=0 
Ta viết lại ph−ơng trình trên d−ới dạng hệ ph−ơng trình vi phân bậc nhất: 
 x1’= x1(1- x2
2 ) - x2
 x2’= x1 
Viết một file hàm mang tên ftvf.m mô tả hệ ph−ơng trình vi phân: 
function xc=ftvf(t,x) 
xc=zeros(2,1); 
xc(1)=x(1).*(1-x(2).^2)-x(2); 
xc(2)=x(1); 
Viết file chính có tên ftvf0.m nh− d−ới đây: 
t0=0; t1=20;% Thoi diem dau va cuoi 
x0=[0 .2]; % Dieu kien ban dau 
[t,x]=ode23('ftvf',t0,t1,x0); 
plot(t,x) 
Chạy ch−ơng trình kết quả cho d−ới dạng đồ thị nh− d−ới đây: 
0 5 1 0 1 5 2 0
-3
-2
-1
0
1
2
3
9. Các toán tử điều khiển 
Cũng nh− các phần mềm lập trình khác, các toán tử điều khiển cũng có 
trong Matlab. Đó là toán tử vòng lặp for, while và toán tử lựa chọn if. 
- Toán tử for 
 Dạng chung của toán tử này đ−ợc viết nh− sau: 
for biến = biểu thức 
 các câu lệnh 
end 
 Biểu thức ở đây th−ờng có dạng m:n hoặc m:i:n, trong đó m, n là 
giá trị đầu và cuối, còn i là gia số. 
 Ví dụ: 
 for k=1: n 
 a(k)=sin(k*pi/5); 
 b(k)=có(k*pi/5); 
 end 
- Toán tử while 
 Dạng chung của lệnh vòng lặp này có dạng sau: 
 while biểu thức 
 các câu lệnh 
 end 
Biểu thức ở đây là biểu thức quan hệ. 
Ví dụ: 
 d=1; 
 while d>0.001 
 z1=z2-sin(z2)/(z2+2); 
 d=abs(z2-z1); 
 z2=z1; 
 end 
- Toán tử điều kiện if 
Toán tử có dạng chung nh− sau: 
 if biểu thức 
 các câu lệnh 
 elseif biểu thức 
 các câu lệnh 
 ... 
 ... 
 else 
 các câu lệnh 
 end 
Cũng nh− đối với toán tử while biểu thức ở đây cũng là biểu 
thức quan hệ. 
Ví dụ: 
 for k=1: n 
 for p=1: m 
 if k= =p 
 z(k,p)=1; 
 elseif k<p 
 z(k,p)=-1 ; 
 else 
 z(k,p)=0; 
 end 
 end 
 end 
 - Câu lệnh Break 
Lệnh Break cho phép thoát ra khỏi vòng lặp. 
Ví dụ: 
k=input(' k='); 
 if k>0 
 break 
 else 
 a=5*k+4 
 end 
10. các loại file dùng trong matlab 
Có hai loại file là M-File và file dữ liệu (data file) 
Các file có chứa các lệnh của Matlab đ−ợc gọi là M- 
file . Sở dĩ gọi là M- file vì phần mở rộng của các file 
này là .m. 
Có hai loại M- file là script file và function file (file hàm) 
Script File 
 Khi Script đ−ợc kích hoạt Matlab đơn giản thực hiện các lệnh tìm thấy 
trong file. Các câu lệnh trong file này thì hoạt động trên toàn bộ các dữ 
liệu trong Workspace. 
Ví dụ : file lg.m d−ới đây là một script file: 
 % File dung tinh ham luong giac va ve do thi 
 f1=0:2*pi/60; 
 a=3*sin(f1)+4.5*cos(f1+.6); 
 plot(f1,a) 
Sau khi tính toán và vẽ đò thị xong các biến f1 và a vẫn còn l−u trong 
workspace 
Function File 
Là một M-File có chứa từ function tại vị trí đầu tiên trên dòng đầu của 
file. Với function file, các biến đ−ợc định nghĩa và hoạt động chỉ trong 
phạm vi file, chứ không có tính toàn cục nh− trong script file. Function 
file rất tiện ích trong việc mở rộng thêm khả năng của Matlab, cụ thể là 
tạo thêm đ−ợc các Matlab file mới. 
D−ới đây là một ví dụ về function file đ−ợc tạo để giải ph−ơng trình b
            Các file đính kèm theo tài liệu này:
 docx_20110912_matlab_introduction_127.pdf docx_20110912_matlab_introduction_127.pdf