Bài thực hành Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học: Làm quen với phần mềm Matlab

Mục đích của bài thực hành này là :

1. Giới thiệu tổng quan cho sinh viên phần mềm tính toán số Matlab.

2. Thực hành thao tác dùng Matlab để giải quyết các bài toán hóa học đơn giản.

1 Giới thiệu :

MATLAB là một phần mềm tính toán số và ma trận, được sử dụng rộng rãi cho các khối

ngành kỹ thuật (cơ, điện-điện tử, xây dựng và kỹ thuật hóa học ). Matlab được tạo thành từ

một mô-đun tổng quát chứa các hàm cơ bản và các hộp công cụ riêng (Toolbox)+Simulink.

Trong bài thực hành này, phần mềm Matlab được cài đặt trên máy tính với hệ điều hành thông

thường (Microsoft Windows XP ).

pdf 9 trang phuongnguyen 6400
Bạn đang xem tài liệu "Bài thực hành Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học: Làm quen với phần mềm Matlab", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài thực hành Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học: Làm quen với phần mềm Matlab

Bài thực hành Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học: Làm quen với phần mềm Matlab
Bài thực hành môn học Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học 
Copyright © by Hoàng Ngọc Hà 
BÀI THỰC HÀNH SỐ 0 
LÀM QUEN VỚI PHẦN MỀM MATLAB 
Mục đích của bài thực hành này là : 
1. Giới thiệu tổng quan cho sinh viên phần mềm tính toán số Matlab. 
2. Thực hành thao tác dùng Matlab để giải quyết các bài toán hóa học đơn giản. 
1 Giới thiệu : 
MATLAB là một phần mềm tính toán số và ma trận, được sử dụng rộng rãi cho các khối 
ngành kỹ thuật (cơ, điện-điện tử, xây dựng và kỹ thuật hóa học). Matlab được tạo thành từ 
một mô-đun tổng quát chứa các hàm cơ bản và các hộp công cụ riêng (Toolbox)+Simulink. 
Trong bài thực hành này, phần mềm Matlab được cài đặt trên máy tính với hệ điều hành thông 
thường (Microsoft Windows XP). 
2 Môi trường làm việc 
Để xác nhận cấu hình Matlab cài đặt, cần khởi động Matlab bằng một trong các cách sau 
• Nhấp chuột vào biểu tượng 
• Hoặc từ menu khởi động START của Windows. 
Từ cửa sổ làm việc (Command Window) vừa khởi động, nhập vào 
>> help 
Các hộp công cụ có sẵn sẽ hiển thị trên màn hình. Tiếp theo chọn mục mà ta cần sự giúp đở. 
Ngoài ra, Matlab còn cung cấp sự trợ giúp trưc tuyến (online). Để truy xuất vào các thông tin 
trợ giúp của một hàm/lệnh nào đó, chỉ cần nhập vào: 
>> help TÊN_CỦA_HÀM 
Để nhận biết thư mục làm việc hiện hành (nơi mà chúng ta sẽ lưu giữ các file làm việc tạo ra), 
cần nhập vào: 
>> pwd 
Để thay đổi thư mục làm việc, nhập vào dòng lệnh sau 
>> cd('directory') 
hoặc thay đổi từ thanh công cụ ngay bên dưới menu (xem hình minh họa bên dưới). 
Để nhận biết vị trí thư mục của một hàm nào đó, nhập vào 
>> which TÊN_CỦA_HÀM 
3 Các hàm cơ sở 
3.1 Quản lý dữ liêu 
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Bài thực hành môn học Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học 
Copyright © by Hoàng Ngọc Hà 
Nhìn chung, mọi dữ liệu cơ bản được lưu trữ dưới dạng ma trận. 
Thông thường, tiếp sau một sự khai báo ma trận hoặc thực thi một hàm, kết quả sẽ được hiển 
thị nếu không có dấu chấm phẩy “;” ở cuối câu lệnh. 
Một ma trận được khai báo giữa hai dấu ngoặc vuông “[]”, các khoảng trống phân chia các 
cột và dấu chấm phẩy “;” phân chia các dòng. Ví dụ: 
>> A=[1 2 3;4 5 6;7 8 9]; 
>> A=[1 2 3;4 5 6;7 8 9] 
A = 
 1 2 3 
 4 5 6 
 7 8 9 
