Trong từng chương có tóm tắt cơ sở lí thuyết, kèm theo mỗi chương đó thì có các ví dụ và bài tập liên quan đi kèm, mỗi một ví dụ minh họa được giải bằng tay sau đó được giải lại bằng mat
Trang 1Mục Lục
Lời nói đầu 2
Phần I: Cơ sở về Matlab 3
Chương I:Bắt đầu với Matlab 4
1.1 Nhập dữ liệu qua dòng lệnh 4
1.2 Sử dụng help trực tuyến 6
1.3 Đường dẫn 6
1.4 Lưu và tải dữ liệu 6
Chương 2: Các cấu trúc cơ bản và biến 7
2.1 Tính toán với Matlab 7
2.2 Giới thiệu dạng dữ liệu 8
Chương 3: Tính toán với ma trận và vec tơ 9
3.1 Vec tơ 9
3.1.1 Kí tự hai chấm và trích các phần tử của vec tơ 10
3.1.2 Vec tơ cột và sự chuyển vị 11
3.1.3 Nhân, chia và mũ của vec tơ 12
3.2 Ma trận 13
3.2.1 Các ma trận đặc biệt 15
3.2.2 Xây dựng ma trận và cách trích các phần tử của ma trận 16
3.2.3 Các phép toán với ma trận 19
Chương 4: Đồ họa 21
4.1 Đồ thị đơn giản 21
4.2 Vẽ đường 22
4.3 Vẽ mặt 26
Chương 5: Các luồng điều khiển 29
5.1 Các toán tử logic 29
5.2 Lệnh find 29
5.3 Câu lệnh if 31
5.4 Cấu trúc lặp 33
Chương 6: Phương pháp số 34
6.1 Đường cong hồi quy 34
6.2 Phép nội suy 34
6.3 Giá trị của hàm số 35
6.3.1 Hàm ‘inline’ 36
6.4 Phép tính tích phân và tích phân 37
6.5 Tính toán số học và cấu trúc điều khiển 38
Chương 7: Viết chương trình trong Matlab 38
7.1 Kịch bản và hàm m-file 38
7.2 Hàm m-file 38
7.2.1 Những biến đặc biệt của hàm số 39
7.2.2 Biến địa phương và biến toàn cục 40
7.2.3 Tính giá trị hàm số cách gián tiếp 40
Chương 8: Văn bản 42
8.1 Chuỗi kí tự 42
8.2 Vào - ra dữ liệu 43
8.2.1 Vào ra dữ liệu từ bàn phím 43
8.2.2 Đưa dữ liệu ra màn hình 44
8.2.3 Xử lí file văn bản 46
Phần II: Ứng dụng của Matlab 50
trong công nghệ hóa học 50
Trang 2Chương 1: Dẫn nhiệt và đối lưu 51
1.1 Dẫn nhiệt 51
1.1.1 Tóm tắt lí thuyết 51
1.1.2 Ví dụ 52
1.2 Đối lưu 55
1.2.1 Tóm tắt lí thuyết 55
1.2.2.Ví dụ 58
Chương 2: Bức xạ nhiệt và truyền nhiệt 63
2.1 Trao đổi nhiệt bức xạ giữa các vật 63
2.1.1 Tóm tắt lí thuyết 63
2.1.2 Ví dụ 64
2.2 Truyền nhiệt và thiết bị trao đổi nhiệt 66
2.2.1 Tóm tắt lí thuyết 66
2.1.2 Ví dụ 67
Chương 3: Kỹ thuật tách chất 73
3.1 Cân bằng lỏng hơi 73
3.1.1 Tóm tắt lý thuyết 73
3.1.2 Ví dụ 75
3.1.3 Bài tập 79
3.2 Phương pháp McCabe Thiele 80
3.2.1 Tóm tắt lý thuyết 80
3.2.2 Ví dụ 82
Chương 4: Kỹ thuật phản ứng 89
4.1 Nhiệt động học 89
4.1.1 Tóm tắt lý thuyết 89
4.1.2 Ví dụ 91
4.2 Các kỹ thuật tiến hành phản ứng 94
4.2.1 Tóm tắt lý thuyết 94
4.2.2 Ví dụ 95
4.2.3Bài tập 99
Phụ lục 99
Tìm hiểu về các hàm xây dựng 100
Tài liệu tham khảo 125
Lời nói đầu
Các bài toán công nghệ hóa học trong thực tế là rất phức tạp, chúng ta cần có công cụ hỗ trợ để giải nó Thực tế có rất nhiều phần mền, tuy nhiên, trong cuốn sách này, chúng tôi muốn giới thiệu đến các sinh viên nghành công nghệ hóa một công cụ rất mạnh, đó là matlab
Mat lab là một công cụ toán học rất mạnh, ngoài ra nó còn hỗ trợ ngôn ngữ lập trình bậc 4 với cấu trúc đơn giản, gần gũi, dễ tiếp cận, có thể linh hoạt giải quyết các bài toán thực tế để đạt được yêu cầu mong muốn Do đó, việc sử dụng nó làm công cụ
để giải quyết các bài toán kĩ thuật là rất tốt
Nội dung cuốn sách bao gồm:
Trang 3• Phần II: Ứng dụng Matlab trong công nghệ hóa học gồm có các chương: Dẫn nhiệt và đối lưu; bức xạ và truyền nhiệt; kỹ thuật tách chất; kỹ thuật phản ứng
Trong từng chương có tóm tắt cơ sở lí thuyết, kèm theo mỗi chương đó thì có các
ví dụ và bài tập liên quan đi kèm, mỗi một ví dụ minh họa được giải bằng tay sau đó được giải lại bằng matlab một cách sinh động và dễ hiểu, có tính tổng quát cao
Đưa matlab vào công nghệ hóa là mục đích của chúng tôi Tuy nhiên, do được biên soạn lần đầu nên không thể tránh được những sai sót, rất mong nhận được đóng góp của bạn đọc để cuốn sách trở lên gần gũi hơn với các sinh viên công nghệ hóa cũng như những người quan tâm đến lĩnh vực này
Phần I: Cơ sở về Matlab
Matlab là công cụ toán học, trước hết là các phép tính khoa học, ngoài ra nó còn cho phép vẽ các đồ thị, tính toán ma trận, làm việc với các đa thức và các hàm tích phân Đồng thời,chúng ta có thể lập trình các chương trình tính toán một cách linh hoạt theo nhu cầu của mình Đặc biệt Matlab tỏ ra rất mạnh mẽ trong việc thiết kế và tính toán vector và ma trận
Khi khởi chạy Matlab thì xuất hiện một hoặc nhiều cửa sổ trên màn hình, trong đó quan trọng nhất là Command window, nó cho phép nhập lệnh và hiển thị kết quả
Trang 4Chương I:Bắt đầu với Matlab
Trang 5>> 3 * 7
Chú ý : các dấu cách không quan trọng trong Matlab
*) Kết quả tính toán sẽ được tự động lưu vào biến ans
Dữ liệu sẽ được lưu vào biến a và b
*) Khi kết thúc dòng lệnh kết thúc bằng dấu “;” thì sẽ không hiển thị kết quả ra màn hình, có thể kiểm chứng bằng hai biểu thức sau :
Chú ý : cos(pi) không được in ra màn hình
*) Mặc định Matlab chỉ hiển thị 5 chữ số Do đó, muốn có kết quả chính xác hơn
thì ta dùng lệnh format long thì có thể hiển thị được tới 15 chữ số
>> 312/56
ans =
5.5714
Trang 6*) Khi dòng quá dài có thể dùng dấu “…” để nối câu xuống dòng sau
>> sin(1) + sin(2) - sin(3) + sin(4) - sin(5) + sin(6) -
sin(8) + sin(9) - sin(10) + sin(11) - sin(12)
được khi nó nằm ở thư mục current working directory
1.4 Lưu và tải dữ liệu
Rất dễ dàng lưu hoặc gọi 1 biến nào đó, ta chỉ cần click vào File- menu sau đó
chọn Save Workspace as hoặc Load Workspace
Vd : khi save
>> s1 = sin(pi/4);
>> c1 = cos(pi/4); c2 = cos(pi/2);
>> str = ’hello world’; % đây là 1 chuỗi
>> save % lưu toàn bộ biến với định dạng matlab.mat
>> save data % lưu các biến với định dạng nhị phân data.mat
Trang 7>> save numdata s1, c1 % lưu các biến số s1 và c1 tới numdata.mat
>> save strdata str % lưu biến chuỗi str vào strdata.mat
>> save allcos.dat c* -ascii % saves c1,c2 in 8-digit ascii format to allcos.dat
Còn khi load
>> load % tải tất cả các biến từ file matlab.mat
>> load data s1 c1 % chỉ tải riêng từng biến trong file data.mat
>> load str data % tải tất cả các biến từ file strdata.mat
Chương 2: Các cấu trúc cơ bản và biến
2.1 Tính toán với Matlab
Có 3 loại biến số học: Số nguyên, số thực, số phức Matlab còn hỗ trợ thêm những loại không phải là số: Inf (giá trị vô cực, ví dụ : 1/0 sẽ cho kết quả như vậy) hoặc NaN (không phải là số, là kết quả của các phép tính như 0/0 hoặc vô cùng – vô cùng)
Chúng ta có thể viết các biểu thức trên dòng lệnh của Matlab :
>> (23*17)/7
Kết quả sẽ là :
ans =
Trang 8Xác định giá trị các biểu thức dưới đây bằng tay và bằng Matlab để so sánh Chú
ý tới sự khác nhau giữa chia trái và phải, và dùng lệnh help để tìm hiểu về các hàm: round, floor, ceil …
2.2 Giới thiệu dạng dữ liệu
Mặc dù tất cả các tính toán số trong Matlab đều được tính toán với độ chính xác kép (double precision), nhưng khuôn dạng của dữ liệu đưa ra có thể định dạng lại nhờ các lệnh định dạng của Matlab Các biến ngầm định cũng như các biến của người sử dụng định nghĩa đều có thể đưa ra nhiều định dạng khác nhau Định dạng được chọn
nhờ sử dụng lệnh format tiếp đến là chỉ định long hay short và cuối cùng có thể là
dạng biểu diễn của dữ liệu, cụ thể là e đối với dạng hàm mũ, f đối dạng dấu phẩy
Trang 9động(ngầm định là f) Một khuôn dạng ít dùng hơn là rat để đưa dữ liệu ra dưới dạng
Chương 3: Tính toán với ma trận và vec tơ
Nền tảng của Matlab chính là ma trận (hay mảng) Trường hợp đặc biệt:
1 ma trận chỉ có 1 dòng hoặc 1 cột: là 1 vec tơ
3.1 Vec tơ
Vec tơ hàng là 1 danh sách các số được ngăn cách nhau bởi dấu cách hoặc dấu
phẩy Số lượng phần tử của 1 vec tơ được gọi là length của vec tơ Các phần tử nhập
vào phải đặt trong dấu “[ ]” Vd:
>> v = [-1 sin(3) 7]
v =
Trang 10-1.0000 0.1411 7.0000
>> length(v)
ans =
3
Một số phép toán có thể thực hiện với vec tơ như nhân vô hướng, cộng hoặc trừ
từ các vec tơ khác có số phần tử tương tự, hoặc giữa 1 số với vec tơ Mọi phép toán đều được thực hiện trên từng phần tử Các vec tơ cũng có thể được xây dựng từ các phần tử hữu hạn
3.1.1 Kí tự hai chấm và trích các phần tử của vec tơ
Dấu hai chấm là phím tắt quan trọng dùng để tạo ra vec tơ hàng:
Trang 11Dạng tổng quát “first:step:last”, khởi tạo vec tơ dòng bắt đầu từ phần tử first, kết thúc tại phần tử last và với độ dài bước là step Nếu không chỉ ra step, thì giá trị mặc
>> r(5:-1:2) % chuyện gì sẽ xảy ra với trường hợp này?
3.1.2 Vec tơ cột và sự chuyển vị
Để tạo 1 vec tơ cột, chúng ta phải tách các phần tử bởi phím ‘enter’ hoặc dấu chấm phẩy:
Trang 123.1.3 Nhân, chia và mũ của vec tơ
Chúng ta có thể tính tích vô hướng của 2 vec tơ có cùng độ dài:
>> u = [-1; 3; 5] % 1 vec tơ cột
>> v = [-1; 2; 7] % 1 vec tơ cột
>> u * v % chúng ta không thể nhân vec tơ cột với vecto cột
??? Error using ==> *
Inner matrix dimensions must agree.
>> u’ * v % đây mới là tích vô hướng
ans =
42
Một cách khác để tính tích vô hướng là sử dụng dấu “.*”:
>> u * v %nhân từng phần tử cho nhau
>> x = 2:2:10
Trang 13>> x./z % chia 4/0, kết quả ra Inf
Warning: Divide by zero.
ans =
-2.0000 Inf 6.0000 4.0000 3.3333
>> z./z % chia 0/0, kết quả ra NaN
Warning: Divide by zero.
Matrix dimensions must agree.
>> 2./x % nhưng thế này thì được!
6 5 4
3 2 1
Được định nghĩa trong Matlab như sau:
Trang 18ans =
7
>> A(4,3) % this is not possible: A is a 3-by-3 matrix!
??? Index exceeds matrix dimensions.
>> A(2,3) = A(2,3) + 2*A(1,1) % sửa giá trị của phần tử A(2,3)
>> A(4,:) = [2, 1, 2]; % gán vec tơ [2, 1, 2] cho hàng thứ 4 của A
>> A(5,[1,3]) = [4, 4]; % gán : A(5,1) = 4 và A(5,3) = 4
Trang 19Matrix dimensions must agree.
>> 4./B % nhưng đây lại có thể ; tương đương với: 4.*ones(size(B)) / B
Trang 22Hàm plot được sử dụng để vẽ dữ liệu trên mặt phẳng Cho vec tơ x gồm các
hoành độ x1,…,xn và vec tơ y gồm các tung độ y1,…yn, lệnh plot(x,y) sẽ vẽ các điểm
từ (x1,y1) đến (xn,yn) Theo mặc định, các điểm này sẽ được nối theo thứ tự bởi các đoạn thẳng
- solid: dotted- dashdot dashed
Trang 23< tam giác chỉ sang trái
> tam giác chỉ sang phải
Ta cũng có thể gần đúng đồ thị hàm số bằng cách lấy nhiều điểm Ví dụ vẽ đồ thị
đến 2 với độ dài bước chia là 0.05
Trang 24Hình 1: Đồ thị hàm số f(x) =x3
Vẽ các đường cong tham số cũng tương tự:
)) 1 /(
sin 2 ), 1 /(
cos 2
>> title( '(2t cos t/ (t+1)),2t sin t/(t+1)' )
Chú ý: các phép toán nhân chia phải được thực hiện trên từng phần tử(nghĩa là *,
./ hoặc ^)
Để có tỷ lệ chính xác ta dùng:
>> axis equal
Hình 2: Đồ thị hàm số cho bởi phương trình tham số
Để vẽ nhiều đường trên cùng 1 hình ta dùng lệnh “hold on”.
trình tham số:
Trang 25) sin 2 , cos 2 (
Trong không gian 3 chiều thì thay lệnh plot bằng plot3 Ví dụ:
Để vẽ đường tham số r(t) = (cos(t), sin(t),t) với t∈ [ 0 , 8 π ] ta có thể làm như sau:
t=0:.1:8*pi;
>> plot3(cos(t),sin(t),t)
>> title('(cos t,sin t,t)')
Hình 4a: vẽ đồ thị đường cho bởi phương trình tham số trong không gian 3 chiều
>> theta = 0:.2:5*pi;
Trang 26] , [ ] ,
Trang 27Hình 5: Vẽ mặt f(x,y) =x2y− 2y trong 3 chiềuMột trong những khó khăn khi vẽ mặt là phải đối mặt với phép chia cho 0 Chẳng hạn, ta muốn vẽ đồ thị của hàm số
2 2
)
,
(
y x
xy y
Warning: Divide by zero.
Nếu ta cứ vẽ mặt như vậy điểm lưới tại (0,0) sẽ khuyết
Hình 6a: Vẽ mặt ( , ) 2 2
y x
xy y
x f
Trang 28Hình 6b: Vẽ mặt trong 3 chiều tránh khuyết
Hình 7: vẽ mặt trong 3 chiều bởi mesh
Điểm khác nhau giữa hai lệnh surf và mesh là: surf tô màu bề mặt,còn mesh thì
không
Trang 29Chương 5: Các luồng điều khiển
5.1 Các toán tử logic
Bảng 1: mối quan hệ giữa các phép toán logic
Chú ý : toán tử & và toán tử | có mức ưu tiên như nhau trong Matlab,điều đó có nghĩa là nó sẽ thực hiện từ trái qua phải
5.2 Lệnh find
Chúng ta có thể trích các phần tử trong vec tơ và ma trận thỏa mãn những điều
kiện nào đó, bằng toán tử xác định vị trí Chẳng hạn như dùng lệnh xác định vị trí find
Trang 32Chú ý: bài tập dưới đây có thể sử dụng m-file Script Đó là tập tin được lưu ở
ngoài Chúng ta có thể sử dụng bất kì chương trình soạn thảo nào nhưng phải lưu với đuôi mở rộng là “.m” (sẽ được tìm hiểu kĩ trong chương sau)
Trang 33Một loại cấu trúc điều kiện khác là switch Câu lệnh này cho phép thực hiện rẽ
nhánh dựa trên các giá trị biểu thức
Cấu trúc này sẽ tránh sự dài dòng và khó hiểu của cấu trúc if…end khi sử dụng
quá nhiều điều kiện
5.4 Cấu trúc lặp
*) vòng lặp for
Chỉ số của phép lặp có thể là vec tơ:
*) Vòng lặp while
Trang 34Các câu lệnh trong thân của vòng lặp while sẽ được lặp lại chừng nào biểu thức expression còn là true:
Chương 6: Phương pháp số
6.1 Đường cong hồi quy
Với lệnh polyfit bất kỳ đa thức nào có thể khớp nhau đối với dữ liệu polyfit ( x,
y, n) để tìm thấy các hệ số của một đa thức với bậc n mà phù hợp với dữ liệu nhất(tìm mối quan hệ tuyến tính giữa x và y) Chúng ta hãy bắt đầu làm việc với hồi quy tuyến tính của dữ liệu nào đó:
>> x = 0:10;
>> y = [-.10 24 1.02 1.58 2.84 2.76 2.99 4.05 4.83 5.22 7.51]
>> p = polyfit (x, y, 1) % tìm đa thức hồi quy bậc 1
p = 0.6772 -0.3914
Biến ra của lệnh polyfit là 1 vec tơ hàng các hệ số của đa thức hồi quy Như ở ví
6.2 Phép nội suy
Cách đơn giản nhất để khảo sát một phép nội suy là vẽ đồ thị hàm số bằng hàm
plot Các số liệu lân cận được nối với nhau bởi đoạn thẳng:
>> legend(’2 points’,’4 points’,’16 points’,’256 points’)
Trong Matlab cũng có những hàm nội suy như: interp1(hồi quy 1 chiều), interp2, spline Ta thực hiện lệnh sau:
>> N = 50;
Trang 35>> pp = p(1:round(N/2)); % chọn ngẫu nhiên N/2 số trong [0,5]
>> pp = sort(pp); % phân loại phần tử
Trang 37=
x x
x
ta có thể thực hiện với độ chính xác hơn
>> format long % thay đổi định dạng để tăng thêm độ chính xác
−
=
x x
Trang 386.5 Tính toán số học và cấu trúc điều khiển
Chúng ta có thể gặp những bài toán như khai triển Taylor Chúng ta có thể khai
1
x x
x x
path Thư mục mà Matlab luôn khảo sát đó chính là ‘Current Directory’, người dùng
có thể thay đổi
Một m-file có thể được biên soạn như sau:
Chẳng hạn chúng ta lưu file sinplot.m có nội dung:
Trang 39biến ra đặt trong dấu [] và biến vào đặt trong dấu ()
Chú ý: tên của hàm và tên m-file lưu phải đồng nhất
Ví dụ: tạo hàm average có tên được lưu là average.m Những dòng chú ý đặt sau
dòng function và trước các dòng lệnh nội dung là dòng chú thích về hàm, nó có thể được hiển thị nhờ lệnh >>help average Có thể gọi hàm average.m bằng cách
avr1 = average(1:10)
function avr = average (x)
%AVERAGE tính toán giá trị trung bình của các giá trị trong vec tơ
% và kết quả được gán vào avr
function [avr,sd] = stat(x)
%STAT thống kê đơn giản.
% tính toán giá trị trung bình và độ lệch tiêu chuẩn của vec tơ x.
n = length(x);
avr = sum(x)/n;
sd = sqrt(sum((x - avr).^2)/n);
return;
7.2.1 Những biến đặc biệt của hàm số
Mỗi hàm số đều có 2 biến bên trong: Số lượng đối số vào được gọi trong hàm là
nargin và nargout là số biến ra Việc sử dụng nargin cho phép ta đặt giá trị ngầm
định cho các biến vào vắng mặt
function [out1,out2] = checkarg (in1,in2,in3)
%CHECKARG mô tả cách sử dụng biến nargin và nargout.
Trang 40disp(’1 input argument’);
7.2.2 Biến địa phương và biến toàn cục
Các biến thông thường đều được mặc định là biến địa phương, nó chỉ được tham chiếu trong hàm chứa nó Còn các biến cục bộ được khai báo sau từ ‘global’, nó sẽ được tham chiếu trong toàn bộ modun
7.2.3 Tính giá trị hàm số cách gián tiếp
Việc tính hàm số gián tiếp giúp cho việc lập trình trở lên tổng quát hơn Trong