Professional Documents
Culture Documents
HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA HÓA HỌC
HÀ NỘI-2003
Mục lục
1. Cài đặt và giao diện của matlab....................................................................................8
1.1. Cấu hình yêu cầu với Matlab 6.0, 6.5 ...................................................................8
1.2. Cài đặt phần mềm..................................................................................................9
1.3. Giao diện.................................................................................................................9
2. Những khái niệm cơ sở...............................................................................................10
2.1. Các phím tắt..........................................................................................................10
2.2. Lập trình với Matlab.............................................................................................10
2.2.1. Biến trong matlab..........................................................................................12
2.2.2. Nhập dữ liệu.................................................................................................13
2.2.3. Làm việc với workspace................................................................................14
2.2.4. Làm việc với command history.....................................................................15
2.2.5. Làm việc với current directory, quản lý tệp.................................................17
3. Các dạng hiển thị số và các hàm toán học thông dụng..............................................18
3.1. Các dạng hiển thị số.............................................................................................18
3.2. Số phức.................................................................................................................18
3.3. Các hàm toán học thông dụng..............................................................................19
4. Quản lý ma trận dữ liệu..............................................................................................20
4.1. Ma trận 1 chiều....................................................................................................20
4.1.1. Ma trận hàng..................................................................................................20
4
* Hàm compose(f,g)=f(g(x)) kết hợp hai hàm số và finverse(g) xác định hàm
ngược của g.................................................................................................................55
13.1.3. Đạo hàm và tích phân..................................................................................55
13.1.4. Giải các phương trình tượng trưng............................................................57
14. Đồ họa trong matlab..................................................................................................60
14.1. Đồ họa trong không gian hai chiều....................................................................61
14.1.1. Các hàm vẽ đồ thị........................................................................................61
14.1.2. Các tùy chọn ...............................................................................................62
14.1.3. Hệ trục tọa độ, nhãn, lưới, hộp chứa trục, chú thích................................63
14.2. Đồ họa trong không gian 3 chiều.......................................................................67
14.2.1. Đồ thị bề mặt và lưới.................................................................................67
14.2.3. Các tùy chọn, hệ trục tọa độ, nhãn, lưới, hộp chứa trục, chú thích.........71
14.2.4. Điều khiển màu và ánh sáng.......................................................................74
Các khối lệnh cơ bản......................................................................................................76
Các lệnh đa năng..............................................................................................................76
Quản lý hàm và lệnh ..................................................................................................76
Quản lý biến và không gian làm việc.........................................................................77
Kiểm soát command window......................................................................................77
Làm việc với file và môi trường hoạt động...............................................................77
Khởi động và thoát chương trình MATLAB..............................................................78
Các ký tự đặc biệt và toán tử .........................................................................................78
Các hàm logic...................................................................................................................79
Xây dựng và gỡ rối ngôn ngữ lập trình..........................................................................79
MATLAB là một ngôn ngữ lập trình..........................................................................79
Điều khiển luồng (Control Flow)...............................................................................79
Nhập dữ liệu (Interactive Input).................................................................................79
Lập trình hướng đối tượng (Object-Oriented Programming)....................................80
Gỡ rối...........................................................................................................................80
Các ma trận cơ sở và thao tác với ma trận (Elementary Matrices and Matrix
Manipulation)........................................................................................................................80
Ma trận cơ sở và mảng (Elementary Matrices and Arrays)........................................80
Hằng số và biến đặc biệt (Special Variables and Constants)....................................81
Ngày tháng và thời gian (Time and Dates)..................................................................81
Thao tác với ma trận (Matrix Manipulation)...............................................................81
Các hàm vector (Vector Functions)..............................................................................82
Các ma trận chuyên dụng (pecialized Matrices).........................................................82
Các hàm toán học cơ sở (Elementary Math Functions)..............................................82
Các hàm toán học chuyên dụng (Specialized Math Functions)...................................83
Chuyển đổi hệ trục tọa độ (Coordinate System Conversion)........................................83
Hàm ma trận và đại số học tuyến tính (Matrix Functions - Numerical Linear Algebra )
..............................................................................................................................................83
Phân tích ma trận (Matrix Analysis)............................................................................83
Các phương trình tuyến tính (Linear Equations).........................................................84
6
Giá trị duy nhất và giá trị riêng (Eigenvalues and Singular Values)...........................84
Các hàm ma trận (Matrix Functions)...........................................................................84
Các hàm cấp dưới (Low Level Functions)..................................................................84
Phân tích dữ liệu và hàm chuyển đổi Fourier (Data Analysis and Fourier Transform
Functions).............................................................................................................................84
Sai phân hữu hạn (Finite Differences).........................................................................85
Sự tương quan (Correlation)........................................................................................85
Lọc và xếp trật tự (Filtering and Convolution)..........................................................85
Các hàm nội suy và đa thức (Polynomial and Interpolation Functions)..........................86
Đa thức (Polynomials).................................................................................................86
Nội suy dữ liệu (Data Interpolation)...........................................................................86
Các phương pháp toán học không tuyến tính và các hàm chức năng (Function
Functions - Nonlinear Numerical Methods).........................................................................87
Hàm ma trận rời rạc (Sparse Matrix Functions).............................................................87
Các ma trận rời rạc cơ sở (Elementary Sparse Matrices)...........................................87
Chuyển đổi giữa ma trận rời rạc và ma trận đầy đủ (Full to Sparse Conversion)...87
Làm việc với dữ liệu khác 0 của ma trận rời rạc (Working with Nonzero Entries of
Sparse Matrices)................................................................................................................87
Hình ảnh ma trận rời rạc ...........................................................................................88
Thuật toán xắp xếp (Reordering Algorithms)............................................................88
Quy tắc, Số điều kiện, Thứ tự (Norm, Condition Number, and Rank).....................88
Phương thức rời rạc của các phương trình tuyến tính (Sparse Systems of Linear
Equations).........................................................................................................................88
Giá trị duy nhất và giá trị riêng rời rạc (Sparse Eigenvalues and Singular Values)...88
Các hàm tạo âm thanh (Sound Processing Functions).....................................................89
Các hàm âm thanh chung (General Sound Functions).................................................89
Các hàm âm thanh chuyên dụng (SPARC station-Specific Sound Functions)............89
Hàm âm thanh với format wav (.WAV Sound Functions)...........................................89
Các hàm xâu ký tự (Character String Functions).............................................................89
Chung (General)...........................................................................................................89
Chuyển đổi giữa xâu và hàm (String to Function Handle Conversion)......................89
Thao tác với xâu (String Manipulation).......................................................................89
Chuyển đổi giữa xâu và số (String to Number Conversion)......................................90
Chuyển đổi cơ số (Radix Conversion).......................................................................90
Các hàm vào/ra file (File I/O Functions)..........................................................................90
File Opening and Closing.............................................................................................90
Dữ liệu ngôn ngữ máy (Unformatted I/O)..................................................................90
Dữ liệu đã format (Formatted I/O)..............................................................................90
Vị trí file (File Positioning)..........................................................................................90
Chuyển đổi xâu (String Conversion)...........................................................................90
Vào ra file chuyên dụng (Specialized File I/O)...........................................................91
Các hàm bitwise (Bitwise Functions)...............................................................................91
Các hàm cấu truc (Structure Functions)...........................................................................91
7
Compaq Visual Fortran 5.0 or 6.1, Microsoft Visual C/C++ version 5.0 or 6.0, Borland
C/C++ version 5.0, 5.02, Borland C++Builder version 3.0, 4.0, or 5.0, Lcc 2.4 (bundled
with MATLAB)
Adobe Acrobat Reader để in các tài liệu do Matlab cung cấp trên mạng.
- Trừ 23-56
* Nhân số, ma trận 12*67
^ Lũy thừa 2^2=4
\ Chia ngược 45\23=0,5111
/ Chia thuận 23/45=0,5111
: Dấu hai chấm
( ) [ ] {} Các dấu ngoặc sử dụng trong phép toán
. Chấm thập phân
... Sự tiếp tục
, Dấu phẩy
; Chấm phẩy
% Viết chú thích sau dấu %
! Chấm than
' Chuyển vị và nháy đơn
.' Chuyển vị liên hợp
= Chuyển đổi
== Dấu bằng
< Toán tử quan hệ nhỏ hơn
> Lớn hơn
>= lớn hơn hoặc bằng
<= Nhỏ hơn hoặc bằng
~= Không bằng
& Phép toán logic và 0&4=0, 4&4=1, 0&0=0
| Phép toán logic hoặc 0|0=0, 0|1=1, 1|1=1
~ Phép toán logic không ~0=1, ~4=0
xor Phép toán logic hoặc tuyệt đối xor(0,4)=1, xor(4,4)=0,
xor(0,0)=0
Hình 5
12
23
>> kq=(a^2+b^2+c^2)/3
kq =
320.6667
>>
Tại cửa sổ Workspace và Commad History ta thu được kết quả như Hình 4 và Hình 5
Cửa sổ Workspace được gọi là không gian làm việc của Matlab, nó chứa các biến
đang sử dụng (a, b, c, kq). Cửa sổ history ghi lại toàn bộ quá trình thao tác của chúng ta.
Hình 6
Trên Hình 6 chúng ta chọn next từ đó có hai cách đặt biến cho dữ liệu
Dạng 1: có 3 biến, biến data là ma trận 5x5 và 2 biến còn lại là textdata = [a b c d e]và
colheaders=[a b c d e] dạng matran hàng 1x5.
Dạng 2: có 5 biến cột a=[12;23;12;123;23], b=[23;23;23;234;0], c=[234;34;0;234;0],
d=[34;24;0;0;0], e=[345;0;0;0;0] dạng ma trận cột 5x1
Hình 7
* Open... dùng để biết và thay đổi các thuộc tính của biến
Ví dụ biến data khi mở ta có các thuộc tính sau
Biến data là một ma trận 5 hàng năm cột ta có thể thay đổi số hàng (ô size), số cột (ô
by) và thay đổi giá trị các số trong ma trận. Kiểu format các số trong ma trận trên dạng
shotG, chúng ta sẽ tìm hiểu các dạng format số trong phần sau.
* Trong mục Graph là các dạng biểu diễn đồ thị 2D, 3D, ... của biến data.
15
* Import data... mở thêm các biến lưu trong file dữ liệu *.mat. Chúng ta lưu ý các biến
mới mở cùng tên sẽ ghi đè lên các biến hiện thời trong cửa sổ workspace.
* Workspace có thể được save lại dưới dạng file *.mat của 1 số biến lựa chọn hoặc
tất cả các biến trong workspace. Khi cần sử dụng, từ menu của workspace chúng ta chọn
import data... và mở lại file này.
>>nhomlenh
a=
Columns 1 through 10
1 2 3 4 5 6 7 8 9 10
>> a(1)=[ ]
a=
Columns 1 through 9
2 3 4 5 6 7 8 9 10
>> a(3)=[ ]
a=
Columns 1 Column 8
2 3 5 6 7 8 9 10
>> b=a*3+5
b=
Columns 1 through 8
11 14 20 23 26 29 32 35
Như vậy chúng ta có thể sử dụng M-File như một chương trình con hay hàm con, M-
file phải có phần mở rộng là “m”. Matlab đưa vào một số hàm ứng dụng trong M-File
để có giao tiếp tốt hơn với người lập trình:
Hình 9
17
3. Cut trtrb3 tử thư mục work trong matlab ra ngoài ổ C và đặt đường dẫn cho
matlab truy cập tới địa chỉ đó.
3. Các dạng hiển thị số và các hàm toán học thông dụng
3.1. Các dạng hiển thị số
Trước hết chúng ta xét một số vô hạn không tuần hoàn 2^(1/2), theo mặc định Matlab
hiển thị dạng shortG:
a=2^(1/2)
a=1.4142
Để hiển thị giá trị của a Matlab có một số khuôn dạng sau:
Định Lệnh Hiển thị a Hiển thị số 3-2i
dạng
short format short 1.4142 3.0000 - 2.0000i
shortG format short g 1.4142 3 - 2i
shortE format short e 1.4142e+000 3.0000e+000 -2.0000e+000i
long format long 1.41421319796954 3.00000000000000 -
2.00000000000000i
longG format long g 1.41421319796954 3 - 2i
longE format long e 1.414213197969543e+000 3.000000000000000e+000
-2.000000000000000e+000i
hex format hex 3ff6a09e04ad9cb8 4008000000000000
c000000000000000i
bank format bank 1.41 3.00
+ format + + +
rational format 1393/985 3 - 2i
rational
Chúng ta phải hiểu rằng Matlab luôn tính toán với cấp độ chính xác nhất có thể, khi
biến a hiển thị dạng shortG: a=2^(1/2)= 1.4142 không có nghĩa là giá trị của a dừng lại ở
4 số sau dấu phẩy, theo ngầm định matlab tính toán với hàng trăm số sau dấu phẩy của
a.
Để thay đổi dạng hiển thị số mặc định chúng ta vào File Preferences... Array
Editor sau đó lựa chọn dạng format phù hợp. Ngoài ra Preferences là mục cho phép
chúng ta thay đổi nhiều giao diện giữa người lập trình và phần mềm.
3.2. Số phức
Malab có hai biến đặc biệt đó là i=j= − 1 dùng cho phần ảo của số thực, vai trò của i
và j là tương tự nhau. Ưu điểm đặc biệt của Matlab đó là tính toán với số phức tương tự
như số thực.
Trong toán học số phức có thể biểu diễn dưới dạng sau:
19
A,θ=A.eiθ=a+bi
Trong đó A,θ và A.eiθ là các dạng biểu diễn ở tọa độ cực.
A= a + b , θ = arc[tan(b/a)], a=A cosθ, b=A sinθ
2 2
Bài tập
1. Nhập dữ liệu từ file *.txt có nội dung như bảng sau:
20
6,5 200
4. Quản lý ma trận dữ liệu
Matlab làm việc với các đại lượng vô hướng, vectơ, và ma 20 500
trận. Đại lượng vô hướng chỉ đơn giản là ma trận 1x1, và
vectơ chính là ma trận 1 cột hoặc 1 dòng. Tất cả các dạng dữ liệu này Matlab kiểm soát
dưới dạng ma trận.
Phần này sẽ giới thiệu các thao tác và các hàm cơ bản với ma trận.
linspace là câu lệnh tạo ma trận hàng cú pháp như sau linspace(a,b,c) trong đó a là giá
trị đầu, b là giá trị cuối và c là số giá trị nằm trong đoạn [a, b]
Dữ liệu về độ hấp thụ không có quy luật do đó chúng ta phải nhập từng giá trị, khi
chúng ta nhập dữ liệu phải chú ý giữa các giá trị phải cách nhau một dấu cách hoặc dấu
‘,’, các giá trị phải nằm trong dấu ngoặc vuông [ ]:
Ngoài 2 cách tạo ma trận hàng như trên chúng ta có thể tạo các cách sau:
* Tạo ma trận hàng mà các phần tử liên tiếp cách nhau 1 đơn vị
>>x=0.4:6
x=
0.4000 1.4000 2.4000 3.4000 4.4000 5.4000
* Tạo ma trận hàng mà các phần tử liên tiếp cách nhau một giá trị xác định
>> x=0.1:0.4:2
x=
0.1000 0.5000 0.9000 1.3000 1.7000
* Chúng ta có thể sử dụng các phép toán trong tạo ma trận
>> x=(0.1:0.4:2)*sin(pi/4)
x=
0.0707 0.3536 0.6364 0.9192 1.2021
* Tạo ma trận hàng theo hàm logarit
>> x=logspace(1, 3, 3)
x=
10 100 1000
Tạo ma trận hàng từ 101 đến 103 chứa 3 giá trị.
100
1000
Chúng ta có hai phép toán chuyển vị là (’) và (.’) hai phép chuyển vị này chỉ khác nhau
khi dữ liệu là số phức. Toán tử (.’) chỉ đơn giản là chuyển vị ma trận, còn toán tử (‘)
chuyển cả các số phức trong ma trận nguồn thành số phức liên hợp:
>>d=c+b*i
d=
10 + 1i
100 + 2i
1000 + 3i
>> e=d'
e=
10 - 1i 100 - 2i 1000 - 3i
>> e=d.'
f=
10 + 1i 100 + 2i 1000 + 3i
0 0 0 0
0 0 0 0
0 0 0 0
Ta cũng có thể tạo ma trận 0 hay 1 theo kích thước ma trận khác:
>>m=ones(size(g))
m=
1 1 1
1 1 1
1 1 1
Về mặt cú pháp khi ta viết ones(n) hay zeros(n) nghĩa là tạo ma trận vuông n chiều
còn khi viết ones(n,m) hay zeros(n,m) nghĩa là tạo ma trận n hàng m cột.
Các phép toán sử dụng dấu ‘.’ thực hiện trên các vị trí tương ứng của hai ma trận
h(i,j)=n(i,j)*g(i,j) trong đó i chỉ vị trí hàng, j chỉ vị trí cột.
Các phép toán không sử dụng dấu ‘.’ tuân theo quy định toán học về định thức ma
trận.
h(i, j) = ∑ n(i, x) * g(x, j)
x =1:3
Chúng ta có quy định chung về địa chỉ của ma trận như sau:
h(m,n) Ma trận con 1 phần tử ở hàng m cột n của ma trận h
h(:,n) Ma trận con là ma trận cột chứa các phần tử ở cột n của ma
trận h
h(m,:) Ma trận con là ma trận hàng chứa các phần tử ở hàng m của
ma trận h
h(:) Ma trận cột chứa tất cả các phần tử trong ma trận h bằng cách nối liên tiếp các
cột lại với nhau
h(m) Chỉ phần tử thứ m trong ma trận h theo cách đếm liên tiếp từ trên xuống
dưới, từ trái qua phải
>>h(8) 1 4 7
ans = 2 5 8
1000 Hình: 12: Thứ tự trong ma
trận 3 6 9
4.6. Các hàm thông dụng
p=find(h) Cho kết quả là ma trận cột các chỉ số của dữ liệu lớn hơn 1
trong ma trận h
[m,n]=find(h) Cho kết quả là hai ma trận cột m chứa các chỉ số hàng, n chứa
các chỉ số cột của các phần tử lớn hơn 1 trong ma trận h. Ta có
thể đưa thêm các hàm toán vào các dữ liệu trong ma trận h như :
find(h>34), find(sin(h)>0.5)...
isequal(g,h) Cho giá trị là 1 nếu hai ma trận giống nhau, là 0 nếu số hàng, số
cột hay có 1 phần tử khác nhau
ismember(g,h) Cho kết quả là ma trận có kích thước bằng ma trận g. Với mỗi
phần tử trong ma trận g Malab tìm kiếm trong ma trận h nếu có
phần tử có giá trị bằng thì trả kết quả 1, nếu không có thì trả giá
trị 0.
intersect(g(:),h(:)) Trả kết quả là ma trận cột các phần tử bằng nhau được sắp
xếp từ nhỏ đến lớn
setdiff(g(:),h(:)) Trả kết quả là ma trận cột các phần tử có trong g mà không có
trong h, xắp xếp từ nhỏ đến lớn
setxor(g(:),h(:)) Trả kết quả là ma trận cột các phần tử không phải là phần tử
chung của g và h
union(g(:),h(:)) Trả kết quả là ma trận cột tất cả các phần tử có trong g hoặc h
size(g) Trả kết quả là ma trận hàng với hai dữ liệu là số hàng và số
cột ma trận g
size(g,1) Trả kết quả là số hang
size(g,2) Trả kết quả là số cột
length(g) Trả kết quả là số chiều lớn hơn
26
2. Theo dõi nhiệt độ tại các vị trí khác nhau của một thùng phản ứng tĩnh thu được
kết quả như sau
Thoi gian Trung tam 10 cm 20cm Thành
1 20.3 20.3 20.4 21.0
2 53.4 54.4 47.5 22.3
3 60.2 59.6 54.3 25.6
4 59.7 59.4 55.8 27.8
5 54.4 55.3 47.5 20.1
6 45.6 43.7 39.6 22.4
7 33.6 32.8 30.3 26.4
8 29.3 28.7 25.4 20.1
9 26.4 26.4 26.5 23.6
10 26.7 26.5 23.5 21.4
a) Nhập dữ liệu từ file *.txt dạng ma trận 10x5
b) Gán cột 1 bằng biến a, xóa cột 1 khỏi ma trận
c) Sử dụng hàm plot vẽ đồ thị với trục hoành là a
c) Tìm nhiệt độ cao nhất, nhỏ nhất
Column 27
78
>> char(b)
ans =
Khoa Hoa hoc, truong DHKHTN
Các hàm double và abs chuyển về dạng số của các ký tự hàm char là hàm ngược lại
chuyển số về dạng ký tự, hàm size cho biết số ký tự trong xâu. Chúng ta cũng có thể
trích dẫn đoạn văn bản trong xâu theo chiều thuận hay nghịch.
>> c=a(6:12) % lấy các ký tự theo thứ tự 6 tới 12
c=
Hoa hoc
>> c=a(6:2:12) % cứ hai ký tự lấy 1
c=
Hahc
>> c=a(12:-1:6) % đảo ngược các ký tự từ 12 tới 6
c=
coh aoH
>> d=c' % chuyen vị hang sang cot
d=
c
o
h
a
o
H
Các lệnh trên chúng ta thấy rằng khi hiển thị dữ liệu luôn có tên biến đi cùng ví dụ ‘c
=’ .... Khi muốu hiển thị xâu văn bản mà không hiển thị biến chúng ta dùng hàm disp.
>>disp(c)
coh aoH
Trong qúa trình làm 1 bài toán chúng ta cần viết dữ liệu dạng số vào trong xâu văn
bản khi đó chúng ta phải chuyển đổi dữ liệu dạng số sang xâu, ta dùng lệnh num2str.
x=
12
>> y
y=
8
>> kq=['gia tri bien y bang ' num2str(y) ' ung voi bien x bang ' num2str(x)]
kq =
gia tri bien y bang 8 ung voi bien x bang 12
29
>> n=date
n=
19-Jul-2003
Hàm now cũng đưa ra thời gian hiện tại hiển thị dưới dạng số ngày tính từ ngày thứ
nhất năm 0.
>> n=datestr(1)
n=
01-Jan-0000
>> n=datestr(800000,1) % ngày thứ 800000
n=
28-Apr-2190
Hàm datetstr hiển thị ngày dạng xâu có 31 kiểu hiển thị ngày:
Số kiểu hiển thị Dạng xâu Ví dụ
0 'dd-mmm-yyyy HH:MM:SS' 01-Mar-2000 5: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 'd' W
10 'yyyy' 2000
11 'yy' 00
12 'mmmyy' Mar00
13 'HH:MM:SS' 15:45:17
14 'HH:MM:SS PM' 3:45:17 PM
15 'HH:MM' 15:45
16 'HH:MM PM' 3:45 PM
17 'QQ-YY' Q1-96
18 'QQ' Q1
19 'dd/mm' 01/03
20 'dd/mm/yy' 01/03/00
21 'mmm.dd,yyyy HH:MM:SS' Mar.01,2000 15:45:17
22 'mmm.dd,yyyy' Mar.01,2000
23 'mm/dd/yyyy' 03/01/2000
24 'dd/mm/yyyy' 01/03/2000
25 'yy/mm/dd' 00/03/01
26 'yyyy/mm/dd' 2000/03/01
27 'QQ-YYYY' Q1-1996
28 'mmmyyyy' Mar2000
29 (ISO 8601) 'yyyy-mm-dd' 2000-03-01
31
for n= ma trận % dữ liệu dạng ma trận, được hiểu dưới dạng vectơ hàng có
thể là nhiều hàng hay 1 hàng
Nhóm lệnh
end
VD: Tính hiệu bình phương từng cặp số trong hai dãy số 23, 445, 23 và 234, 23, 234
>> hbp=zeros(1,3) % (1)
hbp =
0 0 0
>> n=0
n=
0
>> dulieu=[23 445 23;234 23 234]
dulieu =
23 445 23 % dãy 1
234 23 234 % dãy 2
>> for x=dulieu
n=n+1;
hbp(n)=x(1)^2-x(2)^2
end
hbp =
-54227 0 0
hbp =
-54227 197496 0
hbp =
-54227 197496 -54227 % giá tương ứng của 23^2-234^2; 445^2-23^2;
23^2-234^2
Khi không khởi tạo hbp giá trị của ma trận hàng hbp được lấp đầy dần, quá trình
khởi tạo (1) thực hiện lệnh cấp bộ nhớ 1 lần cho biến hbp để thúc đẩy nhanh quá trình
tính toán thay vì mỗi khi n tăng 1 đơn vị matlab lại phải cấp thêm bộ nhớ cho biến hbp.
Do n thuộc dạng ma trận dữ liệu số nên ta có thể khởi tạo n giống như khởi tạo ma
trận ví dụ như n=1:10, n=10,-1,1...
>> m=174
m1=m
>> n=36
n1=n
>> While m~=n
if m>n m=m-n else n=n-m
usc=m bsc=m1*n1/usc
end
nhóm lệnh
...
otherwise
nhóm lệnh
end
* Chúng ta chú ý rằng khi thực hiện các lệnh trực tiếp trên command window bấm
phím enter thay cho dấu thực hiện câu lệnh, trong các M-file chỉ có dòng lệnh cuối cùng
là có thể kết thúc được bằng phím enter do đó tất cả các câu lệnh phải có dấu ‘;’ để
thực hiện lệnh.
Bài tập
1. Từ năm 2000 tới năm 3000 hãy tìm các năm mà tháng 2 có 29 ngày? (sử dụng vòng
lặp for, cấu trúc if và hàm eoday)
2. Tìm các số nguyên tố từ 1 tới 1000 (có thể áp dụng hàm factor, size, câu lệnh for)
20.0343
20.0073
20.0088
20.2206
20.0224
19.8337
20.0349
20.0401
20.3196
20.3364
16.3164
20.3215
20.4187
20.4552
20.3501
>> xltn=min(ptxl)% tìm giá trị nhỏ nhất trong ma trận cột ptxl (xử lý tốt nhất)
xltn =
0.6994
>> tb=find(ptxl==xltn) % tìm địa chỉ phần tử trong cột có giá trị bằng xltn
tb =
10
>> xlkn=max(ptxl) % tìm giá trị lớn nhất
xlkn =
43.2548
>> tbkn=find(ptxl==xlkn) % tìm địa chỉ
tbkn =
9
>> tentb=1:16
tentb =
Columns 1 through 13
1 2 3 4 5 6 7 8 9 10 11 12 13
Columns 14 through 16
14 15 16
>> plot(tentb,a(:,1:2)) % vẽ đồ thị cột 1 và 2
>> xlabel('thu tu thiet bi')
>> ylabel('khoi luong nito (kg)')
>> plot(tentb,a(:,3:5))
>> xlabel('thiet bi')
>> ylabel('phan tram')
>> b=diff(a) % độ chênh lệch giữa hai phần tử
kề nhau trong mảng
b=
0 0.0028 0 1.0000 -1.0000
37
2 5 7 x1 12
5 8 34 . x2 = 45
34 65 12 x3 157
a . x = b
Khi giải với matlab ta chỉ cần nhập hai ma trận a và b
>> a=[2 5 7;5 8 34; 34 65 12]
a=
2 5 7
5 8 34
34 65 12
>> b=[12; 45; 157]
b=
12
45
157
Đây là hệ 3 biến 3 phương trình nếu nếu det(a) khác không hệ có bộ nghiệm duy
nhất.
>> det(a)
ans =
1623
Do đó ta có thể sử dụng hai phép toán để tính nghiệm hệ phương trình.
39
* Như đã giới thiệu phần 4 matlab cung cấp các hàm nhân, chia ma trận do đó ta có
thể tính nghiệm trực tiếp bằng phép chia ma trận (không sử dụng dấu ‘.’):
>> x=a\b % phép chia trái
x=
6.3494
-1.0222
0.6303
* Hệ phuơng trình a.x=b ↔ x=a-1.b, lệnh inv(a) cho phép tính a-1
>> c=inv(a)
c=
-1.3025 0.2434 0.0702
0.6753 -0.1319 -0.0203
0.0327 0.0246 -0.0055
>> x=c*b
x=
6.3494
-1.0222
0.6303
Đối với các hệ mà số phương trình độc lập tuyến tính lớn hơn số biến thì hệ vô
nghiệm song matlab sử dụng phuơng pháp bình phương tối thiểu để thực hiện phép chia
a\b nên vẫn đưa ra kết quả của x (cho sai lệch nhỏ nhất khi thay x vào các phương
trình).
Với các hệ có số biến lớn hơn số phương trình thì hệ có vô số nghiệm. Khi thực hiện
phép toán a\b matlab lựa chọn giải pháp số phần tử 0 cực đại để đưa ra 1 bộ nghiệm
của hệ.
Bài tập
1. Giải hệ phương trình
a) b)
2x – y – z – t = -1 3x1 - 2x2 - 5x3 + x4 = 3
x - 2y + z + t = -2 2x1 - 3x2 + x3 + 5x4 = -3
x + y -2z + t = 4 x1 + 2x2 - 4x4 = -3
x + y + z – 2t = -8 x1 - x2 - 4x3 + 9x4 = 22
2. a) Phù hợp hóa đường cong theo mô hình: y=co + c1e3x + c2e-3x với các số liệu như
sau
xi 0 1 2 3
yi 1 2 2 1
b) co=0. tìm c1, c2
c) y=ae-bx , tìm a, b
Thể hiện trên màn hình đồ họa.
3) Phù hợp hóa dữ liệu theo đường cong y=co + c1x + c2x2 + c3x3, vẽ đồ thị dữ liệu và
đường cong.
40
sodu =
0 0 19 -10
Như vậy phép chia này ta được hàm thương là: 2x + 1, số dư là: 19x – 10
* Khi ta xem xét phép chia hai đa thức dạng như một phân thức matlab cung cấp hàm
residue để biến đổi phân thức thành đa thức cộng với các phân thức có tử thức là đa
thức bậc 0 còn mẫu thức là đa thức bậc 1.
x3 x − 0.5 − 0.5
=x− 2 =x+ +
x +1
2
x +1 x − (0 + i ) x − ( 0 − i )
>> a=[1 0 0 0]
a=
1 0 0 0
>> b=[1 0 1]
b=
1 0 1
>> [tu mau th]=residue(a,b)
tu =
-0.5000
-0.5000
m=
0 + 1.0000i
0 - 1.0000i
th =
1 0
residue là hàm hai chiều [a,b]=residue(tu m th) trả lại tử thức và mẫu thức.
dh =
6 14 12
Kết quả được hiểu là: dh=6x2+14x+12
>> tp=polyint(h)
tp =
0.5000 2.3333 6.0000 -15.0000 0
Kết quả được hiểu là:
tp=0.5x4+2.3333x3+6x2-15x
* Chú ý với các phân thức có tử thức và mẫu thức là các đa thức ta cũng có thể tính
đạo hàm bằng hàm polyder. Ví dụ xét phân thức 1/x
>> a=[1] % tử thức 1
a=
1
>> b=[1 0 ] % mẫu thức x + 0
b=
1 0
>> [t,m]=polyder(a,b) % đạo hàm phân thức được tử/mẫu = -1/(x2 +0x+0)
t=
-1
m=
1 0 0
pH =
Columns 1 through 7
7.2000 7.4500 7.6000 7.8000 8.2500 8.5000 8.7000
Column 8
9.0000
>> rv
rv =
Columns 1 through 7
0.0400 0.0800 0.2000 0.2100 0.1900 0.1700 0.1300
Column 8
0.6000
>> pH1=7.5
pH1 =
7.5000
>> rv1=interp1(pH,rv,pH1,'linear') % tương tự lệnh rv1=interp1(pH,rv,pH1)
rv1 =
0.1200
Điểm (pH,rv)=(7.5,0.12) nằm trên đường thẳng nối hai điểm (7.45;0.08) và (7.6;0.2)
>> rv1=interp1(pH,rv,pH1,'cubic') % nội suy theo đường cong phù hợp nhất
rv1 =
0.1163
Để thấy rõ hơn khả năng làm mịn hóa đường cong chúng ta thêm nhiều điểm vào
giữa các giá trị dữ liệu:
>> pHmr=linspace(7.2,9,100) % mở rộng số
điểm pH, lấy 100 điểm từ 7.2 tới 9
>> rvmr=interp1(pH,rv,pHmr,'cubic')
>> hold on
>> plot(pHmr,rvmr)
Lệnh rvmr=interp1(pH,rv,pHmr,'cubic') nội suy
rvmr từ pHmr theo đường cong đi qua các điểm
(pH,rv).
Hình bên chúng ta thấy 3 kiểu nội suy dữ liệu:
theo hàm số, theo đường nối thẳng, và theo đường
nối cong.
Đối với lệnh interp2 chúng ta
hãy xem xét các mô phỏng bền
mặt đáy hồ, chiều ngang chia
thành 10 đường, chiều dọc chia
thành 17 đường và đo độ sâu ở
các vị trí giao nhau và thu được
mảng dữ liệu như sau:
bm=[0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0;
45
0 0 0 0 -0.1 0 0 0 0 0;
0 0 0 -1 -2 0.1 -1 0 0 0;
0 0 -0.5 -2 -1 1 1 -1 0 0;
0 0 -0.1 -1 -1.2 -1 -0.1 -1 0 0;
0 0 -0.1 -1 -2.5 -2.8 -2.5 -1 0 0;
0 0 -0.1 -1 -2.5 -2.6 -2.5 -1 0 0;
0 0 -0.1 -1 -1.5 -2 -1.5 -1 0 0;
0 0 -0.1 -1 1 -0.5 -2 -0.5 0 0;
0 0 0 -2 1 -0.1 -2.5 -1 0 0;
0 0 0 -1 -2 -4 -2.7 -1 0 0;
0 0 0 -0.7 -2 -2 -1 -0.1 0 0;
0 0 0 -0.1 -0.5 -1 -0.3 0 0 0;
0 0 0 0 0 -0.1 0 0 0 0;
0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0]
>>x=0:9
>>y=0:16
>>mesh(x,y,bm)
Thực hiện nội suy dữ liệu theo đường
cong:
>>x1=linspace(0,9,50)
>>y1=linspace(0,16,100)
>>[x2,y2]=meshgrid(x1,y1)
>>bmmr=interp2(x,y,bm,x2,y2,'cubic')
>>mesh(x2,y2,bmmr)
Khi x1,y1 là hai ma trận hàng thì nhất
thiết phải sử dụng lệnh meshgrid để nó tạo nên hai ma trận x2, y2 có số chiều như nhau
để thỏa mãn câu lệnh interp2.
Ta không cần sử dụng lệnh meshgrid nếu y1 là ma trận cột.
>> saunhat=min(min(bmmr)) % giá trị min thứ nhất cho ra kết quả theo cột
saunhat =
-3.9959
Bài tập
1. Tìm điểm trên đồ thị f=2x2+3x+1 gần gốc tọa độ nhất với độ chính xác tự chọn?
2. Một thiết bị hình hộp không có nắp, thể tích 1000cm3, tìm kích thước để tốn ít
nguyên liệu chế tạo nhất (không đề cập tới độ dày)?
3. Một hỗn hợp gồm benzen và toluen chứa bf% mol benzen được dự định tách với
sản phẩm đầu cột chứa bd% mol benzen và sản phẩm cuối cột chứa không quá bw%
mol benzen. Hỗn hợp này được cung cấp nhiệt và được dẫn vào cột tách tại điểm sôi
của nó, hơi đi ra khỏi cột tách được ngưng tụ nhưng không được làm lạnh và được chia
làm hai phần; một phần hồi lưu trở lại cột tách còn một phần được lấy ra làm sản
46
phẩm đầu cột của quá trình tách. Người ta dự định vận hành cột tách với tỉ số hồi lưu hl
kmol/kmol sản phẩm.
Bằng phương pháp nội suy vẽ đồ thị đường cân bằng lỏng hơi. Nhập các thông số bf,
bd, bw từ bàn phím tính số đĩa lí thuyết, áp dụng với bf=40%, bd=10%, bw=90%,
hl=3mol/L
Biết nồng độ cấu tử nhẹ trong pha lỏng và pha hơi nằm cân bằng như sau:
x 0.00 0.20 0.40 0.60 0.80 1.00
y 0.00 0.37 0.60 0.80 0.90 1.00
Phương trình đường làm việc cột trên
Ln D
yn = xn + 1 + xd ( 1.13)
Vn Vn
4. Một cột chưng cất phân đoạn liên tục được sử dụng để tách một hỗn hợp chứa
0,695 phần mol n-heptan (C7H16) và 0,305 phần mol n-octan (C8H18) để cho sản phẩm
tinh khiết đến 99% mol. Cột này được vận hành ở áp suất 101,3 kN/m2 với tốc độ hơi là
0,6 m/s. Nguyên liệu ở trạng thái lỏng ở tại điểm sôi của nó và được nạp với tốc độ
1,25 kg/s. Nhiệt độ sôi ở đỉnh cột là 372 K.
5. Người ta dự định tiến hành một phản ứng A → R trong một thiết bị phản ứng lí
tưởng gián đoạn. Tốc độ phản ứng ở các nồng độ tương ứng xác định được như sau:
CA (mol/lít) 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 1,0 1,3 2,0
0,1 0,3 0,5 0,6 0,5 0,25 0,10 0,06 0,05 0,045 0,042
-rA (mol/lit
Nếu nồng độ của nguyên liệu ban đầu CA0 = 1,3 mol/lít thì thời gian lưu của phản
ứng sẽ là bao nhiêu nếu nồng độ chất A trong sản phẩm là 0,3 mol/lít.
6. Một phản ứng đồng thể trong pha lỏng có phương trình phản ứng và phương
trình tốc độ như sau:
A → R ,( − rA ) = kC A2
Khi phản ứng tiến hành trong một thiết bị IMR có thể tích V thì độ chuyển hoá của
phản ứng là 50%.
a) Độ chuyển hoá của phản ứng sẽ là bao nhiêu nếu phản ứng được tiến hành trong
một thiết bị phản ứng IMR có thể tích bằng 6 lần thiết bị IMR ban đầu?
b) Độ chuyển hoá của phản ứng sẽ là bao nhiêu nếu phản ứng được tiến hành trong
một thiết bị phản ứng PFR có thể tích bằng thể tích thiết bị IMR ban đầu?
C −C
Thiết bị IMR τ = A 0 2 Af
kC Af
C Af
dC A
Thiết bị PFR τ= − ∫
CA 0 kC 2A
=
7.. Một phản ứng phân huỷ chất A trong pha khí A → R có dữ liệu động học như sau:
CA(mol/lít) 1 2 4 6 8 10
-rA(mol/lít giây) 0,01 0,02 0,04 0,09 0,16 0,25
Người ta dự định tiến hành phản ứng này trong một thiết bị phản ứng PFR để đạt
được độ chuyển hoá là 80% khi nguyên liệu đầu chứa chất A tinh khiết có nồng độ là
10 mol/lít.
Xây dựng đồ thị (CA, 1/-rA), tính thời gian lưu của thiết bị phản ứng này trong trường
hợp trên.
C
V A
dC A
τ = =− ∫
V
CA 0
( − rA )
8. Phản ứng phân huỷ một chất lỏng A được tiến hành trong phòng thí nghiệm bằng
một thiết bị IMR. Tại trạng thái dừng xác định được các số liệu động học như sau:
Nồng độ chất A (mol/lít)
Thời gian lưu
(s)
Nguyên liệu Sản phẩm
2,00 0,65 300
2,00 0,92 240
48
Để phản ứng đạt được độ chuyển hoá là 75% khi nồng độ chất A trong nguyên liệu
đầu CA0 = 0,8 mol/lít thì thời gian lưu cần thiết là bao nhiêu nếu:
Dựng đồ thị (CA,-rA) và CA,1/-rA)
a) Phản ứng được tiến hành trong thiết bị PFR
b) Phản ứng được tiến hành trong thiết bị IMR
9. Một phản ứng trong pha khí A → 3R được thực hiện trong thiết bị IMR có thể
tích V = 1 lit. Nồng độ ban đầu của khí A là CAo= 120 mmol/lit.
Người ta đưa khí này vào thiết bị phản ứng ở áp suất 30 atm và nhiệt độ 30 oC với các
tốc độ nạp liệu khác nhau, sau đó tiến hành xác định nồng độ của khí ở lối ra thu được
bảng dữ liệu sau:
Phương trình tốc độ phản ứng phân hủy A có dạng: -rA= k (CA)n
Vẽ đồ thị và xác định n theo phương pháp bình phương tối thiểu, viết phương trình
động học của phản ứng phân huỷ chất A.
V CA0X A
τ= =
V − rA
12. Hàm số
12.1. Khảo sát hàm số
12.2. Tìm giao điểm của đồ thị hàm số với trục hoành và với đồ thị hàm số khác
Việc tìm giao điểm đồ thị hai hàm số Matlab sử dụng hàm fzero, ví dụ (xo,yo) là giao
điểm đồ thị hai hàm số g(x) và h(x) như vậy xo chính là nghiệm phương trình f(x)=g(x)-
h(x)=0.
>> xnghiem=fzero(y,-3) % Nghiệm pt f(x) = 0 gần -3 nhất
xnghiem =
-1.2599
50
* Khái niệm
Như đã trình bày trong phần trước để biểu diễn một đa thức chúng có hai phương
pháp: biểu diễn hệ số và biểu diễn dưới dạng xâu kí tự. Với các hàm số phức tạp chúng
ta mới biết một phương đó là biểu diễn dưới dạng xâu ký tự. Mỗi phương pháp đều có
các phép toán, các hàm tìm nghiệm, cực trị,... riêng.
Hàm số biểu diễn qua biến đặc trưng có giao diện tương tự như ngôn ngữ viết thông
dụng. Matlab sử dụng hàm sym để tạo biến đặc trưng, các biểu thức toán học sử dụng
biến đó là các hàm đặc trưng.
Ví dụ:
>> x = sym('x');
Chúng ta cũng có thể viết nhiều lệnh để tạo nhiều biến tượng trưng
>> a = sym('a'); t = sym('t'); x = sym('x'); y = sym('y')
hoặc
>> syms a t x y
Các biến đặc trưng này được sử dụng như các đối số trong nhiều biểu thức khác
nhau.
>> r = x^2 + y^2
r=
x^2+y^2
Nếu các hàm số sử dụng các biến đặc trưng quá phức tạp ta có thể đơn giản hóa
bằnd lệnh "simple" hay "simplify"
>> f = cos(x)^2 + sin(x)^2
f=
cos(x)^2+sin(x)^2
>> f = simple(f)
f=
1
Chúng ta cũng có thể tạo các hằng số đặc trưng với hàm sym
>> pi = sym('pi')
pi =
pi
>> s = sym('sqrt(2)')
s=
sqrt(2)
Các vectơ và ma trận sử dụng các biến tượng trưng
>> n = 4
>> x=sym(‘x’)
>> A = x.^((0:n)'*(0:n))
A=
53
[ 1, 1, 1, 1, 1]
[ 1, x, x^2, x^3, x^4]
[ 1, x^2, x^4, x^6, x^8]
[ 1, x^3, x^6, x^9, x^12]
[ 1, x^4, x^8, x^12, x^16]
>> D = diff(log(A))
D=
[ 0, 0, 0, 0, 0]
[ 0, 1/x, 2/x, 3/x, 4/x]
[ 0, 2/x, 4/x, 6/x, 8/x]
[ 0, 3/x, 6/x, 9/x, 12/x]
[ 0, 4/x, 8/x, 12/x, 16/x]
Biểu diễn độ chính xác số học biến tượng trưng, VD tính chính xác 15/37 tới 100 số
sau dấu phẩy
>> vpa 15/39 100
ans =
.
3846153846153846153846153846153846153846153846153846153846153846153846153
846153846153846153846153846
* Các hàm số, ma trận sử dụng ký tự +, -, *, /, ^ để thực hiện các phép toán cộng
trừ, nhân, chia, mũ hóa
Ví dụ:
>> x=sym('x')
x=
x
>> f=(2*x^2+3*x+1)
f=
2*x^2+3*x+1
>> g=(sin(x^2))
g=
sin(x^2)
>> h=f/g
h=
(2*x^2+3*x+1)/sin(x^2)
>> k=h^x
k=
((2*x^2+3*x+1)/sin(x^2))^x
ans =
[ cos(t)^2+sin(t)^2, 0]
[ 0, cos(t)^2+sin(t)^2]
ans = simple(ans)
ans =
[ 1, 0]
[ 0, 1]
* Hàm compose(f,g)=f(g(x)) kết hợp hai hàm số và finverse(g) xác định hàm ngược
của g
>> l=compose(f,g)
l=
2*sin(x^2)^2+3*sin(x^2)+1
>> m=finverse(f)
m=
-3/4+1/4*(1+8*x)^(1/2)
>> m=finverse(g)
m=
asin(x)^(1/2)
% hàm finverse chỉ đưa ra một kết quả mặc dù có thể tồn tại nhiều hơn một kết quả.
% Khi đã thiết lập biến tượng trưng hàm EZPLOT cho phép vẽ đồ thị các hàm số với
biến tượng trưng.
>> f = 1/(5+4*cos(x))
>> ezplot(f)
f=
1/(5+4*cos(x))
% Có rất nhiều các hàm sử dụng được với
biến tượng trưng ví dụ với hamd “diff”.
>> f1 = diff(f)
ezplot(f1)
f1 =
4/(5+4*cos(x))^2*sin(x)
% hàm DIFF có thể xác định được đạo hàm cấp n ví dụ với đạo hàm cấp hai
>> f2 = diff(f,2)
ezplot(f2)
f2 =
32/(5+4*cos(x))^3*sin(x)^2+4/(5+4*cos(x))^2*cos(x)
>> subplot(1,2,2)
>> ezplot(g)
% ta hãy xét e là sự khác nhua giữa f và g. Đó lad một biểu thức phức tạp nhưng nhìn
đồ thị thì như là hằng số.
>> e = f - g
>> subplot(1,1,1)
>> ezplot(e)
e=
1/(5+4*cos(x))+8/(tan(1/2*x)^2+9)
[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
% Giải pháp cho đường bậc ba là
>> x = solve('a*x^3 + b*x^2 + c*x + d')
% lệnh này thường cho kết quả phức tạp, ta có thể đơn giản hóa bằng lệnh
>> pretty(x)
% Dạng phương trình khác
>> x = solve('p*sin(x) = r')
a=
[ 2]
[ 2]
[ 3]
[ 3]
u=
[ 1/3+1/3*i*2^(1/2)]
[ 1/3-1/3*i*2^(1/2)]
[ 1/4+1/4*i*3^(1/2)]
[ 1/4-1/4*i*3^(1/2)]
v=
[ -2/3+1/3*i*2^(1/2)]
[ -2/3-1/3*i*2^(1/2)]
[ -3/4+1/4*i*3^(1/2)]
[ -3/4-1/4*i*3^(1/2)]
% Nếu khi tìm ẩn số mà hàm solve không tìm ra giải pháp phân tích nó sẽ cho kết
quả dạng 32 số
>> [x,y] = solve('sin(x+y)-exp(x)*y = 0','x^2-y = 2')
x=
-6.0173272500593065641097297117905
y=
34.208227234306296508646214438330
% Tương tự, với chú thích “D” có nghĩa là đạo hàm để giải các phương trình vi
%phân đơn giản bằng hàm “dsolve”
>> y = dsolve('Dy = -a*y')
y=
C1*exp(-a*t)
% chỉ định điều kiện thêm vào
>> y = dsolve('Dy = -a*y','y(0) = 1')
y=
exp(-a*t)
% Đạo hàm cấp 2 định nghĩa bởi "D2”.
>> y = dsolve('D2y = -a^2*y', 'y(0) = 1, Dy(pi/a) = 0')
y=
cos(a*t)
% một phương trình không tuyến tính tạo ra hai đáp án trong 1 véc tơ
>> y = dsolve('(Dy)^2 + y^2 = 1','y(0) = 0')
y=
[ sin(t)]
[ -sin(t)]
Bài tập
60
Biết biểu thức xác định tốc độ phản ứng như sau:
0,72C A2 C B
rA B =
2
1 + 2C A
Cơ chế nào của phản ứng là phù hợp với phương trình tốc độ của phản ứng nếu
như về mặt hoá học phản ứng chỉ ra rằng hợp chất trung gian chứa một tổ hợp các phân
tử phản ứng và không xảy ra phản ứng liên tục? (Thiết lập các phương trình với biến
tượng trưng và thực hiện các phép toán.)
− rN 2 O =
1 + k 2 [ N 2 O]
Hãy đưa ra một cơ chế phản ứng để giải thích cho biểu thức tính vận tốc tìm
được ở trên. (Thiết lập các phương trình với biến tượng trưng và thực hiện các phép
toán.)
Biết rằng biểu thức xác định vận tốc của phản ứng suy ra từ thực nghiệm như sau:
k [ H ][ Br2 ] 2
1
rHBr = 1 2
k2 +
[ HBr ]
[ Br2 ]
(Thiết lập các phương trình với biến tượng trưng và thực hiện các phép toán.)
>> x=0:0.1:8
>> hndl=plot(x,sin(x))
set(hndl,'Marker','x')
set(hndl,'LineWidth',1)
set(hndl,'MarkerSize',6)
set(hndl,'Color','black')
Ngoài việc sử dụng hàm set để tùy chọn màu sắc, kích thước đồ thị chúng ta có thể
thiết lập các tùy chọn này ngay trong hàm plot, các tùy chọn này được viết dưới dạng
chuỗi ký tự.
>> y=sin(x)
>> z=cos(x)
>> plot(x,y,'b-->',x,z,'mp')
% vẽ đồ thị y=sin(x) màu blue,
đường gạch đứt, điểm vẽ hình tam
giác hướng phải và đồ thị z=cos(x)
màu magenta, điểm vẽ hình sao
Trở lại với lệnh plot(x,y) bây giờ chúng ta thêm các chú thích vào đồ thị.
>> xlabel('Bien doc lap x')
>> ylabel('Bien phu thuoc y')
>> title('Do thi ham so y=(sqrt(x.^2+3.*x+4))./(x+4)+x.^3')
>> text(-4,-100,'x=-4 ham so khong xac dinh')
Theo mặc định khi chúng ta vẽ một đồ thị khác Matlab sẽ xóa hình vẽ trước đi và vẽ
hình và mới trên cửa sổ đó, để giữ đồ thị này chúng ta mở cửa sổ mới bằng lệnh
figure(n) trong đó n là chỉ số cửa sổ chúng ta tự chọn.
Muốn vẽ nhiều đồ thị trên hệ trục tọa độ trên ta sử dụng lệnh hold on để giữ đồ thị
vừa vẽ lại và lệnh hold off có chức năng ngược lại. Để biết đồ họa đang ở trạng thái
hold on hay hold off chúng ta sử dụng lệnh ishold.
Ngoài phương pháp dùng các câu lệnh như trên (chỉ phù hợp khi chúng ta thiết lập
một M-file) trong trường hợp thao tác trực tiếp với dữ liệu, trong cửa sổ đồ họa chúng
ta có đầy đủ các lựa chọn để thay đổi các thuộc tính giao diện của đồ thị.
66
Mục edit
Nhóm lệnh Cut, Copy, paste, clear được sử dụng cắt, copy, chèn, xóa các mục được
chọn.
Lệnh copy figure: Cho phép copy toàn bộ đồ thị và chú thích để có thể chèn vào
các tài liệu khác như word hay exel....
Lệnh copy option: Thay đổi các thuộc tính màu sắc, kích thước, kiểu format ảnh
copy.
Figure Properties: Thay đổi hầu hết các thuộc tính của chuỗi ký tự và đường
vẽ đồ thị.
Axes Properties: Thay đổi thuộc tính của hệ tọa độ...
Mục insert: Thêm và thay đổi nhãn, chú thích, trục tọa độ, mũi tên, đường
thẳng....
Tuy nhiên cũng như nhiều các phần mềm được viết gần đây chúng ta
chỉ cần nháy đúp vào các mục cần thay đổi hoặc nháy chuột phải vào
các mục đó là có thể thay đổi các tùy chọn theo ý muốn.
67
* Vẽ đồ thị bề mặt
>> z=peaks(25)
>> surf(z) % đồ thị bề mặt
>> colormap(jet)
Lệnh colormap dùng màu sắc
để mô tả độ cao thấp của biến
z.
Ngoài các hàm mesh, surf matlab cung cấp một số hàm khác với cấu trúc câu lệnh
tương tự như meshz, waterfall
Ví dụ đường helix:
>> t = 0:pi/50:10*pi
plot3(sin(t),cos(t),t)
rotate
3D
camera
toolbar
Khi chọn biểu tượng rotate 3D chúng ta có thể quan sát đồ thị dưới mọi góc độ. Công
cụ trong camera toolbar được sử dụng để di chuyển, phóng to thu nhỏ, quay, thay đổi
ánh sáng của đồ thị.
>> [x,y] = meshgrid(-2:.2:2, -2:.2:2)
z = x .* exp(-x.^2 - y.^2)
[px,py] = gradient(z,.2,.2)
>> a=mesh(x,y,z)
a=
101.0045
Chúng ta hãy xem xét tính chất của
đồ thị từ menu Edit Figure
Properties (tính chất của Axes, Curent
Object cũng ở cùng cửa sổ)
* Edit Properties for: cho phép chúng
ta lựa chọn thay đổi đồ thị và các giao
diện của nó như trục số, bề mặt.
a) Khi “figure:1” được chọn lập
tức các thông số có thể sửa đổi được
xuất hiện tiếp sau:
71
Do đồ thị 2 không được chọn nên khi nháy phím chọn các yếu tố có thể thay đổi
được của figure không hiện ra. Cửa sổ lựa chọn figure cho phép những thay đổi giao
diện ngoài đồ thị.
Color: Thay đổi màu nền cửa sổ đồ thị, chúng ta có thể nhập dạng số hoặc chon
màu (chú ý các số phải ≥0 và ≤1 chúng ta sẽ tìm hiểu về phối màu của matlab trong mục
sau)
Menu bar: Tắt bật thanh menu
Figure number: Tắt bật hiển thị số thứ tự của hình được vẽ
Window name: Đặt tên cửa sổ đồ họa
Renderer mode: Theo mặc định là openGL, openGL là phương thức được Matlab
sử dụng để truy cập phần cứng đồ họa của hệ thống máy tính, thông thường nhanh hơn
Painters và Z-buffer.
b) Khi axes được chọn
Cửa sổ giao diện như hình bên, chúng
ta có thể thay đổi các thuộc tính của các
trục Ox, Oy, Oz, kiểu đường, tương quan
đồ thị và trục số, ánh sáng, góc nhìn...
Cửa sổ style
Title: Chú thích đồ thị
Properties: Thay đổi màu sắc, font
chữ
Axes box: Bật tắt khung hệ trục tọa
độ
Background: Đặt nền mặt phẳng tạo
bởi các trục số
Axes line width: Độ rộng đoạn thẳng
vẽ trục số (pt)
Các lựa chọn tiếp theo để thy đổi
font chữ.
* Cửa sổ Aspect cho phép thay đổi
tương kích thước giữa đồ thị và hệ trục
tọa độ.
* Lights: Chiếu sáng đồ thị từ nguồn
sáng tại vị trí khác nhau. Nếu ta đặt
nguồn sáng phía dưới đồ thị ngược
chiều nhìn ta sẽ được đồ thị tối, ngược
lại ta sẽ được đồ thị sáng thể hiện rõ
các màu sắc.
* Viewpoint: Thay đổi góc quan sát
đồ thị. Chúng có thể thay đổi góc trông để nhìn đồ thị theo phương ngang, từ dưới lên....
c) Khi surf được chọn
>> [x,y] = meshgrid(-2:.2:2, -2:.2:2)
z = x .* exp(-x.^2 - y.^2)
a=mesh(x,y,z)
Trên cửa sổ Property Editor – Surface –
Data chúng ta có thể chọn các phím Edit
data để thay đối dữ liệu nguồn.
Colormaps: Lựa chọn các hệ màu tô bề
mặt lưới (14.2.4).
Cửa sổ Face
Color: Tô màu bề mặt phía dưới lưới,
nếu chúng ta chọn none lúc đó bề mặt
trong suốt chúng ta có thể thấy các đường lưới chia trục tọa độ. Lệnh Faceted CData
(flat) nội suy dữ liệu tuyến tính nên màu trong một ô lưới là giống nhau. Mapped CData
(texturemap) mịn hóa bề mặt đồ thị. Blended CData (interp) nội suy dữ liệu theo phương
pháp đường cong nên sự chuyển màu mịn hơn.
Lighting: Cung cấp một số kiểu ánh mặc định
Alpha: Bao hàm một số lệnh như: clear(0.0) tắt chế độ bề mặt dưới lưới, transparent
(0.5) độ trong suốt là 0.5, opaque (1.0) hoàn toàn không nhìn thấy đường vẽ phía sau.
Ngoài ra còn một số phím cung cấp các dạng dao diện khác nhau của đồ thị.
73
Color(none)
helpwin Hiển thị M-file help và cung cấp truy cập tới M-file help cho tất cảc các
hàm
lasterr Thông báo lỗi cuối cùng
lastwarn Thông báo cảnh báo cuối cùng
license Đưa ra số đăng ký sản phẩm
lookfor Tìm kiếm theo từ khóa trong tất cả mục từ của help
partialpath Một phần tên đường dẫn
path Kiểm soát thư mục của MATLAB tìm kiếm đường dẫn
pathtool Mở GUI để nhìn và thay đổi đường dẫn của MATLAB
profile Khởi động M-file profiler, công cụ gỡ rối và tối ưu mã
profreport Tạo 1 báo cáo hiện trạng
rehash Khởi tạo lại caches (vùng nhớ lưu trữ) hàm và file hệ thống
rmpath Loại bỏ thư mục từ đường dẫn tìm kiếm của MATLAB
support Mơ trang wed trợ giúp công nghệ MathWorks
type Danh sách file
ver Hiển thị thông tin phiên bản của MATLAB, Simulink, and toolboxes
version Số phiên bản MATLAB
web Dẫn đến Help browser hoặc Web browser tại file hoặc Web site
what Danh sách các file đặc trưng của MATLABở thư mục hiện tại
whatsnew Hiển thị README file của MATLAB và toolboxes
which Vị trí các hàm và file
/ Chai phải
./ and .\ Chia mảng trái và phải
: hai chấm
() Ngoặc tròn
[] Ngoặc vuông
{} Ngoặc xoắn
. Dấu chấm thập phân
... Sự tiếp tục
, Dấu phẩn
; Dấu chấm phẩy
% Chú thích
! Chấm than
' Chuyển vị và nháy trên
.' Chuyển vị không liên hợp
= Gán
== Bằng
<> Dấu quan hệ lớn nhỏ
& Logic và
| Logic hoặc
~ Logic không
xor Logic hoặc tuyệt đối
Gỡ rối
dbclear Xóa điểm ngắt
dbcont Trở lại quá trình thực hiện
dbdown Chuyển ngữ cảnh không gian làm việc địa phương
dbmex Gỡ rối MEX-file có hiệu lực
dbquit Thoát chức năng gỡ rối
dbstack Hiển thị hàm gọi ngăn xếp
79
Các ma trận cơ sở và thao tác với ma trận (Elementary Matrices and Matrix
Manipulation)
Ma trận cơ sở và mảng (Elementary Matrices and Arrays)
blkdiag Xây dựng 1 ma trận đường chéo khối từ các đối số đưa vào
eye Ma trận đơn vị
linspace Tạo vec tơ tuyến tính cách đều
logspace Tạo vec tơ cách đều theo logarit
numel Số các phần tử trong ma trận hay các tế bào trong mảng
ones Tạo mảng tất cả các phần tử bằng 1
rand Tạo các số hay mảng bất kỳ phân bố đều
randn Tạo các số hay mảng bất kỳ phân bố thông thường
zeros Tạo mảng không
: (colon) Vec tơ cách đều
Hàm ma trận và đại số học tuyến tính (Matrix Functions - Numerical Linear
Algebra )
Phân tích ma trận (Matrix Analysis)
cond Số điều kiện đối với phép nghịch đảo
condeig Số điều với các giá trị riêng
det Định thức
norm Các tiêu chuẩn ma trận, vec tơ
null Không gian trống của 1 ma trận
orth Tính trực giao (ange space of a matrix)
rank Hạng của một ma trận
rcond Ức lượng số điều kiện đảo ma trận
rref,rrefmovie Reduced row echelon form
subspace Angle between two subspaces
trace Tổng các phần tử đường chéo
Giá trị duy nhất và giá trị riêng (Eigenvalues and Singular Values)
balance Tăng độ chính xác trong tính toán giá trị riêng
cdf2rdf Chuyển dạng đường chéo phức sang dạng đường chéo thực
eig Giá trị riêng và vec tơ riêng
gsvd Phân tích giá trị riêng chung
hess Dạng Hessenberg của 1 ma trận
poly Đa thức với nghiệm đặc biệt
qz Tìm thừ số QZ cho giá trị kế thừ chung
rsf2csf Chuyển dạng Schur thực sang dạng Schur phức
schur Sự phân tích Schur
83
Phân tích dữ liệu và hàm chuyển đổi Fourier (Data Analysis and Fourier
Transform Functions)
Phép toán cơ bản (Basic Operations)
cumprod cumprod(b,n), n=1 tích lũy theo cột, n=2 tích lũy theo hàng
cumsum Tổng tích lũy
cumtrapz Tổng tích lũy của giá trị trung bình 2 số liên tiếp (n=1 tính theo cột, n=2
tính theo hàng)
factor Tách số thành các thừa số nguyên tố
inpolygon Tìm các điểm trong vùng đa giác
max Xác định giá trị lớn nhất theo 1 chiều
mean Xác định giá trị trung bình theo 1 chiều
median Giá trị trung gian trong mảng
min Xác định giá trị nhỏ nhất theo 1 chiều
perms Tất cả khả năng có thể xảy ra của phép hoán vị 1 tập số
polyarea Diện tích của đa giác
primes Tạo ra danh sách các số nguyên tố
prod Tích số 1 chiếu các phần tử trong ma trận
sort Xếp các phần tử theo chiều tăng dần
sortrows Xếp các dòng theo chiều tăng dần
std Độ lệch chuẩn
sum Tổng các phần tử theo 1 chiều ma trận
trapz Hàng hay cột cuối cùng của lệnh cumtrapz
var Sự thay đổi
Các phương pháp toán học không tuyến tính và các hàm chức năng
(Function Functions - Nonlinear Numerical Methods)
bvp4c Giải quyết các vấn đề về giá trị biên hai điểm (BVPs) cho các phương trình vi
phân thường (OGEs)
bvpget Tạo thông số từ cấu trúc lựa chọn BVP
bvpinit Dạng đoán ban đầu cho bvp4c
bvpset Tạo/sử đổi cấu trúc lựa chọn BVP
bvpval Đánh giá kết quả tính toán bởi bvp4c
dblquad Giá trị số của các số nguyên kiểu double
fminbnd Giá trị cực tiểu của hàm 1 biến
fminsearch Giá trị cực tiểu của hàm nhiểu biến
fzero Tìm điểm 0 của hàm 1 biến
ode45, ode23, ode113,
ode15s, ode23s,
ode23t, ode23tb Giải các vấn đề về giá trị ban đầu của ODEs
odeget Tạo thông số từ cấu trúc lựa chọn ODE
odeset Tạo/thay đổi cấu trúc lựa chọn ODE
optimget Tìm các giá trị thông số cấu trúc lựa chọn tối ưu
optimset Tạo và thay đổi cấu trúc thông số các lựa chọn tối ưu
pdepe Giải quyết các vấn đề về giá trị biên ban đầu
pdeval Đánh giá giải pháp tính toán bởi pdepe
quad Trả giá trị số của tích phân, phép cầu phương Simson thích ứng
quadl Trả giá trị số của tích phân, phép cầu phương Lobatto thích ứng
vectorize Biểu thức vec tơ
86
Chuyển đổi giữa ma trận rời rạc và ma trận đầy đủ (Full to Sparse Conversion)
find Tìm chỉ số và giá trị của các thành phần khác không
full Chuyển ma trận rời rạc thành ma trận đầy đủ
sparse Tạo ma trận rời rạc
spconvert Nhập ma trận từ format ngoài ma trận rời rạc
Làm việc với dữ liệu khác 0 của ma trận rời rạc (Working with Nonzero Entries of
Sparse Matrices)
nnz Số các thành phần khác không
nonzeros Các thành phần ma trận khác không
nzmax Lượng lưu trữ chia cho các phần tử ma trận khac không
spalloc Định phần không gian cho ma trận rời rạc
spfun Sử dụng hàm cho các phần tử ma trận rời rạc khác không
spones Thay các phần tử ma trận rời rạc khác không bằng 1
Quy tắc, Số điều kiện, Thứ tự (Norm, Condition Number, and Rank)
condest Ước lượng số điều kiện ma trận tiêu chuẩn -1
normest Ước lượng tiêu chuẩn 2
Phương thức rời rạc của các phương trình tuyến tính (Sparse Systems of Linear
Equations)
bicg Phương pháp gradient liên hợp kép
bicgstab Phương pháp ổn định Građien liên hợp kép
cgs Phương pháp bình phương gradient liên hợp
87
cholinc Các thừa số Cholesky and Cholesky vô cực không đầy đủ rời rạc
cholupdate Hàng 1 chuyển thành thừa số Cholesky
gmres Phương pháo dư nhỏ nhất suy rộng
lsqr Sự bổ sung LSQR của các gradient liên hợp dựa trên các phương trình trực giao
luinc Tìm thừ số ma trận LU không đầy đủ
pcg Phương pháp gradient liên hợp tiền điều kiện
qmr Pjương pháp thặng dư gần nhỏ nhất
qr Phân tích 3 mặt trực giao
qrdelete Xóa cột từ sự tìm thừ số QR
qrinsert Chèn cột trong khi tìm thừ số QR
qrupdate Hàng 1 trở thành sự tìm thừ số QR
Giá trị duy nhất và giá trị riêng rời rạc (Sparse Eigenvalues and Singular Values)
eigs Tìm vec tơ riêng và giá trị riêng
svds Tìm giá trị duy nhất
Hỗ hợp
spparms Đặt thông số cho thường trình ma trận rời rạc
Chú thích và đường lưới hệ trục đồ thị (Plot Annotation and Grids)
clabel Thêm các nhãn đồng mức vào đồ thị đồng mức
datetick Chú thích dữ liệu
grid Lưới hệ trục cho đồ thị 2D và 3D
gtext Viết văn bản trong đồ thị 2D sử dụng chuột
legend Chú thích cho các đường và hiệu chỉnh
plotyy Vẽ đồ thị với chú thích y bên trái và phải
title Đầu đề đồ thị 2D, 3D
xlabel Nhãn trục X cho đồ thị 2D và 3D
ylabel Nhãn trục Y cho đồ thị 2D và 3D
zlabel Nhãn trục Z cho đồ thị 3D
Đồ thị bề mặt, lưới, đường đồng mức (Surface, Mesh, and Contour Plots)
contour Đồ thị đường đồng mức
92
In ấn (Printing)
orient Hướng giấy
pagesetupdlg Hộp thoại vị trí trang
print In đồ thị hoặc lưu vào file
printdlg Hộp thoại in
printopt Đặt cấu hình mặc định cho máy in
saveas Lưu hình ảnh vào file đồ họa
Làm việc với dữ liệu ứng dụng (Working with Application Data)
getappdata Lấy giá trị dữ liệu ứng dụng
isappdata Đúng nếu tồn tại dữ liệu ứng dụng
rmappdata Remove application data
setappdata Định rõ dữ liệu ứng dụng
Tạo kênh điều khiển đối tượng và đồ họa (Handle Graphics, Object Creation)
axes Tạo đối tượng trục số
figure Tạo cửa sổ đồ họa
image Tạo ảnh 2D
light Tạo đối tượng chiếu sáng
line Tạo đối tượng là đường thẳng
patch Tạo đối tượng là đa giác
rectangle Tạo hình chữ nhật (2D)
surface Tạo bề mặt
text Tạo đối tượng văn bản
uicontextmenu Tạo bảng chọn ngữ cảnh
Định hình và trả lại thuộc tính (Configuring and Returning Properties)
get Trả lại các tính chất đối tượng cổng nối tiếp
set Đặt cấu hình hoặc hiển thị các tính chất đối tượng cổng nối tiếp