Một vector có thể được định nghĩa bởi phần tử đầu tiên, bước tăng và phần tử cuối cùng của 
nó. Ví dụ: 
>> v=1:0.5:2.5 
v = 
 1.0000 1.5000 2.0000 2.5000 
Chú ý: nếu không chỉ rõ bước tăng, Matlab lấy giá trị mặc định là 1. 
Có thể chọn một phần của ma trận bằng cách chỉ ra giữa hai dấu ngoặc đơn “()” tọa độ vị 
trí của các phần tử cần lấy. Ví dụ: 
>> matrancon=A(2:3,2:3) 
matrancon = 
 5 6 
 8 9 
Lệnh trên cho phép lưu giữ trong matrancon ma trận được tạo thành từ các phần tử ở các vị trí 
(2,2), (2,3), (3,2) và (3,3) của ma trận A. 
Các hàm cơ bản cho tính toán ma trận là có sẵn trong thư viện matfun. Ví dụ các giá trị riêng 
của một ma trận vuông được tính bằng cách sử dụng hàm eig(): 
>> eig(A) 
ans = 
 16.1168 
 -1.1168 
 -0.0000 
Chúng ta sẽ có thể bằng cách tương tự, tính định thức, chuẩn, kernel, vết, vector riêng của 
một ma trận. 
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Bài thực hành môn học Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học 
Copyright © by Hoàng Ngọc Hà 
Để nhận biết kích thước của một ma trận, nhập vào : 
>> dim=size(A) 
dim = 
 3 3 
Lênh size trên sẽ trả về kích thước của ma trận A và lưu giữ kết quả trong biến vector dim. 
Để chuyển vị một ma trận dùng kí hiệu «’», ví dụ nhập vào : 
>> transpose=A' 
transpose = 
 1 4 7 
 2 5 8 
 3 6 9 
Chú ý : «’» sẽ trả về ma trận chuyển vị liên hơp phúc trong trường hợp các ma trận chứa các 
hệ số phức. 
Biến vector ans mặc định của Matlab sẽ ghi nhớ kết quả tính toán cuối cùng không được lưu 
lại. 
3.2 Thao tác với đa thức : 
3.2.1 Biểu diễn đa thức với Matlab : 
Một đa thức được biểu diễn với Matlab dưới dạng vector. Điều đó có nghĩa rằng chúng ta kết 
hớp đa thức cần biểu diễn với một vector chỉ chứa các hệ số theo chiều giảm của số mũ. 
Ví dụ chúng ta có đa thức )(xP như sau : 
724)( 345 ++−+= xxxxxP 
Khai báo )(xP với Matlab chỉ đơn giản khai báo một vector chứa các hệ số của )(xP theo 
chiều giảm của số mũ : 
>> P=[1 4 -2 0 1 7] 
P = 
 1 4 -2 0 1 7 
Một cách khác để biểu diễn đa thức là định nghĩa từ các nghiệm của nó. Như vậy, chúng ta sử 
dụng hàm poly. Ví dụ một đa thức )(xQ có các nghiệm -1 và 2, được định nghĩa 
2)2)(1()( 2 −−=−+= xxxxxQ . Với Matlab, chúng ta khai báo : 
>> Q=poly([-1,2]) 
Q = 
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Bài thực hành môn học Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học 
Copyright © by Hoàng Ngọc Hà 
 1 -1 -2 
Chú ý : đa thức cho bởi Matlab với lệnh poly là đa thức mà hệ số của số mũ cao nhất là đơn 
vị. 
3.2.2 Nghiệm của một đa thức : 
Nghiệm của một đa thức nhận được nhờ hàm roots. Chẳng hạn nghiệm của đa thức )(xQ bên 
trên được tính : 
>> solutions=roots(Q) 
solutions = 
 2 
 -1 
Chú ý : hàm fsolve cho phép tìm nghiệm của một phương trình phi tuyến. 
3.2.3 Phép nhân và nhân tử hóa các đa thức 
Phép nhân và nhân tử hóa các đa thức được thực hiện bằng các hàm conv (convolution) và 
deconv (deconvolution). Nếu chúng ta muốn nhân hai đa thức 124)( 21 −+= xxxP và 
8)( 32 −= xxP , chúng ta viết : 
>> P1=[1 4 -12]; 
>> P2=[1 0 0 -8]; 
>> P=conv(P1,P2) 
P = 
 1 4 -12 -8 -32 96 
Như vây, đa thức kết quả sẽ là 96328124)( 2345 +−−−+= xxxxxxP . Một cách tương tự, 
nếu chúng ta muốn nhân tử hóa )(xP bằng )(1 xP , chúng ta sử dụng các lệnh sau đây : 
>> P2p=deconv(P,P1); 
P2p = 
 1 0 0 -8 
Rõ ràng rằng )(2 2 xPpP = 
3.3. Thao tác với ma trận 
Các hàm xử lý ma trận là nằm trong thư viện matfun. Chúng ta chỉ đề cập ở đây những hàm 
được sử dụng phổ biến. 
3.3.1 Hàm norm, rank, det 
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Bài thực hành môn học Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học 
Copyright © by Hoàng Ngọc Hà 
Các hàm norm, rank, det cho phép một cách tương ứng tính chuẩn, hạng và định thức của một 
ma trận. 
3.3.2 Hàm inv, pinv, cond 
Hàm inv (pinv) cho phép nghịch đảo các ma trận vuông (các ma trận không vuông). 
Hàm cond cho phép xác định điều kiện của một ma trận. Số điều kiện phản ánh độ “khó 
khăn” khi nghịch đảo ma trận. Đó là tỉ số giữa “giá trị suy giảm” (singular value) lớn nhất và 
nhỏ nhất. 
3.3.3 Hàm eig, svd 
Các hàm này cho phép tính giá trị riêng và giá trị suy giảm của một ma trận vuông. 
3.4 Hiển thị - đồ họa 
MATLAB có các hàm cho phép biểu diễn đồ thị 1D, 2D và 3D các kết quả. 
Chúng ta có thể biểu diễn hàm exp theo thời gian giữa 0 và 10 giây. Chúng ta làm theo các 
bước: 
B1: Định nghĩa môt vector thời gian 
>> t=0:0.1:1; 
Vector thời gian t có 11 thành phần. 
B2: Tính giá trị của hàm exp tại các thành phần thời gian t 
>> y=exp(t); 
Vector y có 11 thành phần. 
B3: Vẽ hàm y phụ thuộc vào t theo lệnh 
>> plot(t,y); 
Khi thực hiện lệnh vẽ, MATLAB sẽ tạo ra một khung hình (figure). Để làm việc với các 
khung hình, chúng ta có thể sử dụng các lệnh sau: 
>> grid; % Tạo lưới 
>> xlabel(‘thoi gian (s)’); % Tên trục x 
>> ylabel(‘exp(t)’); % Tên trục y 
>> title(‘Ham e mu’); % Tên đồ thị 
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Bài thực hành môn học Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học 
Copyright © by Hoàng Ngọc Hà 
Các khung hình được đánh số lần lượt. Tuy nhiên chúng ta có thể chọn lựa một khung hình 
bằng cách nhập vào : 
>> figure(1); 
Tương tự, nếu chúng ta muốn làm việc trên một khung hình đã mở, phải sử dụng lệnh hold 
on. Lệnh này cho phép giữ lại hình ảnh đã có khi thực hiện môt lệnh vẽ mới trên đó. Ngược 
lại ta có lệnh hold off. Một số hàm sau đây cũng có thể được sử dụng : 
>> clf; % Xóa khung hình 
>> close all; % Đóng các khung hình 
>> subplot(221); 
3.5 Các lệnh xử lý dữ liệu: 
3.5.1 Hàm polyfit 
Cho phép « xấp xỉ » một tập dữ liệu/một hàm theo nghĩa bình phương cực tiểu. 
Ví dụ chúng ta có một tập dữ liêu sau : 
x 1 2 3 4 5 6 7 8 9 10 
y 1 3.5 2.5 4 7 10.5 12.5 11 15 18 
Khai báo tập dữ liệu trên với Matlab : 
>> x = (1: 1: 10)’; 
>> y = [1 3.5 2.5 4 7 10.5 12.5 11 15 18]’; 
>> result = polyfit(x,y,1); %tính các hệ số a, b của đường thẳng xấp xỉ 
Ví dụ xấp xỉ một hàm sin: 
>> x = (0: 0.1: 2*pi)';% tạo vector x 
>> y = sin(x); % tính giá trị hàm sin tại các điểm của vector x 
>> p = polyfit(x,y,3); % cho đa thức xấp xỉ bậc 3 của y theo nghĩa bình phương cực tiểu 
>> f = polyval(p,x); % tính giá trị của đa thức xấp xỉ tại các điểm x 
>> plot(x,y,'r',x,f,'b')% biểu diễn đồ thị so sánh 
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Bài thực hành môn học Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học 
Copyright © by Hoàng Ngọc Hà 
3.5.2 Hàm interp1 
Cho phép nội suy các giá trị từ tập một dữ liệu (xdata,ydata) bằng các phương pháp tuyến 
tính, Spline... Giả sử với tập dữ liệu (x,y) trên đây, làm thề nào để tính giá trị của y tại x=5.5? 
>> xi = 5.5; 
>> yi = interp1(x,y,xi); % phương pháp tuyến tính mặc định được chọn 
>> plot(x,y,'o',xi,yi,'r*') ; 
3.6 Hàm giải phương trình vi phân thường 
Các hàm ode45, ode23, cho phép giải (hệ) phương trình vi phân thường ODE. 
Xem chi tiết cấu trúc của lệnh và các ví dụ trong phần help của matlab bằng cách nhập vào >> 
help ode45 
3.7 Lập trình với MATLAB 
Trong phần này chúng ta sẽ làm quen với các câu lệnh lập trình cơ bản với MATLAB. Chú ý, 
cho các vòng lặp các chỉ số được sử dụng không nên trùng với các biến nội được định nghĩa 
trước bởi Matlab: ví dụ biến “i” tương ứng với căn bậc hai của -1. 
3.7.1 Lệnh if 
Trong vòng “if” một điều kiện sẽ được kiểm tra. Nếu điều kiện này đúng (giá trị logic 1 hoạc 
TRUE), chương trình sẽ đi vào và thực thi lệnh trong vòng “if”. Ngược lại sẽ không thực 
hiện. 
Cú pháp chung của một vòng lệnh “if” là: 
IF expression 
 statements 
 ELSEIF expression 
 statements 
 ELSE 
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Bài thực hành môn học Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học 
Copyright © by Hoàng Ngọc Hà 
 statements 
 END 
3.7.2 Vòng lặp for 
Thực hiện các lệnh với số vòng lặp xác định. Cú pháp của vòng lặp for: 
for variable = expression 
 statements 
end 
3.7.3 Vòng lặp while 
Thực hiện các lệnh trong khi điều kiện là còn đúng. Cú pháp của vòng lặp while: 
while expression 
 statements 
end 
 3.7.4 Lệnh break, return và keyboard 
Lệnh break cho phép kết thúc một vòng lặp while hoặc for. Lệnh return cho phép thoát ra từ 
một hàm. Khi chúng ta muốn kiểm tra chương trình (gỡ lỗi), chúng ta sử dụng hàm keyboard. 
3.8 Bài tập thực hành 
Bài tập 1: Giải phương trình tuyến tính/phi tuyến sau với độ chính xác tương đối 10-4 
dùng Matlab (Trang 62, sách Ứng Dụng Tin Học Trong CNHH-Thực Phẩm, Trịnh Văn 
Dũng): 
a) 0255 =−+ xx , [ ]1,0∈x 
b) 05.0)8ln( =−− xx 
c) 0)0(,3)1)(2()sin( ==+−= tyttyt
dt
dy 
Bài tập 2: (Bài tập 2.5, trang 58, sách Kỹ Thuật Phản Ứng, Tâp 4, Vũ Bá Minh) 
D.F Smith đã nghiên cứu phản ứng phân hủy pha khí của clorur sulfuryl, SO2Cl2 thành khí 
Clor và SO2 tại 279,2°C: 
SO2Cl2ÆCl2+SO2 
Ở điều kiên thể tích của hổn hợp không đổi, theo dõi áp suất tổng cộng theo thời gian phản 
ứng được kết quả sau: 
t, ph 3,4 15,7 28,1 41,1 54,5 68,3 82,4 96,3 
Pt, mmHg 325 335 345 355 365 375 385 395 
Dùng Matlab, biểu diễn các cặp điểm (t,Pt) trên đồ thị. Quan hệ này là tuyến tính ? Kết luận 
về bậc của phản ứng ? 
Xác định phương trình vận tốc phản ứng bằng đồ thị? Từ đây, có thể nói gì về độ chuyển hóa 
ở thời điểm vô cực. 
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Bài thực hành môn học Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học 
Copyright © by Hoàng Ngọc Hà 
Nội suy giá trị của Pt tại t=20 ph, 48 ph và 70 ph ? 
Bài tập 3: Lập trình với Matlab 
Tạo các tập file.m (vào memu, chọn File, chọn New File, chọn File.m) để giải các yêu cầu 
sau dùng Matlab (mỗi yêu cầu tạo một file và lưu nó với tên exo1.m, exo2.m...) 
Yêu cầu 1 : Viết chương trình tính ∑
=
=
n
k
kS
0
 với n=5, 20 và 50; 
Yêu cầu 2 : Viết chương trình tính ∑
=
=
n
k k
S
0 !
1 với n=5, 20 và 50; (so sánh kết quả với 1e ) 
Yêu cầu 3 : Viết chương trình cho phép hiển thị đồ họa hàm số sau : 
⎪⎩
⎪⎨
⎧
=
>
<−
==
00
01
01
)()(
xif
xif
xif
xsignxf 
Bài tập 4: Lập trình giải hệ tuyến tính (Khuyến khích) 
Áp dụng các lệnh được giới thiệu trong bài thực hành để giải quyết các bài tập sau: 
• Tạo một hàm cho phép tìm nghiệm của một hệ tuyến tính bAx = bằng phương pháp 
Gauss. Đầu vào là các ma trận A và b , đầu ra là các nghiệm cần tìm. Hãy hiện thực 
chương trình bằng Matlab. 
• So sánh với nghiệm tìm được bằng lệnh x=inv(A)*b (giả sử A khả nghịch) 
Bài tập 5: (Khuyến khích) Sinh viên tự tham khảo các tài liệu khác để có các bài tập và 
dùng Matlab để giải quyết. 
CuuDuongThanCong.com https://fb.com/tailieudientucntt

File đính kèm:

  • pdfbai_thuc_hanh_mo_hinh_hoa_mo_phong_va_toi_uu_hoa_cac_qua_tri.pdf